ST意法半导体
直播中

李刚

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

STM板的I2C发现一个错误的地址为什么会这样呢?

大家好,
我正在做我的 I2C 示例,我意识到 STM 板找到了一个左移一个的地址。
我将我的 Arduino 地址设置为 70 -> 0x46 用于十六进制
  • void setup()
  • {
  •   Wire.begin(0x46); // Wire communication begin
  • }
我连接我的 STM32F429I_DISC1 并最终使其与 IsDeviceReady 函数一起使用。
它返回 0-1-130-131(我不知道为什么但不相关。)然后找到 140 和 141
当我检查我的二进制文件时,
70 -> 0100 1100
140 -> 1000 1100
141 -> 1000 1101
当我用 1 位左移 70 时,我得到 140,我不知道为什么我得到 141(最后一位可能不重要?)
所以我只是好奇为什么会这样?
我在这里提供我的项目,我没有添加任何额外的库,
我只使用 CubeMX 和 CubeIDE(甚至不使用 Keil uVision 5)
但是,由于我能够进行 I2C 通信(即使地址发生变化),我希望看到复杂的示例。
现在,我应该发送什么给我的奴隶 Arduino,70 或 140?
此外,当我在 Arduino 上进行扫描时,它会提供一些 I2C 地址,我不确定哪个属于我的 STM32。

STM32和Arduino只有STM32和Arduino与SDA和SCL的连接,它们有额外的4.7k上拉电阻连接到STM32的5V输出,STM和Arduino的地连接。

回帖(1)

张梅

2022-12-28 14:39:20
>> 所以我很好奇为什么会这样?
I2C 地址为 7 位 + 1 位用于 R/W => 8 位地址
写入 => 位 0 =0
读取 => 位 0 =1
>> 现在,我应该向我的从属 Arduino 发送什么,70 或 140?
HAL 层将期望 7 位地址向左移动 1 位,因此,在您的情况下为 140。
根据您正在执行的操作(读取或写入),HAL 函数将处理位 0。
举报

更多回帖

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