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.

[参考译文] 更紧急! TMS320F28377S:28377S 的 SPI 问题

Guru**** 2463330 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/598725/more-urgent-tms320f28377s-a-spi-problem-of-28377s

器件型号:TMS320F28377S

我的客户使用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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有人可以解决这个问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    等待回复。非常紧急

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

    您好、Shuai、

    您能否获取他们的配置代码并将其发布在此处? 它们使用的是 FIFO 还是标准模式?

    INT 标志完全由硬件控制。 另一种告知传输何时完成的方法是查询 GPxDAT 寄存器中的 SPISTE 信号。 该信号在传输过程中将为低电平。 但是、在嘈杂的环境中、这可能也不可靠。

    您对噪声有什么了解? 您是否有可以发布的任何波形?

    此致、

    Kris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Kris、
    感谢您的支持。 它们使用标准模式。 明天我将从客户那里获得代码并发布。
    我将尝试从它们获取一些波形。 谢谢您!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Shuai、

               确定 INT_FLAG 是否是唯一受噪声影响的实体非常重要。 噪声可能会影响该位的正常运行。 但重要的是要检查噪声是否会影响芯片的任何其他部分。 假设他们用固定的延迟替换 while 循环并允许 WD 及时得到服务、则应用程序是否继续正常工作? 请提供有关 EMC 测试确切性质的更多信息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Kris、
    SPISTE 配置为 SPI 功能引脚、而不是 GPIO、我们能否从 GPxDAT 获取实际状态?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Shuai、

    是的、这仍然有效。

    您是否还可以将以下内容存储到变量中、并在通过和失败(INT_FLAG 未设置)情况下读回这些变量:

    a)要发送的数据

    b)发送完成后 SPIDAT 寄存器

    对于失败的测试,您必须按照 Hareesh 的建议将 while ()更改为传输后的延迟。


    此致、
    Kris