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.

[参考译文] MSPM0L1306:使用 MSPM0 L 系列 MCU 时的32位数据 SPI 帧大小

Guru**** 2422790 points


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

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

器件型号:MSPM0L1306

工具与软件:

大家好。

技术参考手册指出 SPI 模块具有从4位到16位的可编程数据帧大小(控制器模式)。

我需要看到一个32位数据帧、而无需在16位数据包之间切换片选。

是否可以使用 PACKEN 功能执行此操作?

谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    • 通过启用 PACKEN 特性、SPI 模块会将多个较小的数据帧(例如两个16位帧)合并为一个较大的数据包。

    • 将 SPI 数据帧大小设置为16位、这是本例中支持的最大帧大小。

    •  发送数据时、SPI 模块会自动将数据帧打包成较大的数据包。 例如、如果需要发送一个32位数据帧、则应连续发送两个16位帧。

    • PACKEN 启用后、CS 信号将在整个打包数据传输期间保持有效(有效)。 这意味着 CS 信号不会在16位帧之间切换、从 CS 信号的角度、将两个16位帧有效地视为单个32位帧。

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

    Zain、大家好。

    感谢您的详细解释和建议。

    您所描述的方法对我来说很合理;我将实施并测试这种方法。 一旦我证明它是有效的,实际上,我可以分享这个例子,并解决这个问题。

    此致。

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

    您还可以使用3线模式并自行控制 CS。

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

    你好!

    我一直在努力实施 Zain 建议的步骤。

    我能够看到单独的16位数据帧。 但 PACKEN = 1时的打包功能似乎无法正常工作、如 MSPM0 L 系列 MCU 的文档中所述。

    使用 CCS 的调试器功能时、我一直在跟踪好像与写入 SPI 模块的 TXDATA 寄存器相关的问题。

    文档(技术参考手册、doc # slau847d)显示这是32位寄存器。

    不过、当我使用 API 函数调用 DL_SPI_transmitDataBlocking32 ()甚至基本 DL_SPI_transmitData32 ()写入一个32位值(uint32_t)时、我将观察到只有 TXDATA 寄存器的低16位会发生变化、而高16位保持为零。 这会导致只有一个16位条目移动到 FIFO、然后有一个16位数据帧传出 PICO 端口。 片选只有在16位被传输时保持有效。

    API 中是否有什么东西在写入 TXDATA 寄存器之前截断32位值、因为支持的最大帧大小为16位?

    此致。

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

    您好!

    很抱歉我们有传统的龙节,所以我们的回复很晚。

     无法设置 PACKEN (这是错误、我将向系统报告)。

    在最新的 TRM 中、SPI FIFO 是16位的、而不是32位的。 通常情况下、SPI 只能传输16位数据、而不会切换 CS。

    要实现所需的功能、可以手动控制 SPI CS 引脚、而不设置 PACKEN 位。

    . 以下是演示代码、供您参考:  

    下载链接:tidrive.ext.ti.com/.../5d29c2cd-0501-4b2e-9f6f-d1009cf38d4b

    访问代码:RzuiY|69

    注意

    仅测试 SPI 发送功能。 接收功能需要进一步测试。

    但是、两个16位操作@ 500k SPI 时钟之间仍然存在4us 时钟间隙。

    正如我们已与您的朋友离线讨论的那样、我将关闭此主题、如果您有任何问题、只需回复我们的电子邮件即可

    此致、

    Zoey