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.

[参考译文] MSPM0G3507:外设模式下的多字 SPI 事务

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1651887/mspm0g3507-multi-word-spi-transaction-in-peripheral-mode

器件型号: MSPM0G3507

我尝试将 SPI 外设配置为在外设模式下运行、以 Motorola 格式进行 16 位传输。  我希望使用控制器器件将多个字传输到外设(并接收数据以进行响应)、理想情况下不会在字之间将 CS 置为无效。  但是、参考手册 25.2.3.1 中的案文如下:

For continuous back-to-back transmissions, the CS signal must pulse high between each data word transfer because the peripheral-select pin freezes the data in its serial peripheral register and does not allow altering of the data if the SPH bit is clear. The controller device must raise the CS pin of the peripheral device between each data transfer to enable the serial peripheral data write.

据我所知、CS 必须在每个 16 位字之后由控制器发出高电平脉冲。  我是否正确理解了这一点?

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

    如果您确实需要控制 CS、那么通常最好使用 3 线模式并自行控制、它还可以让您在使用哪个引脚时拥有更大的自由度。

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

    感谢您的回答。  我不确定我是否需要*更多*对 CS 的控制、我只想了解主机与外设模式 SPI 外设通信是否需要在字之间对 CS 产生脉冲。 如果我能摆脱硬件 CS、我更喜欢坚持使用它、我只是对这段文本感到有点惊讶、因为不将 CS 置为无效的多字事务很常见。

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

    每帧/CS 实际上在 (MCU) SPI 单元中非常常见、因为大多数(我知道有 2 个例外)都没有事务的概念;因此不知道事务何时完成。 如果您使用 3 线模式 + GPIO(即您不连接 IOMUX 中的/CS 引脚)、/CS 信号会在 SPI 单元内悄悄地摆动、但没有人知道这一点、因此“冻结“无关紧要。

    您问的是外设方面、还是尝试编写一些控制器端代码? 外设端不关心这一点。

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

    我尝试在外设模式下使用 MSPM0。 我连接到它的控制器将使 CS 生效、然后传输 (TX/RX) 一定数量的 16 位字、然后将 CS 置为无效。  从最后一句开始、在这种情况下、似乎不需要在字之间额外短暂地将 CS 置为无效、因为 MSPM0 是外设吗?

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

    是的。 单帧每/CS 要求不适用于外设端【我已尝试】。 如果您不使用内置/CS(三线+ GPIO)、则不适用于控制器端。