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.

[参考译文] TMS320F28335:TMS320F28335 SPI

Guru**** 2024750 points
Other Parts Discussed in Thread: TMS320F28335, CONTROLSUITE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/624765/tms320f28335-tms320f28335-spi

器件型号:TMS320F28335
Thread 中讨论的其他器件: controlSUITE

大家好、

我不熟悉嵌入式编程。 我有两个 TMS320F28335 DSP。 我必须通过 SPI 将一些 ADC 值从一个发送到另一个、还必须从另一个 DSP 以及 SPI 获取一些值。 是否有人能向我解释该序列。 从 code composer 的示例代码中、我了解了如何使用 FIFO 通过 SPI 发送一组数据。 但是、如何通过 SPI 逐个发送数据、即我如何知道一个数据传输已经完成、下一个数据传输可以开始(以及如何开始)?  

此致

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

    SPI 是一个非常直接的模块。 您是否通读了《SPI 用户指南》(www.ti.com/lit/pdf/sprueu3)?) 这描述了该模块的所有可用特性。 我们提供了您所见的代码示例、可帮助您快速入门、但并非所有可能的功能都涵盖在内。

    无论如何、我应该能够帮助您更好地了解 SPI 的工作原理。 它本质上是一个可编程移位寄存器。 当一个位在 TX 线上时钟输出时、下一个位也从 RX 线接收。 一旦内部计数器检测到已发送/接收到完整字、SPI 将把移位寄存器的内容复制到 SPIRXBUF 中、然后将 SPITXBUF 的内容复制到移位寄存器中、以便下次发送。

    有几种方法可以检测一个字已完成、具体取决于您的 FIFO 配置。 当您不使用 FIFO 时、您可以监视 SPIINT 位。 这将表明一个完整的字已经被完全接收并且可从 SPIRXBUF 中读取。 由于 SPI 的工作方式、这也表示 SPITXBUF 已准备好使用下一个字进行编程。 当 SPI 检测到一个新字已经被写入 SPITXBUF 时、它将开始发送下一个字。

    对于 FIFO 模式、这听起来就像您所理解的那样。 controlSUITE 示例很好地涵盖了这一点。 如果您有任何具体问题、请告诉我。

    SPI 模块和定序是一种事实上的标准协议。 网络上有许多用于使用 SPI 模块的资源和示例。 Wikipedia 和 SparkFun 都对 SPI 协议进行了很好的描述。 我建议仔细阅读这些页面以及用户指南。

    此致、
    标记