- WaitUS(START_GAPlz);
-
-
- /*
- 0 : Leading Zero
- 11 : Opcode
- 00 : Fixed 00 if protected write (i.e. have password)
- <32 bit Password>
- 0 : Lock Bit
- <32 bit data>
- <3 bit addr>
-
- Standard Write : 0 1p L <32 data bits> <3 bit addr>
- 0 10 0 00000000000000000000000000000000 001
- Protected Write: 0 1p 00 <32 pwd bits> L <32 data bits> <3 bit addr>
- 0 10 00 00000000000000000000000000000000 0 00000000000000000000000000000000 001
- Wake Up 0 10 00 <32 pwd bits>
- Protected Read 0 1p 00 <32 pwd bits> 0 <3 bit addr>
- Standard Read 0 1p 0 <3 bit addr>
- Page 0/1 read 0 1p
- Reset 0 00
-
- */
- T55xxWriteBit_Leading0 (0); //T55xxWriteBit(0);
-
-
- if (testMode) Dbprintf("TestMODE");
- // Std Opcode 10
- T55xxWriteBit_Leading0 (testMode ? 0 : 1);
- T55xxWriteBit_Leading0 (testMode ? 1 : Page); //Page 0
-
-
- if (PwdMode) {
- // Leading zero - insert two fixed 00 between opcode and password
- T55xxWriteBit_Leading0 (0);
- T55xxWriteBit_Leading0 (0);
- // Send Pwd
- for (i = 0x80000000; i != 0; i >>= 1)
- T55xxWriteBit_Leading0 (Pwd & i);
- }
-
- // Send Lock bit
- T55xxWriteBit_Leading0 (0);
-
- // Send Data
- for (i = 0x80000000; i != 0; i >>= 1)
- T55xxWriteBit_Leading0(Data & i);
-
- // Send Block number
- for (i = 0x04; i != 0; i >>= 1)
- T55xxWriteBit_Leading0 (Block & i);
-
- // Perform write (nominal is 5.6 ms for T55x7 and 18ms for E5550,
- // so wait a little more)
- // "there is a clock delay before programming"
- // - programming takes ~5.6ms for t5577 ~18ms for E5550 or t5567
- // so we should wait 1 clock + 5.6ms then read response?
- // but we need to know we are dealing with t5577 vs t5567 vs e5550 (or q5) marshmellow...
- if (testMode) {
- //TESTMODE TIMING TESTS:
- // <566us does nothing
- // 566-568 switches between wiping to 0s and doing nothing
- // 5184 wipes and allows 1 block to be programmed.
- // indefinite power on wipes and then programs all blocks with bitshifted data sent.
- TurnReadLFOn(5184);
-
- } else {
- TurnReadLFOn(20 * 1000);
- //could attempt to do a read to confirm write took
- // as the tag should repeat back the new block
- // until it is reset, but to confirm it we would
- // need to know the current block 0 config mode for
- // modulation clock an other details to demod the response...
- // response should be (for t55x7) a 0 bit then (ST if on)
- // block data written in on repeat until reset.
-
- //DoPartialAcquisition(20, true, 12000);
- }
-
- // turn field off
- FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
- LED_A_OFF();
-