I have the TRF7970A EVM, and I manage it directly using our own MCU.
The communication between both devices is over SPI.
Further I have a Sumsung Nexus with an NFC initiator application, to test the functionality.
The functionality that we are looking for is: NFC peer-to-peer passive communication (Samsung as Initiator) & (TRF7970A EVM as passive target).
The problems that we have are:
Then, after applying this settings, I approximate the Samsung to the TRF7970A EVM antenna; then de IRQ sets and the MCU reads the register <0x0C- >. The value in that register is 0x04.
Following I read the register <0x19 – NFC Target Protocol Register>, and the value in that register is 0x80.
After that I waiting to receive a new IRQ with the <IRQ_Register -0x04>, with the value 0x40 (to know the technology used for the initiator)! But instead I receive new IRQ and when I read the IRQ_Register the value was again 0x04, and the value in the register <0x19 – NFC Target Protocol Register> was 0x00!!!
Then the problem was that the we never read a value different from 0x80 or 0x00 in the <0x19 – NFC Target Protocol Register> was 0x00! En then we haven’t got the possibility to start the communication.
I don’t know if we have anything wrong in the register configuration?
Does anybody with more experience on that can help me?
Thanks in advance!
Lluis Olivet Cos
More information:
To know how our MCU initialize the TRF7970A EVM , an to know the values configured in all the register, I provide more information in the document attached to the following link: www.otcengineering.com/nfc/TRF7970AEVM_STARTUP.pdf
Hi to all,
You can see this Registry Bug Report
Danko Ivanov
REPORT
OF
TRF7970A Registry problem
I. Problem description
Because of the needs of custom changes in some registers of the TRF7970A in order to be used with external power amplifier and detection circuit the following problem was found.
1. In the TI datasheet for TRF7970A is explicitly written:
6.1 Register Preset
After power-up and the EN pin low-to-high transition, the reader is in the default mode. The default configuration is ISO15693, single subcarrier, high data rate, 1-out-of-4 operation. The low-level option registers (0x02 to 0x0B) are automatically set to adapt the circuitry optimally to the appropriate protocol parameters. When entering another protocol (by writing to the ISO Control register 0x01), the low-level option registers (0x02 to 0x0B) are automatically configured to the new protocol parameters. After selecting the protocol, it is possible to change some low-level register contents if needed. However, changing to another protocol and then back, reloads the default settings, and so then the custom settings must be reloaded.
The Clo0 and Clo1 register (0x09) bits, which define the microcontroller frequency available on the SYS_CLK pin, are the only two bits in the configuration registers that are not cleared during protocol selection.
2. In the TI bug datasheet for TRF7970A “ sloa159” is written:
7.8 SPI With SS Pin Only – Some Registers Do Not Take Default Values
Description
Some of the registers do not take the default values when the appropriate protocol is chosen in the ISO Control Register.
Workaround
Manually program the default settings into the TRF796x during initialization.
3.In the TI sample program trf797x.c founded in SLOC250 lines for “Manually program the default settings into the TRF796x during initialization” are commented!!!
4.We found exact information in the datasheets for only two of the registers that are not affected from writing to the ISO register.
To be sure what really happens with the registers a small program was written, which sends to the PC HyperTerminal program trough the RS232 over USB chip FT232 registry contents.
In the following table1 are given the results. The time sequence is from the left to right.
Table1.
Register No.:
Values after PWRON or EN (hex)
Values after filling the registry with 0x00
Values after loading ISOCONTROLL
with 0x02
(ISO15693 code)
Values after filling the registry with 0xff
(ISO15693 code
0x00
1
0
BF
0x01
21
2
FF
0x02
0x03
0x04
C1
0x05
0x06
0x07
0E
14
0x08
7
1F
0x09
91
F9
0x0A
10
40
0x0B
87
0x0C
0x0D
3E
3F
0x0E
0x0F
In table 2. are the results from the current program flow. Trf7970aINIT is our ini program for entering some custom values in the registry. The time sequence is from the left to right.
Table2.
Values after PWRON or EN (hex
Values after
Trf7970aINIT
Applying
again
28
80
71
C7
It is seen that even after PWRON some of the important registers don’t take default values described in TI latest datasheet.
Readed from real
device
According
Datasheet
01
02
C2
00
II. Conclusion
From the results is clear that only couple of the registers are particularly affected from the ISOCONTROLL register loading.
It will be necessary after setting the ISOCONTROLL register in the code, also set every particular register with the appropriate settings without believing on the PWRON settings also!!!
12. October 2012. Danko Ivanov
C.E.O.
Termotest Ltd.