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.

[参考译文] CCS/LAUNCHXL-F28379D:LAUNCHXL-F28379D/BOOST-XL POSMGR -- SPI 端口相互干扰

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/751521/ccs-launchxl-f28379d-launchxl-f28379d-boost-xl-posmgr----spi-ports-interfering-with-each-other

器件型号:LAUNCHXL-F28379D

工具/软件:Code Composer Studio

您好!

我尝试使用控制套件中的 PM_BisC_System 测试项目来读取26位编码器、然后使用 SPI-A 将数据从一个 Launchpad 传输到另一个 LaunchPad 数据确实可以从一个电路板正确地传输到另一个电路板、但当第二个 Launchpad 接收的数据发送到 DAC 引脚以在示波器上查看输出时、很明显、传输的数据通常从之前传输的整数下降到零。 如果--而不是使用 BissC 项目--我使用控制套件中的 SPI_loopback_cpu01项目(唯一修改的是禁用环回)以线性方式发送整数0-65535,则仍然会出现此数据丢失问题。 如果我通过将 SPIBRR 从127更改为30来提高传输波特率、这种数据丢失现象就会消失。 因此、从逻辑上讲、我回到了连接编码器的原始方案、并尝试提高 SPI-A 上的波特率以摆脱数据丢失。 但是、如果我将 SPIBRR 减小到79值以下、PM_BissC_SystemTest 代码将停止报告位置数据。

编码器/launch1和 launch1/launch2之间的 SPI-B 和 SPI-A 端口是否分别在其波特率太接近时(即、如果从编码器接收的波特率接近发射到 launch2的波特率)相互干扰? 我尝试更改 launch2上的接收波特率、但这没有太大影响。 此外、SPI-A 和 SPI-B 的 CLK 极性是相反的、但如果我使它们成为唯一的垃圾、则传输非传感器数据、并导致大量数据丢失。

如何通过 SPI-B 读取编码器、以及如何以足够的数据传输速率通过 SPI-A 将数据传输到另一个焊盘、从而避免这些数据丢失? 我附加了一张示波器屏幕图片、其中显示了数据下降情况。

感谢您提供的任何帮助、

Tyler Ambrico

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

    由于您提到"我在控制套件中使用 SPI_loopback_cpu01项目(唯一修改的是禁用环回)以线性方式发送整数0-65535、因此仍然会出现此数据丢失问题。"
    您是否仅使用 LaunchPad (无 Booster Pack)和 SPI_loopback _cpu01测试用例(非 BiSS-C 测试)运行此测试?
    如果不是这种情况、您能否检查此配置? 这将有助于将问题隔离为仅 SPI 交互和 LaunchPad、并排除其他方面的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、这正是我所做的。 我运行了 SPI_loopback_cpu01项目(禁用环回)、随着我增加波特率、数据丢失。 BoosterPack 仍在电路板上、但未在代码中进行初始化、编码器 LED 也未亮起或有任何其他情况(SPI_loopback 代码仅将 SPI-A 引脚设置为高电平、其他什么都不会)。

    实际上、我在运行 BissC_SystemTest 项目时能够稍微提高波特率、这降低了日期下降率(即绿色信号的"频率")、 但是、当 SPIBRR 达到大约79之后、来自编码器的数据传输停止工作、因此我无法使其更快地传输。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    上面显示的波形是否反映了从 SPI-A (数据输出)传输的数据?
    当您说数据下降时、您是否观察到任何特定数据位始终为零? 还是整个数据变为零?
    此外、仅为了隔离问题并解决所使用资源中的任何冲突-您是否可以移除 Booster Pack 并仅尝试 LaunchPad?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、您在示波器上看到的绿色部分是从 SPI-A 传输的数据、通过 DAC-B 转换为模拟信号 数据下降、我是指您在绿图上看到的下降、此时电压下降到零。 如果我运行 SPI 项目并通过 SPI-A 发送并将波特率设置得足够高(如40)、这些下降会随着波特率的增加而消失。

    正如我说过的、在 BoosterPack 仍然开启的情况下运行 SPI 回送代码时、我设法使数据丢失、因此无论 BoosterPack 是否开启、都不会产生影响。 此外、如果我要读取位置、BoosterPack 需要打开...如果我关闭 BoosterPack、我将检查数据下降是否以较低的波特率出现
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您是否有机会在没有 Booster Pack 的情况下尝试该实验? 您还可以共享代码中使用的 GPIO 端口的配置吗?
    指示的低电平脉冲是否为1 SPICLK 宽? 它看起来像是正确的数据交换(尽管如您所述不正确)、并且似乎不是跨 SPI 的信号耦合情况。