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.

[参考译文] LP-MSPM0G3507:无法在 SPI 上看到连续时钟

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1439955/lp-mspm0g3507-unable-to-see-continuous-clock-on-spi

器件型号:LP-MSPM0G3507
主题中讨论的其他器件:MSPM0G3507

工具与软件:

你(们)好

我测试了 SDK 2.1.0.03中的"spi_controller_repeed_fifo_dma_interrupts_lp_MSPM0G3507_nortos_ticlang"示例、并观察到 SPI 时钟在传输所有四个字节之前不连续。 传输每个字节后、SPI 时钟都会有间隙、每次事务后还会切换芯片选择引脚。 (请查看下面的屏幕截图以供参考)。

 

对于我们的其中一个项目、我们需要一个连续的时钟、每个字节后没有任何间隙、并且在每个字节后不切换芯片选择、是否可以选择如何执行该操作。

TIA、

Gupta

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

    您好 Gupta、

    由于 SPI 接口的硬件物理属性、它每次都支持发送或接收最多16位数据。  

    这意味着在第一次和第二次数据传输之间的间隔时间内、CLK 将保持低电平。  

    有关 SPI 传输的更多详细信息、建议您阅读 TRM、该 TRM 可从MSPM0 G 系列80MHz 微控制器技术参考手册(修订版 A)下载

    此致、

    Janz Bai

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

    2) 2)硬件芯片选择应用于各个帧(您用例中的字节) [Ref TRM (SLAU846A) Sec 17.2.3.1]。 要构建整个事务的帧、您需要将"Frame Format"(帧格式)更改为"Motorola 3-Wire"、然后将该引脚(示例中为 PB17)配置为 GPIO 并直接在代码中进行控制。  

    1) 1)我预计至少有一些(可能是全部)字节之间的间隙是由(2)造成的、因此请首先尝试一下、看看会得到什么。

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

    已尝试该选项、如(2)中所述、但帧之间的间隙仍然存在、即使我们手动控制 CS 引脚也是如此。

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

    对不起,那么我不知道答案( 1),我没有尝试它。

    通过简单搜索论坛("mspm0 spi gap")显示该项目:

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1369354/mspm0l1306-32-bit-data-spi-frame-size-with-mspm0-l-series-mcu

    讨论的是 PACKEN、但在最终回复 Zoey Wei 报告:"但两个16位运算@ 500k SPI 时钟之间仍然存在4us 时钟间隙。" 鉴于(我想) Zoey 可以接触设计人员、我不知道这是关于 SPI 单元的观察结果还是事实。

    我认为我曾使用过非常关心事务间隙的 SPI 外设。 如果您能描述您想要实现的目标、可能有不同的方法。

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

    由于主器件控制时钟、因此只要 CS 保持活动状态、外设就不应关心时钟的间隙。 您想控制什么?

    更糟的是、您可能不得不逐位更改。

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

    您好 Gupta、

    正如 Zoey 在她的 E2E (Bruce 与您分享)中提到的、即使您启用 PACKEN、两个16位操作(500k SPI)之间仍然存在4us 时钟间隙、因为 SPI 的 FIFO 为16位。 缝隙可以在 Zoey 的测试中找到。 正如 Bruce 提到的、您可以使用 GPIO 来模拟 CS、让其不进行切换、但由于物理硬件限制(FIFO 长度)、SPI CLK 将在 SPI 使用中出现间隙。

    此致、

    Janz Bai

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

    谢谢 Janz。 因此我知道 GAP 是 SPI 单元的一部分、即从 FIFO 加载到移位寄存器所需的时间、并且是一个已知持续时间(可能基于 SCK 频率)。

    在搜索时、我还运行了以下主题:

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1180685/msp-exp432e401y-delay-between-bytes-when-transmitting-over-spi/4447263

    其中 OP 针对特定情况提出了解决方案、假设(a)间隙始终存在 和(b) MOSI 引脚在该期间保存最后一个位的值。 该应用程序有一个 Neopixel 数组,但也可能有其他。