我的客户使用28377S DO 电机控制、他们使用 SPI 与 FRAM 存储器进行通信(存储器存储用户的一些参数)。
现在他们发现在执行 EMC 测试时28377将被重置,他们进行了很多测试,并发现原因如下:
他们使用以下代码来编写 FRAM 并判断写入 FRAM 的日期。
。
SpiaRegs.SPITXBUF=A;
while (SpiaRegs.SPISTS.bit.INT_flag!= 1){}
…………
ServiceDog ();
。
当他们执行 EMC 测试时、他们发现 SpiaRegs.SPISTS.bit.INT_flag 无法设置、但日期是在 FRAM 中写入的!
因此代码已经在 while 循环中执行、没有时间为看门狗提供服务、CPU 将被复位。
我的问题是:
问题的可能原因是什么(无法设置 SpiaRegs.SPISTS.bit.INT_FLAG)。
这是一个很好的硬件过程吗?(从写入 SPITXBUF 的日期到 INT_FLAG 的集合)
我们还有其他方法来判断 是否已完成最后一位的发送或接收。(请勿使用 FIFO 和中断)。
从硬件设计的角度看,我们在设计 SPI 的电路 时需要注意什么-- FRAM