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:SPI 通信可靠问题、MSPM0G3507 和 TRF7970A

Guru**** 2524550 points
Other Parts Discussed in Thread: MSPM0G3507, TRF7970A

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1560003/trf7970a-issues-with-reliable-spi-communication-mspm0g3507-and-trf7970a

器件型号:TRF7970A
Thread 中讨论的其他器件:MSPM0G3507

工具/软件:

我已经成功启动 TRF7970A、并可以设置初始寄存器/读取所有预期值、 但我似乎在尝试读取 RFID 时遇到了麻烦、因为在 MSPM0G3507 上接收到的字节看起来并不总是与逻辑分析仪上看到的内容匹配,尤其是在尝试检查外部射频字段时 — 我会不断在 0x0F 中获取值、读取时未设置振荡器位、有些表示射频字段不应存在。 我试图找到不匹配的示例、但我必须多探一点才能获得这些示例的屏幕截图。

初始设置/响应:

TX:83
RX:00
TX:80
RX:00
TX:8F
RX:00
TX:40
TX:80
RX:00
RX:01
TRF79XXA_CHIP_STATUS_CONTROL (0x00): 01
TX:41
TX:80
RX:00
RX:21
TRF79XXA_ISO_CONTROL (0x01): 21
TX:42
TX:80
RX:00
RX:00
TRF79XXA_ISO14443B_TX_OPTIONS (0x02): 00
TX:43
TX:80
RX:00
RX:00
TRF79XXA_ISO14443A_BITRATE_OPTIONS (0x03): 00
TX:44
TX:80
RX:00
RX:C1
TRF79XXA_TX_TIMER_EPC_HIGH (0x04): C1
TX:45
TX:80
RX:FF
RX:C1
TRF79XXA_TX_TIMER_EPC_LOW (0x05): C1
TX:46
TX:80
RX:FF
RX:00
TRF79XXA_TX_PULSE_LENGTH_CONTROL (0x06): 00
TX:47
TX:80
RX:00
RX:0E
TRF79XXA_RX_NO_RESPONSE_WAIT_TIME (0x07): 0E
TX:48
TX:80
RX:00
RX:07
TRF79XXA_RX_WAIT_TIME (0x08): 07
TX:49
TX:80
RX:00
RX:91
TRF79XXA_MODULATOR_CONTROL (0x09): 91
TX:4A
TX:80
RX:00
RX:10
TRF79XXA_RX_SPECIAL_SETTINGS (0x0A): 10
TX:4B
TX:80
RX:00
RX:87
TRF79XXA_REGULATOR_CONTROL (0x0B): 87
TX:4C
TX:80
RX:00
RX:00
TRF79XXA_IRQ_STATUS (0x0C): 00
TX:4D
TX:80
RX:00
RX:3E
TRF79XXA_IRQ_MASK (0x0D): 3E
TX:4E
TX:80
RX:00
RX:00
TRF79XXA_COLLISION_POSITION (0x0E): 00
TX:4F
TX:80
RX:00
RX:40
TRF79XXA_RSSI_LEVELS (0x0F): 40
TX:50
TX:80
RX:FF
RX:00
TRF79XXA_SPECIAL_FUNCTION_1 (0x10): 00
TX:09
TX:01
TX:0B
TX:01
TX:18
TX:00
TX:40
TX:80
RX:00
RX:00
TRF79XXA_CHIP_STATUS_CONTROL (0x00): 00
TX:41
TX:80
RX:00
RX:00
TRF79XXA_ISO_CONTROL (0x01): 00
TX:42
TX:80
RX:00
RX:21
TRF79XXA_ISO14443B_TX_OPTIONS (0x02): 21
TX:43
TX:80
RX:00
RX:00
TRF79XXA_ISO14443A_BITRATE_OPTIONS (0x03): 00
TX:44
TX:80
RX:00
RX:00
TRF79XXA_TX_TIMER_EPC_HIGH (0x04): 00
TX:45
TX:80
RX:00
RX:C1
TRF79XXA_TX_TIMER_EPC_LOW (0x05): C1
TX:46
TX:80
RX:FF
RX:C1
TRF79XXA_TX_PULSE_LENGTH_CONTROL (0x06): C1
TX:47
TX:80
RX:FF
RX:00
TRF79XXA_RX_NO_RESPONSE_WAIT_TIME (0x07): 00
TX:48
TX:80
RX:00
RX:0E
TRF79XXA_RX_WAIT_TIME (0x08): 0E
TX:49
TX:80
RX:00
RX:07
TRF79XXA_MODULATOR_CONTROL (0x09): 07
TX:4A
TX:80
RX:00
RX:01
TRF79XXA_RX_SPECIAL_SETTINGS (0x0A): 01
TX:4B
TX:80
RX:00
RX:10
TRF79XXA_REGULATOR_CONTROL (0x0B): 10
TX:4C
TX:80
RX:00
RX:01
TRF79XXA_IRQ_STATUS (0x0C): 01
TX:4D
TX:80
RX:00
RX:00
TRF79XXA_IRQ_MASK (0x0D): 00
TX:4E
TX:80
RX:00
RX:3E
TRF79XXA_COLLISION_POSITION (0x0E): 3E
TX:4F
TX:80
RX:00
RX:00
TRF79XXA_RSSI_LEVELS (0x0F): 00
TX:50
TX:80
RX:00
RX:40
TRF79XXA_SPECIAL_FUNCTION_1 (0x10): 40
Booted! Addr: 00

