主题中讨论的其他器件:DRV3901-Q1、
工具/软件:
您好:
我需要与需要 24 位帧的 DRV3901-Q1 器件进行通信。 实施这一目标的方法是什么?
- 手动 CS 控制
- 也 可以使用 PACKEN
我将使用 DMA、不确定是否可以使用 DMA 手动设置 CS。
任何建议都会有所帮助。
此致、
Eugene
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.
工具/软件:
您好:
我需要与需要 24 位帧的 DRV3901-Q1 器件进行通信。 实施这一目标的方法是什么?
我将使用 DMA、不确定是否可以使用 DMA 手动设置 CS。
任何建议都会有所帮助。
此致、
Eugene
我没有看到任何 C/L/G 系列的此类勘误表、因此我不知道它是否已修复。 C 系列 TRM(2 个月前)仍介绍了该功能。
在我提到的其中一个线程(间接),海报写了一个字与 2x16 位帧到 TXDATA ,其中只有一个出现在电线上。 即使在 PACKEN 的(稍微精简)描述中,我也会说这是不起作用的。
该功能似乎预期会发送偶数个帧、这会使您的情况复杂化。 可能需要 2 个 12 位帧。
我建议您在设计中依赖此功能之前、先实际尝试此功能。
我可能可以使用 DMA 实现背对背写入、但这不是问题所在。 我在 TRM 中没有提到 CPHA。 您指的是 MSPM0G3519?
此处的值为 CTL0=0x0000227、这是指
- SpO =0(低)
- SPH=1(秒)
- CSSEL=0 (CS0)
- CSCLR=0(禁用)
- PACKEN=0
- FRF=01(摩托罗拉 4 线)
- DSS=0111(8 位)
它是具有自动 CS 控制功能的标准 Motorola 4 线。 不确定时钟相位控制是否与之有任何关系。 问题是 CS 在 4 线配置中的行为、因为它与 TX FIFO 有关。 似乎、如果写入 TXDATA 之间有足够的时间将位移出、则 CS 会在每个 DSS 的单个位附近切换。 当没有足够的时间在写入之间移位时、TX FIFO 中的所有值都被 CS 包围。 与上一张图片相比、请参见这张图片。

TRM 中的任何位置都没有提到这一点、这是 SPI 外设的有趣行为。 我们会假设 CS 控制在 DSS 位计数附近、但这不是实际情况、并取决于写入 TXDATA 的时序?
是否缺少配置? IFL 有什么关系吗?
TRM (SLAU846C) 第 25.2.3.1 节的“ SPO = 0 和 SPH = 1“的 Motorola SPI 帧格式“小节中显示:“对于连续的背靠背传输、CS 引脚在连续数据字之间保持低电平“。 我引用了上面提到的线程:“根据上下文和历史、我将【连续背靠背】解释为“Tx FIFO(+移位寄存器)永远不会清空“。 SPI 单元没有“事务“的概念、因此它无法知道哪个字节是最后一个字节;相反、它会根据 (Tx) 数据流变为空闲状态“猜测“。
“ SPO = 0 和 SPH = 0 时的 Motorola SPI 帧格式“小节中的相应段落指出:“对于连续的背靠背 传输、CS 信号必须在每次数据字传输之间产生高脉冲 、因为外设选择引脚会冻结其串行外设寄存器中的数据、并且在 SPH 位清零时不允许更改数据。“ 这是基于 SPH 的区别。
SPH = CPHA。 CPHA 是文献中更常见的术语。 我不知道 DRV3901-Q1 文档使用哪个术语、因为其数据表看起来仅 NDA。
您好 Bruce、
感谢您的跟进。 是的、我看到它工作正常。 但是、似乎还有另一个有趣的使用 SPI 外设 (+) MSPM0G3519 的解决方案:SPI 环回不断开引脚 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛
此致、
Eugene