打印
[STM32H5]

SPI发送数据怎么带前导0?

[复制链接]
303|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
童雨竹|  楼主 | 2025-5-6 07:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我只发了8位,它居然前面补了好几位0,是不是配置有误?

使用特权

评论回复
沙发
Clyde011| | 2025-5-6 07:42 | 只看该作者
配置成DMA模式发有没有区别?

使用特权

评论回复
板凳
公羊子丹| | 2025-5-6 07:43 | 只看该作者
是不是用了16位帧宽却只发了8位?

使用特权

评论回复
地板
周半梅| | 2025-5-6 07:44 | 只看该作者
SPI模式设错会影响对齐位顺序。

使用特权

评论回复
5
帛灿灿| | 2025-5-6 07:44 | 只看该作者
我之前是MSB和LSB顺序没注意。

使用特权

评论回复
6
童雨竹|  楼主 | 2025-5-6 07:45 | 只看该作者
你试试发0xFF看前导是不是变了?

使用特权

评论回复
7
万图| | 2025-5-6 07:46 | 只看该作者
H5系列的SPI挺挑初始化顺序的。

使用特权

评论回复
8
Wordsworth| | 2025-5-6 07:47 | 只看该作者
看下HAL库那部分是不是拼包了数据?

使用特权

评论回复
9
Bblythe| | 2025-5-6 07:48 | 只看该作者
会不会你发的是uint8_t数组?

使用特权

评论回复
10
Pulitzer| | 2025-5-6 07:49 | 只看该作者
看下寄存器是不是有自动填充?

使用特权

评论回复
11
Uriah| | 2025-5-6 07:49 | 只看该作者
我觉得可能是buffer前有脏数据。

使用特权

评论回复
12
别乱了阵脚| | 2025-5-13 20:30 | 只看该作者
STM32H5SPI通信中,若发送8位数据时出现前导0(如实际发送数据为0x00XXXXXX),通常由SPI配置错误(如数据帧格式、时钟极性/相位、DMA/硬件填充)或代码逻辑问题(如数据未对齐、寄存器操作不当)导致

使用特权

评论回复
13
光辉梦境| | 2025-5-13 20:39 | 只看该作者
未等待发送完成,在数据未完全发送时(如未检查BSY标志),直接写入新数据可能导致数据重叠或填充0

使用特权

评论回复
14
暖了夏天蓝了海| | 2025-5-13 20:57 | 只看该作者
1.数据长度(DFF)与实际发送位宽不匹配,STM32H5SPI支持8位(SPI_CR1_DFF=0)或16位(SPI_CR1_DFF=1)数据帧。若配置为16位但实际仅发送8位数据,硬件可能自动填充高位为0

使用特权

评论回复
15
夜阑风雨| | 2025-5-13 21:32 | 只看该作者
LSBFIRST(低位优先)模式未启用

使用特权

评论回复
16
远山寻你| | 2025-5-13 22:06 | 只看该作者
若数据传输顺序配置为MSB优先(默认),但用户代码按LSB顺序组织数据,可能导致硬件解析错误(如误判高位填充)

使用特权

评论回复
17
三生万物| | 2025-5-13 22:49 | 只看该作者
时钟空闲电平与从机要求不符,若STM32H5SPI配置为CPOL=1(时钟空闲高电平),但从机设备要求CPOL=0(时钟空闲低电平),可能导致从机在时钟无效期间采样数据,误判为前导0

使用特权

评论回复
18
淡漠安然| | 2025-5-13 23:34 | 只看该作者
DMA缓冲区未对齐或传输长度错误,使用DMA传输时,若缓冲区未对齐(如uint8_t数组但DMA配置为16位传输),可能导致硬件自动填充0

使用特权

评论回复
19
江河千里| | 2025-5-13 23:42 | 只看该作者
FIFO或缓存自动填充,部分STM32H5SPI外设支持硬件FIFO(如发送FIFO深度为4),若未正确填充FIFO,硬件可能自动补0以满足传输需求

使用特权

评论回复
20
冰春彩落下| | 2025-5-14 00:10 | 只看该作者
数据未对齐或寄存器操作不当,直接操作SPIx->DR寄存器时,若未清除高位或未正确处理数据对齐(如将uint8_t强制转换为uint16_t),可能导致高位填充0

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

4964

帖子

2

粉丝