我已经尝试根据数据表中的时序图验证信号本身:  

观察 t_ste_lead、时钟和占空比、滞后时间以及运行之间的 CS 脉冲持续时间(它们似乎处于时序限制范围内)、不过在测试设置中、与地的连接相当长。 (CH4:CS、CH3:CLK、CH2:MOSI CH1:MISO)

SPI 设置 (1MHz):

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    代码基于  

    TRF7970ABP RFID 读写器 Demoe2e.ti.com/.../manifest.html

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请注意、在上面的 0x0F 寄存器读取结果显示 0x00 — 预计这个值为 0x40(或该位处于活动状态的情况下)。 在完成初始化之前、我将尝试设置轮询以等待该位处于活动状态(OSC 稳定)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    轮询以使此操作生效有效 — 但稍后该位似乎消失。

    现在、这样可能是一个软件问题、即在执行传输时读取字节未被正确丢弃/处理 — 可以在日志中看到,通常有一个没有相应 RX 的 TX 字节流 — 这意味着 FIFO 缓冲区将被填满。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、James:

     很抱歉、昨天是美国的公共假日、因此回复时间太晚。

     接收到数据后能否复位 FIFO? 请告诉我这是否会产生影响。  

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Charles,不用担心 — 我在一个电路板上的这种情况和另一个电路板上的一些 TPS6522053 问题之间跳动。  
    需要清除 — 这会在每次读取后向 TRF7970A 发出 FIFO 清除命令? 或仅读取 RSSI 值来吗?

    谢谢、

    James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、James:

     我拍了一段 MCU 和 TRF 之间的 SPI 事务。 请查看发出复位 FIFO 的位置。  

      直接命令   复位 FIFO (0x0F)
    直接命令 使用 CRC 进行传输 (0x11)
    连续电流 写入寄存器  
    数据 0x00 TX 长度 1 (0x1D)
    数据 0x20 TX 长度 2 (0x1E)
    数据 0x02 FIFO I/O (0x1F)
    数据 0x2B FIFO I/O (0x1F)
    单路 读取寄存器    
    数据 0x80 IRQ 状态 (0x0C)
      直接命令   复位 FIFO (0x0F)
    单路 读取寄存器    
    数据 0x40 IRQ 状态 (0x0C)
    单路 读取寄存器    
    数据 0x77 RSSI 水平和振荡器状态 (0x0F)
    单路 读取寄存器    
    数据 0x0F FIFO 状态 (0x1C)
    连续电流 读取寄存器    
    数据 0x00 FIFO I/O (0x1F)
    数据 0x0F FIFO I/O (0x1F)
    数据 0xD4 FIFO I/O (0x1F)
    数据 0x33 FIFO I/O (0x1F)
    数据 0xDC FIFO I/O (0x1F)
    数据 0x1D FIFO I/O (0x1F)
    数据 0x00 FIFO I/O (0x1F)
    数据 0x00 FIFO I/O (0x1F)
    数据 0x07 FIFO I/O (0x1F)
    数据 0xE0 FIFO I/O (0x1F)
    数据 0x00 FIFO I/O (0x1F)
    数据 0x00 FIFO I/O (0x1F)
    数据 0x3F FIFO I/O (0x1F)
    数据 0x03 FIFO I/O (0x1F)
    数据 0x8B FIFO I/O (0x1F)
      直接命令   复位 FIFO (0x0F)
    直接命令 使用 CRC 进行传输 (0x11)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我有机会对此进行更深入的研究 — 似乎我在末端的数据对齐存在问题(MSPM0G3507 RX FIFO 在某些传输中未正确清除)。 这尚未完全消除所有的通信问题、但看起来这将是一个持久性问题、并需要与逻辑分析仪记录进行比较才能进一步解决。