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/MSP432P401R:SPI通信太慢

Guru**** 2614265 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/663113/ccs-msp432p401r-spi-communication-to-slow

部件号:MSP432P401R

工具/软件:Code Composer Studio

您好,社区。 我的SPI通信有问题。 我读了"Serial Communication–SPI (up to 16 Mbps)"(串行通信–SPI (高达16 Mbps))。

如果我使用了DMA_eusci_SPI_loop_MSP_EXP432P401R_nortos_CCS示例,则最大无错误通信速度可达3Mbps。

如果我尝试使用SPI时钟提高,我会在Rx端看到一些错误。 而且,由于更加自由,我看不到任何东西。 仅限“0”初始化数组。

是否有人看见(例如) 12 Mbps?

此致

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

    您好,

      我相信您看到了与外围设备访问延迟相关的延迟。  接收到一个字节后,执行读取访问最多需要5个MCLK周期。

    我将以您参考和测试的示例为例,使用在每个字节之间放置一个延迟的发射器。

    此致,
    Chris  

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

    您好Chris,感谢您的支持。 但数据通过DMA传输。 我希望CPU没有工作。

    并且不执行任何其他任务。

    此致

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

    我已经能够确认16MHz SPI操作。  我最初担心的外围设备访问问题不正确。  以上照片是操作的屏幕截图。  我还包括两组文件(SPI主传输和SPI从属接收)。  主中继器等待按下按钮,然后通过具有16MHz时钟的SPI发送33字节。  DMA从计时器触发以加载SPI外围设备。  每次按下按钮时,计时器的时间会增加。  在第一种情况下,周期太小,写入SPI的速度太快,信息丢失;在第二种情况下,计时器周期与传输所需的时间相匹配,在随后的情况下,周期表示传输字节之间的延迟。  在接收端,从属设备比较33字节的有效负载,以确定它是否收到了预期的内容。  主控制器以32MHz运行,而从控制器以48Mhz运行。   

    e2e.ti.com/.../dma_5F00_spi_5F00_masterTX_5F00_02.ce2e.ti.com/.../dma_5F00_spi_5F00_slaveRX.c

    如果您有任何疑问,请告诉我。

    此致,

    Chris

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

    亲爱的Chris。 非常感谢,您不会忘记我。

    有些人想。 很抱歉,但此图像没有说明任何内容。 是的,我可以使用16 Mbit进行SPI时钟计时,但内存中的第一字节列表不正常。 在你的例子中,我看不到

    关于此问题的一些说明(在SPI Rx中)。 还有其他一些内容:如果我使用此:CS_setDCOFrequency(3200万);,那么IC会对我和我的所有调试点说goodbay

    请勿工作。 Miy IC离开了。 3200万是,但3200万不能。 解释?

    例如,在Dokumentation中的Flashctl_setWaitState,在Internet中可以找到的内容不是对此函数的描述。 你能不能给我“正确”的

    DriverLib的Dokumentation?

    此致

    Alex

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

    Alex,

    感谢您的意见和反馈。  我希望图像能够提供视觉上的信心,让我相信我测试/验证的是真正的16M。  我不确定如何直观地演示接收端所有33字节都按预期接收。  关于CS_setDCOFrequency API,此API已通过修订版B和修订版C芯片(黑色与红色启动板)的更改进行了一些更改。  我怀疑该问题是驱动程序Lib和/或芯片的修订版。  最后,有一个API指南,我发现它在使用API时非常有用。  如果这还不够,则提供源代码。

    C:\ti\simplelink_msp432p4_sdk_1_60_00_12\sources\ti\devices\msp432p4xx\driverlib

    此致,

    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Alex,
    我应该在发送前检查链接。 闪存控制器部分似乎已损坏。 如果你看看其他模块,比如ADC,你会看到宏,API等的描述。我会要求解决这个问题。

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

    好的Chris。 首先,对于“Flashctl_setWaitState”,我不得不说DriverLib描述不完整。

    此函数对SPI问题不感兴趣。 但是很有趣,因为我发现更多的是一个时间洞

    在Dokumentation中。  CS_setDCOFrequency (3200万)的问题;Probabaly我们有"旧硅"?

    在芯片上,我看到"REV C",但这个""不起作用。 芯片已离开。 无调试点,

    没有任何问题。 我们使用Scatter收集Pereferie SPI,从I/O direkt到内存传输。 我没有足够的时间

    为了学习完整的代码,但肯定是通过CS_setDCOFrequency(3200万),我的Mk对 我说“好的”。

    如果您有为我准备的文档或知道 为什么CS_setDCOFrequency(3200万)会使我的套件出现问题,则每次都会进行预览。

    此致

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

    Alex,
    我已要求更新文件。 修订版'C'芯片应与较新版本的SDK兼容。 C:\ti\simplelink_msp432p4_sdk_1_60_00_12是我推荐的内容。

    我正在查看cs. c文件,并注意到条件语句 小于32MHz。  因此3200万使用24MHz中心,而32M使用48Mhz中心。  在执行此API之后,您是否可以提供CS寄存器的快照?


    Chris