关于树莓派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 ,年代久远,配置也有些不一样,最后也没解决。连接如下:
https://www.raspberrypi.org/forums/viewtopic.php?t=105138
(下图为上面链接主要内容,需要翻译请用链接进行Google翻译)
关于树莓派4B两个i2c通道的理解(SDA.0以及SCL.0或者SDA.1以及SCL.1无法使用问题)_第1张图片

1 但是

问题提出者给了一个关于 device-tree 的官方解释文档,然后我就去啃文档,文档链接如下:
https://www.raspberrypi.org/documentation/configuration/device-tree.md

最后找到3.3有对i2c的解释,大致意思就是i2c两个通道一个是i2c_1是为了控制ARM的,i2c0是为了控制ViedoCore(即"GPU")的(我的理解是,i2c1是为了控制大部分i2c设备的,i2c0是为了控制摄像头或者显示屏等外设用的)
关于树莓派4B两个i2c通道的理解(SDA.0以及SCL.0或者SDA.1以及SCL.1无法使用问题)_第2张图片
下面还给出了四个在系统里定义好的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 的注释去掉,如图
关于树莓派4B两个i2c通道的理解(SDA.0以及SCL.0或者SDA.1以及SCL.1无法使用问题)_第3张图片中间的 i2c_arm 按照官方文档应该是 i2c_0 的定义,但是实际上在我的 Pi4 却是 i2c_1 ,对应的,i2c_vc 应该就代表另一个 i2c 通道的,于是加了 dtparam=i2c_vc=on ,如图
关于树莓派4B两个i2c通道的理解(SDA.0以及SCL.0或者SDA.1以及SCL.1无法使用问题)_第4张图片

重启,然后用再次查看 i2c 发现两个i2c 都可以使用了
在这里插入图片描述
在这里插入图片描述
2020/12/17更新:
根据评论区的给的经验,如果要使用i2c0,需要在设置中把camera功能关闭,即disable。关闭后i2c0就可以检测到设备了

你可能感兴趣的:(树莓派专栏,raspberry,pi,linux)