[其它产品/技术] SPI怎样传输24bit/帧的数据

[复制链接]
1690|8
octman 发表于 2025-8-10 17:06 | 显示全部楼层 |阅读模式
因为我要用到AD5663, 这个芯片有3个数据pin, 分别是
CS(低电平有效)
MOSI: 24bit/帧, 也就是每次MCU要连续发送24bit数据给AD5663
CLK: 从第一个时钟的下降沿开始传数据, MSB先.

但是我看SPI库里面是16bit/帧, 请问一下有什么高招, 也不是一定要用SPI, 用同步串口也行, 有例程参考最好.
为何不用模拟SPI, 是因为感觉模拟的好慢, 照理240MHZ不应该慢的. 知道的请指教一下?
muyichuan2012 发表于 2025-8-11 09:38 | 显示全部楼层
本帖最后由 muyichuan2012 于 2025-8-11 09:39 编辑

SPI的结构体配置时,选择8bit,分三次发得到24bit,可以吗?
如下spi_init_struct.frame_bit_num = SPI_FRAME_8BIT;
xch 发表于 2025-8-11 15:57 | 显示全部楼层
本帖最后由 xch 于 2025-8-11 16:00 编辑

那就用它的库初始化。之后你修改 SPI_CTRL1 的 FBN 位改成0。
这样就变成一次传8位。
coody 发表于 2025-8-11 23:32 | 显示全部楼层
分3帧传,用DMA,几千几万bit都是小事。
 楼主| octman 发表于 2025-8-12 09:26 | 显示全部楼层
coody 发表于 2025-8-11 23:32
分3帧传,用DMA,几千几万bit都是小事。

有例程参考吗? 一次发送24bit
qintian0303 发表于 2025-8-14 09:03 | 显示全部楼层
240MHZ应该是你的主频吧,实际SPI的速度还是有很大限制的,不会达到那么大的
qintian0303 发表于 2025-8-14 09:04 | 显示全部楼层
每一次发送一个24位数据,将其拆分成3个8位的就可以发送了  
qinlu123 发表于 2025-8-15 08:09 | 显示全部楼层
硬件SPI可以跑10M20M,模拟的1M都跑不到
lxs0026 发表于 2025-9-30 23:55 | 显示全部楼层
多数 MCU 的硬件 SPI 支持 “可变帧长” 或 “连续传输”,通过配置 SPI 控制器发送多帧数据(如先 16bit + 再 8bit),拼接成 24bit 完整帧。关键是确保 CS 信号在整个 24bit 传输期间保持低电平,避免中途失效。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部