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.

[参考译文] MSPM0G3519:发送 24 位 SPI 帧

Guru**** 2535150 points
Other Parts Discussed in Thread: DRV3901-Q1, MSPM0G3519

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1563472/mspm0g3519-transmitting-24-bit-spi-frames

器件型号:MSPM0G3519
主题中讨论的其他器件:DRV3901-Q1

工具/软件:

您好:

我需要与需要 24 位帧的 DRV3901-Q1 器件进行通信。 实施这一目标的方法是什么?

  • 手动 CS 控制
  • 也 可以使用 PACKEN

我将使用 DMA、不确定是否可以使用 DMA 手动设置 CS。

任何建议都会有所帮助。

此致、

Eugene

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

    据我所知、PACKEN 无法正常工作、但我还没有看到这种效果的勘误表【请参阅参考】

    我建议使用手动 (GPIO)/CS。 [REF]使用 SPI、可在 Rx 侧 (DMA) 完成后将/CS 置为无效。

    每个 FIFO 有 4 个条目(本例中为字节)、因此 3 字节传输 可能无法从 DMA 中受益匪浅。

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

    是的。 我在 PACKEN 上看到了勘误表的引用。 但是、MSPM0G351x 勘误表未列出。 它是否适用于 MSPM0G3519?

    假设 PACKEN 正常工作、如果我将 具有自动 CS 控制功能的两个 Tx FIFO 条目中的 CTL0.DSS 设置为 8 位、则 SPI 是否会发送 24b、或者将 24b 接收到 RX FIFO 中?

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

    我没有看到任何 C/L/G 系列的此类勘误表、因此我不知道它是否已修复。 C 系列 TRM(2 个月前)仍介绍了该功能。

    在我提到的其中一个线程(间接),海报写了一个字与 2x16 位帧到 TXDATA ,其中只有一个出现在电线上。  即使在 PACKEN 的(稍微精简)描述中,我也会说这是不起作用的。

    该功能似乎预期会发送偶数个帧、这会使您的情况复杂化。 可能需要 2 个 12 位帧。

    我建议您在设计中依赖此功能之前、先实际尝试此功能。

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

    是的、您回答正确。 在读取 PACKEN 上的 TRM 后、它似乎可以将 32 位传输到 FIFO 而不是传输到 FIFO。 12B 想法可能有效。 会尝试一下的。 谢谢。

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

    使用具有 8 位数据长度的 Motorola 4 线协议 、将三个字节背对背写入 Tx FIFO 可生成 24 个时钟的正确 CS 控制:

    TRM 似乎意味着它不应该是这样的。

    摩托罗拉 4 线 CS 控制是否围绕整个 FIFO 工作、直至根据执行的写入次数耗尽?

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

    您使用什么 SPI 模式(尤其是 CPHA)? TRM 第 25.2.3.1 节区分基于 SPH 的/CS 行为。

    当我考虑写入字节“连续背靠背“时、我无能为力地想象一个杂散计时器中断到达序列的中间。

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

    我可能可以使用 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。

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

    我终于有了一个 G3519 Launchpad ,而且我可以告诉 PACKEN 的工作原理和广告一样。 它似乎也在 G3507 上工作。

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

    您好 Bruce、

    感谢您的跟进。 是的、我看到它工作正常。 但是、似乎还有另一个有趣的使用 SPI 外设 (+) MSPM0G3519 的解决方案:SPI 环回不断开引脚 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

    此致、

    Eugene