ST意法半导体
直播中

李辉

7年用户 1344经验值
私信 关注
[问答]

STM32F407ZGT6 HAL_I2C_Master_Transmit参数出错是何原因

我有 HAL 驱动程序函数 HAL_I2C_Master_Transmit 的参数“DevAddress”的问题。datasheet中的device 7 bits address value在调用接口前必须先左移,也就是说,如果我要传输到一个地址为0x60的设备,参数应该是0xc0。而这正是发生的事情。但是当我使用具有相同要求的函数 HAL_I2C_Mem_Read 时,参数是0x600xc0是错误的。
单片机STM32F407ZGT6
CubeMX固件包:V1.26.2
我现在很困惑。请帮助我。

回帖(1)

杨秀英

2022-12-16 13:57:56
不明白到底是什么让您感到困惑,也许显示一个最小的代码示例会有所帮助。
所有 I2C API 函数的行为都相同。
我们以 MPU-9250 为例。数据表中的 7 位 I2C 从机地址为 0x68。您在代码中定义


  • #define IMU_I2C_SLAVE_ADDR (0x68 << 1)

并在您的代码中使用该宏。调试进入 HAL 源代码,看看会发生什么。最后,你找到一行


  • hi2c->Instance->DR = I2C_7BIT_ADD_WRITE(DevAddress);

此外,检查所有 HAL 返回码以尽快发现错误。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分