关于树莓派4B两个i2c通道的理解(SDA.0以及SCL.0或者SDA.1以及SCL.1无法使用问题)
树莓派学习笔记:(2020.12 Update)
关于树莓派4B两个i2c通道的使用和理解(SDA.0以及SCL.0或者SDA.1以及SCL.1如何使用问题)
已解决,提供一下过程和思路
0
在做项目的时候需要用到AD/DA转换,选用了PCF8591转换芯片,但是在实际使用中,发现打开了 i2c 后只有 i2c_1 ,而树莓派其实是有两个 i2c 通道的,寻思着怎么把 i2c_0 用上,但是无奈相关文章实在找不到,最后在树莓派官网论坛找到一个一样问题的,但是问题提出者用的是 Pi2 ,年代久远,配置也有些不一样,最后也没解决。连接如下:
(下图为上面链接主要内容,需要翻译请用链接进行Google翻译)
1 但是
问题提出者给了一个关于 device-tree 的官方解释文档,然后我就去啃文档,文档链接如下:
最后找到3.3有对i2c的解释,大致意思就是i2c两个通道一个是i2c_1是为了控制ARM的,i2c0是为了控制ViedoCore(即"GPU")的(我的理解是,i2c1是为了控制大部分i2c设备的,i2c0是为了控制摄像头或者显示屏等外设用的)
下面还给出了四个在系统里定义好的parameter(常量)
i2c/i2c_arm
i2c_vc
i2c_baudrate/i2c_arm_baudrate
i2c_vc_baudrate
分别是i2c0、i2c1、i2c0_baudrate、and i2c1_baudrate的aliases(别名)。
通过别人经验或者说查其他人的资料可知:当我们在 raspi-config 里面把 i2c 打开的时候,其实是在 /boot/config.txt里面把 dtparam=i2c_arm=on 的注释去掉,如图
下方文档应该是 i2c_0 的定义,但是实际上在我的 Pi4 却是 i2c_1 ,对应的,i2c_vc 应该就代表另一个 i2c 通道的,于是加了 dtparam=i2c_vc=on ,如图
重启,然后用再次查看 i2c 发现两个i2c 都可以使用了
2020/12/17更新:
根据别人给的经验,如果要使用i2c0,需要在设置中把camera功能关闭,即disable。关闭后i2c0就可以检测到设备了