This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TRF7970A: TRF7970A problem with IRQ STATUS REGISTER with second interrupt

Part Number: TRF7970A

Dear all,

my company realized a board integrated the trf7970a. I wanna communicate with this device through wipy microcontroller.After the software inizialization I can read all register of devices like shown the datasheet in page 53. After the I send the inventory command, that is only 8 bytes.

buf[0]=0x8F #Send Inventory(8B)[0x8F 0x91 0x3D 0x00 0x30 0x26 0x01 0x00]
buf[1]=0x91
buf[2]=0x3D
buf[3]=0x00
buf[4]=0x30
buf[5]=0x26 #,0x26 single subcarrier, high data rate, inventory flag,no protocol extensions,no AFI,1 slot,option flag, RFU=0
buf[6]=0x01 #0x01
buf[7]=0x00

After the the sending of the command the IRQ occurs 1.6 ms after the SS line goes high . The IRQ status register read yields 0x80, which indicates that TX in complete like shown in datasheet in page 41. Then , if tag is in the field and no error is detected  by the reader  a second interrupt is excpected and occurs 4 ms after first IRQ. I should read for the second interrupt 0x40 and 0x3E when a tag is detected but I don't detect anything.

I put this tag bought on amazon:

https://www.amazon.it/ISO15693-scheda-bianca-Icode-confezione/dp/B07DBKX4CG

PS: this is the initial settings:

def NFC_init():
testcommand=[0]
testcommand_=[0,0]

DirectCommand(SOFT_INIT)

testcommand[0] = IDLE

DirectCommand(IDLE)
time.sleep_ms(2)
DirectCommand(RESET)
time.sleep_ms(2)

testcommand_[0] = NFC_TARGET_LEVEL
testcommand_[1] = 0x07
WriteSingle(2,testcommand_)
ReadSingle(1,testcommand_)
testcommand_=[0,0]
testcommand_[0] = MODULATOR_CONTROL
testcommand_[1] = 0x08 #ASK 100%, no SYS_CLK output,0x01
#6.78 MHz, OOK 100%,0x81

WriteSingle(len(testcommand_),testcommand_)

testcommand[0] = MODULATOR_CONTROL
ReadSingle(1,testcommand_)
testcommand_[0] = REGULATOR_CONTROL
testcommand_[1] = 0x06 
WriteSingle(2,testcommand_)
ReadSingle(1,testcommand_)
turnRFOn=[0,0]
tturnRFOn[0] = CHIP_STATUS_CONTROL

turnRFOn [1]=0x20

WriteSingle(len(turnRFOn),turnRFOn)

ReadSingle(1,turnRFOn)

WriteSingle(len(testcommand_), testcommand_)
testcommand_[0] = ISO_CONTROL
testcommand_[1] = 0x02 # iso15693
WriteSingle(len(testcommand_), testcommand_)
ReadSingle(1,testcommand_)

Are the initial setting corrrected?(modulator control, iso control , regualtor control, chip status control are correct?)

Thanks in advance 

I 'll very appreciate your answrer . Thanks.

Francesco Pugliese

  • Hello Francesco,

    I figured out the following values from your post:

    Modulator Control: 0x81 -> ok if you are using 27.12MHz Clock

    Regulator Control: 0x06 -> ok for a 3.3V supplied system

    Chip Status Control: 0x20 -> ok -> 3V System and RF on

    ISO Control -> 0x02 -> ok for ISO15693 high bit rate

    From my understanding the ISO15693 tag you bought should work with these settings.

    Best regards,

    Helfried

  • Dear Helfred,

    Thanks for your fast reply. It is very useful, But I am using an oscillator cristal of 13.56MHz which determines a clock of 13.56 MHz.Therefore I put in register Modulator control 0x08. Is it correct?

    In page 70 of datasheet there is a register NFC Target Detection Level Register(0x18) I put on 0x07. Is it correct? I put n 0x07 because the rf field is 170 mV(page 49).Is it correct?

    However in this register I can set the NFCID size. The NFCID is the UID? Because the NFCID size could be 4, 7, 10 bytes but the UID is 8 byte. Why?

    Thanks in advance

    I 'll very appreciate your respond.

    Thanks

    Francesco Pugliese

  • Hello Francesco,

    I will close this thread because your questions are handle in a second thread.

    Best regards,

    Helfried