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.
大家好、
我收到了客户的问题。
当我使用 SPI 写入数据时、0x0820寄存器显示 SPIERR。
非常感谢你的帮助。
此致、
您好、Zhonghui、
报告此 SPIERR 后、状态寄存器(h000C)的值是多少? 状态寄存器可以告诉我们 SPI 错误的性质、因此我们可以查看导致此错误的原因。
此写入尝试是否始终显示此错误? 还是发生不一致? 您是否能够提供 SPI 信号的示波器截图、以便我们验证是否满足电气参数?
是否可以共享此设计的原理图? 我想了解所有数字引脚和 CAN 总线是如何连接的。
此致、
Eric Schott
尊敬的 Eric:
感谢你的帮助。
spierr 之后的状态寄存器(h0000c)的值为 h01000004。 在第一次和第二次写入后、该错误将在写入和读取期间发生。 写入期间不能写入数据、读取期间可以正常读回数据(h0000)
SPI 直接连接到 MCU 硬件、无需其他操作。
此致、
您好、Zhonghui、
在此测试期间、您能否确认40MHz 单端时钟信号是否存在且稳定? 任何大于 h000C 的地址都必须激活此时钟信号才能访问。
您是否能够捕获 SPI 线路的模拟示波器截图以验证电气参数?
是否在报告 SPIERR 后在 h0820中设置了任何其他中断?
此致、
Eric Schott
尊敬的 Eric:
感谢你的帮助。
我刚刚获得了客户端的验证结果、并确定晶体振荡器40M 已导出到芯片。
问题仍然存在。
如图所示、第一次写入后、返回00、第二次写入返回88错误。
请再次帮助分析、谢谢。
此致、
Zhonghui、
您从0x000C 寄存器中提到的错误是 WRITE_Fifo_overflow 中断。 不过、SPI 通信是否通常正常工作、或者 SPI 通信是否不能同时出现这些错误? 我知道您提到写入不起作用、但读取会起作用、情况是否仍然如此? 是否可以共享 SCLK、SDI、SDO 和 NCS 的放大波形? 我想确保计时正确。
此致、
Eric Hackett
尊敬的 Eric:
感谢你的帮助。
这很有用。
此致、
Zhonghui、
没问题、当时是否仍然存在问题? write_fifo_overflow 通常是传输比 SPI 帧长度部分中声明的更多数据的结果(请参阅数据表的第43页)。 不过、在您的波形中、您似乎只定义长度为1、 发送一个字、那么我很好奇 SPI 时序是否会导致传输的数据溢出 SPI FIFO 并触发中断、因为它会看到第二个数据字的开始。
此致、
Eric Hackett