硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2001|回复: 5
收起左侧

[I2C] HAL库硬件I2C地址配置大坑排雷注意事项

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
发表于 2022-5-29 11:11:27 | 显示全部楼层 |阅读模式
上周发的一个案例:

基于STM32H7的硬件I2C从机例子分享(2022-05-22)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=112479

HAL库的STM32硬件I2C从机里面地址配置的是8bit,只有高7bit才是I2C地址,使用要特别注意了。

比如配置的0x71,实际I2C的地址是其高7bit,也就是bit0 = 1是不起作用的。

格式8bit = 高7bit I2C地址 + bit0读写控制位,实际上I2C配置这里没使用这个bit0读写控制位。



TOOL去扫描检索,扫描出来的就会是0x70,与我们的认识是一致的。


回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2022-5-29 12:23:37 | 显示全部楼层
在进行读写操作时,HAL库函数里会自动对地址的bit0进行置位/复位操作
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
 楼主| 发表于 2022-5-29 12:32:49 | 显示全部楼层
爱恋之燕 发表于 2022-5-29 12:23
在进行读写操作时,HAL库函数里会自动对地址的bit0进行置位/复位操作

是的,很容易让人误以为这就是7bit的地址配置。
回复

使用道具 举报

610

主题

3051

回帖

4901

积分

至尊会员

积分
4901
发表于 2022-5-29 21:21:15 | 显示全部楼层
eric2013 发表于 2022-5-29 12:32
是的,很容易让人误以为这就是7bit的地址配置。

貌似hal 对 i2c 读写容量的范围地址 只支持到 at24c512 ,如果是使用 at24c1024 的话,就需要自己改造 hal 的底层驱动了
回复

使用道具 举报

8

主题

157

回帖

181

积分

初级会员

积分
181
发表于 2023-1-6 19:33:36 | 显示全部楼层
高7bit地址, Bit0 读写,MCU芯片制造的业内共识吧
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
 楼主| 发表于 2023-1-7 00:20:29 | 显示全部楼层
yunqi 发表于 2023-1-6 19:33
高7bit地址, Bit0 读写,MCU芯片制造的业内共识吧

是的,刚用的时候还以为是个纯地址参数。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 02:38 , Processed in 0.206319 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表