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

[复制链接]
 楼主| 童雨竹 发表于 2025-5-5 07:56 | 显示全部楼层 |阅读模式
我只发了8位,它居然前面补了好几位0,是不是配置有误?
Clyde011 发表于 2025-5-5 07:59 | 显示全部楼层
配置成DMA模式发有没有区别?
公羊子丹 发表于 2025-5-5 08:00 | 显示全部楼层
是不是用了16位帧宽却只发了8位?
周半梅 发表于 2025-5-5 08:01 | 显示全部楼层
SPI模式设错会影响对齐位顺序。
帛灿灿 发表于 2025-5-5 08:01 | 显示全部楼层
我之前是MSB和LSB顺序没注意。
 楼主| 童雨竹 发表于 2025-5-5 08:02 | 显示全部楼层
你试试发0xFF看前导是不是变了?
万图 发表于 2025-5-5 08:03 | 显示全部楼层
H5系列的SPI挺挑初始化顺序的。
Wordsworth 发表于 2025-5-5 08:04 | 显示全部楼层
看下HAL库那部分是不是拼包了数据?
Bblythe 发表于 2025-5-5 08:05 | 显示全部楼层
会不会你发的是uint8_t数组?
Pulitzer 发表于 2025-5-5 08:06 | 显示全部楼层
看下寄存器是不是有自动填充?
Uriah 发表于 2025-5-5 08:06 | 显示全部楼层
我觉得可能是buffer前有脏数据。
她已醉 发表于 2025-6-11 20:30 | 显示全部楼层
如果使用了16位帧宽却只发送8位数据,STM32可能会在高位自动补0。SPI的数据帧长度(SPI_DataSize)需要与实际发送的数据位数匹配。例如,若只发送8位数据,应将数据帧长度设置为8位
春日负喧 发表于 2025-6-11 21:00 | 显示全部楼层
某些情况下,SPI寄存器可能存在自动填充机制,导致数据前补0。需检查寄存器配置,确保无自动填充行为
西洲 发表于 2025-6-11 21:30 | 显示全部楼层
确保SPI_InitTypeDef结构体中的SPI_DataSize设置为SPI_DATASIZE_8BIT(发送8位数据时)。
故意相遇 发表于 2025-6-12 07:00 | 显示全部楼层
查看SPI数据寄存器(DR)的写入方式,确保无自动填充行为。若使用LL库,需确认LL_SPI_SetDataWidth()等函数的配置
白马过平川 发表于 2025-6-13 05:30 | 显示全部楼层
HAL库拼包问题,检查HAL库是否对数据进行了拼包处理,导致数据前补0。可通过调试查看发送前的数据内容
温室雏菊 发表于 2025-6-13 10:22 | 显示全部楼层
SPI模式设置(如MSB或LSB顺序)可能影响数据对齐。若未正确配置,可能导致数据前补0
风凉 发表于 2025-6-13 23:30 | 显示全部楼层
在发送数据前,检查发送缓冲区的内容,确保无额外数据
将爱藏于深海 发表于 2025-6-16 19:22 | 显示全部楼层
检查DMA配置(若使用):确保DMA传输的数据长度与SPI帧宽一致
捧一束彼岸花 发表于 2025-6-16 21:30 | 显示全部楼层
若使用DMA模式发送数据,DMA配置不当可能导致数据填充。需确认DMA传输的数据长度与SPI帧宽一致
您需要登录后才可以回帖 登录 | 注册

本版积分规则

155

主题

5860

帖子

2

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