工具与软件:
大家好。
技术参考手册指出 SPI 模块具有从4位到16位的可编程数据帧大小(控制器模式)。
我需要看到一个32位数据帧、而无需在16位数据包之间切换片选。
是否可以使用 PACKEN 功能执行此操作?
谢谢你
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.
工具与软件:
大家好。
技术参考手册指出 SPI 模块具有从4位到16位的可编程数据帧大小(控制器模式)。
我需要看到一个32位数据帧、而无需在16位数据包之间切换片选。
是否可以使用 PACKEN 功能执行此操作?
谢谢你
通过启用 PACKEN 特性、SPI 模块会将多个较小的数据帧(例如两个16位帧)合并为一个较大的数据包。
将 SPI 数据帧大小设置为16位、这是本例中支持的最大帧大小。
发送数据时、SPI 模块会自动将数据帧打包成较大的数据包。 例如、如果需要发送一个32位数据帧、则应连续发送两个16位帧。
PACKEN 启用后、CS 信号将在整个打包数据传输期间保持有效(有效)。 这意味着 CS 信号不会在16位帧之间切换、从 CS 信号的角度、将两个16位帧有效地视为单个32位帧。
你好!
我一直在努力实施 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