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.
工具与软件:
你(们)好
我测试了 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")显示该项目:
讨论的是 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 频率)。
在搜索时、我还运行了以下主题:
其中 OP 针对特定情况提出了解决方案、假设(a)间隙始终存在 和(b) MOSI 引脚在该期间保存最后一个位的值。 该应用程序有一个 Neopixel 数组,但也可能有其他。