[STM32F4] SPI总线响应不正确

[复制链接]
 楼主| lilaiju 发表于 2025-7-2 22:47 | 显示全部楼层 |阅读模式
用F407从不同的mpu9250传感器读取“ID”寄存器时,总线返回的十进制响应是226或230。分别对应数据手册中的113(0x71)和115(0x73),这是为什么?
uint8_t mpu9250_spi_read_8 (uint8_t addr)    {            uint8_t reg = 0, val = 0; reg = addr|0x80;                 CS_ON;                 HAL_SPI_Transmit_DMA(&hspi2, &reg, 1 );                 while (HAL_SPI_GetState(&hspi2) != HAL_SPI_STATE_READY);                 HAL_SPI_Receive_DMA(&hspi2, val, 1);                 while (HAL_SPI_GetState(&hspi2) != HAL_SPI_STATE_READY);                 CS_OFF;                 return val;         }
18544686545f89e69f.png

接收缓冲区包含正确数据但结果为零,似乎是TransmissionReceive方法中存在错误?




heimaojingzhang 发表于 2025-8-6 21:52 | 显示全部楼层
常见值0x73则可能源于特定批次、生产工艺差异或固件配置的不同
guanjiaer 发表于 2025-8-6 22:29 | 显示全部楼层
若在代码中未正确设置片选信号、时钟极性或数据对齐方式,可能导致读取到错误的寄存器内容
八层楼 发表于 2025-8-6 23:11 | 显示全部楼层
在SPI模式下,若未将寄存器地址的最高位设置为读取标志位,则可能误读其他无关寄存器的数据
Zhiniaocun 发表于 2025-8-7 07:11 | 显示全部楼层
当采用DMA方式进行数据传输时,若未等待传输完成便提前读取缓冲区,可能造成数据截断或覆盖,从而得到非预期的结果
Zuocidian 发表于 2025-8-7 07:43 | 显示全部楼层
总线上若存在多个相同类型的传感器且未分配唯一地址,广播式读取操作可能返回随机设备的响应值
Puchou 发表于 2025-8-7 08:22 | 显示全部楼层
当采用DMA方式进行数据传输时,若未等待传输完成便提前读取缓冲区,可能造成数据截断或覆盖,从而得到非预期的结果
Xiashiqi 发表于 2025-8-7 08:58 | 显示全部楼层
总线上若存在多个相同类型的传感器且未分配唯一地址,广播式读取操作可能返回随机设备的响应值
小海师 发表于 2025-8-7 09:33 | 显示全部楼层
MPU9250的内部电路需要在稳定的电源供给下完成初始化。若供电不稳或复位信号未有效触发,可能导致寄存器处于未定义状态
Haizangwang 发表于 2025-8-7 10:12 | 显示全部楼层
该芯片支持内部晶振、外部时钟等多种时钟源。不同时钟配置可能影响寄存器的访问时序,进而导致ID读取异常
wowu 发表于 2025-8-7 10:56 | 显示全部楼层
使用逻辑分析仪捕获总线波形,重点观察起始信号、地址帧格式及应答周期是否符合协议规范,尤其关注高低位数据的传输顺序是否与代码实现一致
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

34

帖子

0

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