树莓派的i2c默认是关闭的。网上找了很多打开i2c的方法,基本上都是:
1、修改 /etc/modules,添加i2c模块开机自动启动。
2、修改 /etc/modprobe.d/raspi-blacklist.conf 黑名单中去掉i2c模块。
但是怎么改都不行,可能是树莓派系统升级了,和以前的设置方法不一样了。
正确的方法是:
1、sudo raspi-config
2、Advanced Options –> I2C –> 开启i2c设备 –> 重启。
加载成功的话会生成
/dev/i2c-x
文件,x是总线序号。
2、确认i2c模块加载成功
lsmod
会看到 i2c_dev 和 i2c_bcm2708 两项。
3、i2c detect检测i2c设备
linux下有个i2c工具程序可以方便地检测i2c设备。
1、 安装 i2c-tools
sudo apt-get install i2c-tools
2、列出所有i2c总线
i2cdetect -l
如果i2c设备成功打开,将会看到
i2c-1 i2c 3f804000.i2c I2C adapter
3、列出i2c总线上的所有i2c设备
i2cdetect -y <总线>
列出总线上所有地址上的设备,形如:
. 0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
这个功能会启动i2c检测电路,电路上实际连接了哪些设备这里就会显示哪些设备。电路上不连接设备的话在这里是不会显示的。
检测到的是7位的i2c地址。
i2ctools的其他使用在linux里的工具使用中有专门介绍。
4、i2c的波特率
获取当前波特率:
sudo cat /sys/module/i2c_bcm2708/parameters/baudrate
设置波特率:
sudo emacs /etc/modprobe.d/custom.conf
添加一行设置:
options i2c_bcm2708 baudrate=100000
设置后需要重启才能生效。
实际测量clk引脚的结果: