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.

[参考译文] TMS320F28377D:如果 SPI 主机以设定的波特率连续读取超过16个字、该怎么办?

Guru**** 2460850 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1500924/tms320f28377d-what-if-the-spi-host-reads-more-than-16-words-continuously-at-a-set-baud-rate

器件型号:TMS320F28377D

工具/软件:

我们知道、虽然 SPI 通信是全双工的、但它需要读取从机器的数据、方式是主机主动将数据发送到从机器进行读取、而2837D 芯片的接收和发送高速缓存仅为16个字;


如果我想连续读取超过16个字的数据、则会出现以下问题:
1、当 I SPI 主机发送16位数据(使用 for 循环发送、以便从机器读取 SPI 数据)时、我的 SpiaRegs SPIFFRX。 位。 RXFFST 只有两个字,这导致我必须停止从机器的 SPI 读取(即停止发送),否则,我将丢失以下数据;

如何使 SPI 主机连续读取超过16位的数据? 记住是连续的!! 这不是每16位读取一次、而是只读取一次!!

希望看到这个职位的技术人员可以帮助我解决这个问题,谢谢!!

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

    您好:

    遗憾的是、您遇到了系统的限制。 如器件 TRM 中所述、最大数据包 大小为16位。 最简单的问题解决方案,以及根据所提供的信息,我建议的一个是缩短您的数据包大小,并在必要时发送多个数据包。 或者、我认为有一些 SPI-DMA 方案可以实现这样的目的、但这种方案的开发更为复杂、我目前并不记得这些方法。 如果根本不可能缩短数据包大小、请告知我。

    此致、
    Jason Osborn

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

    是的、正如您所说、我尝试了 SPI-DMA 解决方案(使用 DMA 存储 SPI 接收到的数据)、这确实解决了 SPI 接收长度的问题、但我也遇到了另一个问题、即: 当 DMA 接收长度等于我的 SPI 数据长度时、我读取 DMA 存储缓冲区中的数据、发现它必须等待238个指令周期进行更新、否则我将无法读取最新数据。 我想知道这是否是我的软件配置问题? 因为我阅读了本手册、本手册要求先更新 DMA 存储缓冲区中的数据、然后增加接收长度。 因此、我认为、只要 DMA 接收长度等于我的 SPI 数据长度、我就可以立即读取 DMA 中存储的数据、而无需等待238个指令周期。 我还希望 DMA 数据缓冲区数据得到更新的确切时间点、谢谢。

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

    您的 SPI 数据长度是多少? 这是相当长的一段时间,当然比我预期的更长。

    此致、
    Jason Osborn

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

    256字节

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

    我现在将 DMA.CH5用于 SPITX、将 DMA.CH6用于 SPIRX、我想知道何时发送和接收 SPI 数据(通过什么标志?)。

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

    对延迟响应表示歉意。 根据您最近的回复、您是否解决了以前的 DMA 更新延迟问题?

    要确定 DMA 何时完成传输、您可以将 DMA 中断配置为在传输操作结束时触发。 每个 DMA 通道都能够生成独立中断。

    此致、
    Jason Osborn