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.

[参考译文] MSPM0G1518:SPI 外设短位、然后位移位

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1616939/mspm0g1518-spi-peripheral-short-bit-then-bit-shifted

器件型号: MSPM0G1518

我将一个 SPI 外设配置为使用两个 DMA 通道进行发送和接收。 我始终看到一个非常短的 SPI 发送位、然后 SPI 外设似乎发生了位移。

image.png我检查了勘误表、其中没有任何内容可以描述此错误。 我的第一个问题是为什么会发生这种情况? 第二个问题是在 CS 处于非活动状态时复位 SPI 外设的唯一恢复方法吗?

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

    您好 Rob、

    您观察到的短脉冲/毛刺脉冲可能是由噪声引起的。 是否在 VDD 上且靠近 VDD 引脚的位置有建议的去耦电容器? 至于布局、我建议确保具有适当的接地平面、并尽量缩短高速信号的布线长度。

    您是否能够观察到模拟信号?  

    我建议设置 CSCLR 位、以便在 CS 线路失效后移位寄存器计数器复位:

    如果需要、您还可以实施错误检查。

    此致、

    Owen

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

    尊敬的 Owen:

    短脉冲不是噪声。 MOSI 和 MISO 的前两个字节应相同 — 0xAA55。 您可以看到第一个字节是正确的 —  0xAA、但第二个字节在该短脉冲之后向左移动位、之后的所有数据都向左移动 1 位。

    我的 SPI 外设配置为三线、因为无法确定何时选择和取消选择 SPI、我需要在取消选择时设置发送缓冲器以准备下一个选择事件。 我有点惊讶、没有办法使用外设 ISR 来确定何时选择 SPI 以及何时取消选择 SPI。

    我是否正确从这个位移状态中恢复的唯一方法是复位 SPI 外设?

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

    它始终是同一位吗? SCK 线路上的噪声会产生这种影响、但如果是这样、我希望它会移动。 上行是 MOSI 线、下行是 MISO 线?

    这是 CSCLR 设计用于修复的事情,虽然只是在交易结束时。 如果您无法使用 CSCLR、我想您需要复位 SPI 单元。  

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

    您好 Rob、

    感谢您的澄清。

    短脉冲很有趣、让我想相信这是一个与 DMA 传输/填充 FIFO 的时序有关的问题。

    您可以使用另一个 GPIO 引脚来监控 CS 线路、以确定外设当前是已选择还是已取消选择。 另一种方法是使用  DL_SPI_IIDX_IDLE 中断来确定 FIFO 是否已准备好填充。

    如果您使用 3 线制 SPI 并且无法使用 CSCLR 功能、则复位 SPI 外设将是恢复移位寄存器计数器的唯一方法。

    此致、

    Owen

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

    好的、我有更多信息、非常感谢 TI 提供的所有支持。

    所附内容将  SPI 控制器的顶部布线捕获、SPI 外设的底部布线捕获。 SPI 外设是进行位移的接口。 下面是我目前所发现的:

    1 — 如果两条 SPI 总线都在运行并且以大约 1Mbps 的速率输入/输出数据、则 SPI 外设位移位始终发生并且非常早。

    2 — 如果我禁用 SPI 控制器、但保留其他所有内容(1Mbps SPI 外设)、则永远不会发生位移位。

    下一步是在 SPI 外设时钟线上放置一个模拟探头。 这实际上解决了我的位移问题、因此这个问题肯定是一个信号完整性问题、我认为 SPI 控制器的一个或多个信号通过 SPI 外设的时钟传输并干扰 SPI 外设。 我们已经向 SPI 线路添加了串联电阻。

    再次感谢 TI 提供的所有支持。

    未来的 MSPM0 反馈 — 能够在 4 线模式下使用 SPI 外设会非常棒、这样我可以利用 CSCLR 功能、并在选择和取消选择 SPI 时能够中断。 除非我缺少某些内容、否则除了切换到 3 线模式之外、目前无法知道何时选择或取消选择 SPI、因此会丢失 CSCLR 功能并将 CS 引脚用作通用 GPIO。