尊敬的德州仪器支持:
我们目前正在开发一个使用两个 TMS570LC43x 微控制器的系统、一个配置为 SPI 主设备、另一个配置为 SPI 从设备、通过 QSPI 配置中的 mibSPI 外设进行通信。 我们遇到了一个问题、即在特定条件下接收到的数据中发生单个位移位。
硬件配置:
- 主从:TMS570LC43x 微控制器
- 连接:在 QSPI 设置中的兼容模式下使用的 mibSPI 外设
软件配置:
- 定制 SPI 驱动器
- MibSPI 设置:VCLK 为75 MHz、16位字长、波特率预分频设置为8、WDELAY 设置为3、并通过 ENA 引脚进行握手
问题描述:只要 SPI 主器件在传输过程中突然停止传输、该问题就会持续出现。 按照勘误表 MIBSPI#137、我们禁用 DMA 和 SPI、首先暂停 DMA 请求、然后清除 SPIGCR1的 SPIEN 字段。 虽然这种方法在正常条件下有效、但所述的边沿情形会使主器件在后续事务中接收移位帧、从而在 RX 数据中插入错误的"0"位。
执行的测试:
- 我们已经注意到,操纵 WDELAY 的价值似乎可以解决这个问题;然而,我们担心这可能不能解决根本原因,我们怀疑这可能是一种种族条件。
- 我们已经排除了 DMA 问题、因为通过单个位移位该问题仍然存在。
- 我们实施了一种复位权变措施(关闭 SPI 电源或通过 SPIGCR0进行复位)、这似乎可以解决问题、并指出 SPI 模块上的问题是问题的根源。
- 测试了极性和相位配置更改、Phase = 0使问题更加严重。
- 目前无法直接进行示波器分析、但在从端完全复位 SPI 模块(同时仅在事务之间切换主器件的 SPIEN)未解决该问题。 我们认为这可以排除从从器件传播的任何问题。
Question:
- 是否有任何已知的缓冲问题或竞态条件会导致位被错误缓冲和移入后续事务?
- 我们是否可以在不直接访问示波器的情况下执行任何其他调试步骤来进一步隔离问题?
- 是否有建议的方法来处理中间事务中断和后续 SPI 事务、以解决或避免该问题?
我们正在寻求您的技术专业知识来了解并解决此问题。 异常行为似乎与 SPI 主器件的中间交易中断有内在联系、且找到可靠的解决方案对于我们系统的可靠性至关重要。 我们感谢 TI 能提供的任何见解、建议或进一步的诊断步骤。
感谢您的帮助、我们期待您的及时回复。
此致
