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.

[参考译文] TMS320F280049C:SPI 读入 SPIRXEMU 但不读入 SPIRXBUF

Guru**** 2553450 points
Other Parts Discussed in Thread: DRV8305, TMS320F280049C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1245788/tms320f280049c-spi-read-into-spirxemu-but-not-into-spirxbuf

器件型号:TMS320F280049C
主题中讨论的其他器件:DRV8305

各位专家、您好!

定制板上的 TMS320F280049C 通过 SPI 与 DRV8305通信。

当 GPIO für nSCS 信号为
定义为 GPIO_11_SPIA_STE、因此在这里我没有看到硬件问题。 不过、我们
需要具有 STE 功能的 GPIO 11作为 eQEP 输入、因此 nSCS 已经
移动到另一个 GPIO、作为正常输出引脚、并且是控制 nSCS 所必需的
通过软件发出的

在瞬时这起作用、但在读取 DRV8305寄存器几千次后、
接收缓冲区异常超时。 数据由 DRB8305发送、
在示波器屏幕截图中可以看到:

还会读入 TMS320F280049C 的仿真缓冲器 SPIRXEMU、但它无法实现
在接收缓冲区 SPIRXBUF 中、RXFFIL 保持为0 (因此为超时)、并且没有
超限错误或其他任何报告的内容、我可以看到:

另一个有趣的问题。 当仿真器被移除或者电路板独立启动时
(没有仿真器)、则 SPI 工作正常。

这是一个已知问题吗? 这可能需要解决、因此我可以继续与
仿真器是否已连接?

此致、

约翰

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

    您好、John:

    很抱歉回复延迟。 这个线程的原始所有者不在办公室,这只是被传递给我。 有可能仿真正在代码运行时暂时暂停运行。 例如、如果您让 CCS 更新观察窗口中的某些变量、就会发生这种情况。 您可以执行的一项操作是启用 SPIPRI 寄存器的"free"和"soft"位。 这基本上将使 SPI"不受仿真暂停的影响"。

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

    嗨、大家好!

    没问题。 感谢您的答复。

    在上面的示例中、"免费"位被设定。 我还按照您的建议设置了"软"位、因此两者都已设置、问题仍然存在

    进入一个新的读周期后、当 FIFO 为空时、其状态(RXFFST)为1。 继续调试并共享结果。

    祝您周末愉快!

    此致、

    约翰

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

    John:

    您还可以尝试关闭 CCS 中正在读取 SPI 寄存器的任何存储器或监视窗口。 我想知道这是否会干扰您的应用。  

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

    Gus、您好!

    感谢您的建议。 抱歉、由于我使用的是不同的调试器、而不是 CCS、我无法尝试一下。

    作为一种解决方案、我只需在处于调试模式时读取仿真寄存器、如下所示:

    #ifdef DEBUG
            readWord = SPI_readRxEmulationBuffer(obj->spiHandle);
    #endif
    

    这不是很漂亮,但似乎可以达到目的。

    感谢您的支持、非常感谢!

    您好

    约翰