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.

[参考译文] MSP432P401R:SPI EUSCI 传输近乎完美

Guru**** 2606725 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/652456/msp432p401r-spi-eusci-almost-perfect-transmission

器件型号:MSP432P401R

您好!

我能够配置 SPI 外设、但当我发送数据时、它几乎是完美的。 随机传输会遇到垃圾数据传输-通过逻辑分析仪进行确认。 数据不会在每次完全相同的位置损坏、并且随机显示。 增加引脚的驱动强度有助于提高传输的可靠性、但仍然存在错误。  

我只运行 SPI 代码、没有 HAL、没有 TI 驱动程序、只是数据表和 C。我有默认的时钟速度-我相信它大约为3MHz。

我注意到、在提高或降低传输速率时、数据传输会变得更好-静态误差、然后变得更糟。 一定要有一个甜蜜的地方。  

我可以尝试哪些操作来解决这个问题?  

谢谢!

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

    您能告诉我您是否编写了自己的 C 语言、或者您是否从以下寄存器 C 级示例中的特定示例开始: dev.ti.com/.../

    了解您正在使用的代码以及您拥有的任何逻辑/范围分析器快照将会有所帮助。

    本应用手册的第4节也可能有一些用途: www.ti.com/.../slaa734.pdf

    如果您还没有 :www.ti.com/.../slaz610m.pdf、我还会检查勘误表
    USCI45、47和48与 SPI 相关。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Evan!

    感谢您回来。 因此、我开始从零开始编写/数据表中编写我自己的 SPI 驱动程序。 它看起来与以下示例最相似:eUSCIB0_SPI10、尽管我在代码中使用的是 eUSCIB3。 我将在下面附加我的项目。 我使用的是单个主/从环境、在该环境中、我使用 GPIO 切换 CS 引脚。 我没有更改任何默认时钟值。  

    我在勘误表中看到的时钟拉伸... 我不确定如何确保 SPI 时钟和系统时钟同步?

    这是逻辑分析仪的一个示例。 通过 D/C 通道3、我可以向显示屏发送数据或命令(如果该操作发生任何变化)。

     在这里、我需要0x22、0xc7 0x20和0xff。  第三个变速器不正确。 我在连接从器件的情况下、使用 Launchpad 母接头上的逻辑分析仪进行测量。 有什么可能、但我的从器件是否会干扰传输?

    e2e.ti.com/.../e_5F00_paper.rar

    谢谢!

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

    Kevin、

    我认为您的逻辑分析仪设置不正确。 查看您的 SPI-MOSI 线路、我看到0x20、这是您所期望的。 您的 LSA 似乎没有足够的时间、或者极性/相位偏离了它认为是0x00的位置。

    当我查看0x22的第一个字节传输时、我看到0x20字节的前半部分是相同的父项。 第3个字节(您说不正确的字节(0x00))实际上不能为0x00、因为逻辑分析仪实际上在字节中间接收到一个有点高的结果、我的建议是它实际上是0x20。  

    您可以通过检查从器件侧以查看其是否正确接收字节来再次确认。 可以这样做吗?

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

    感谢您的指出。 我在代码和逻辑分析仪设置中发现了一些错误、导致了此错误。 这些建议概述如下:

    1) LA 已为 MSB 设置,但我实际上正在发送 LSB
    2) 2)当我在时钟相位1中发送时、为时钟相位= 0设置了 LA
    底线:我没有针对时钟相位和极性正确设置 SPI 外设。

    感谢您的支持! 我通过相应地更改设置来确认、我得到了100%转接。