介绍如何在树莓派上配置i2c,包括开关、波特率,以及i2cdetect的简单使用。

1、开启树莓派i2c设备

树莓派的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 <总线>
列出总线上所有地址上的设备,形如:

1
2
3
4
5
6
7
8
.    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引脚的结果:

设置的频率 示波器测量的脉宽 周期 示波器测量的频率 传输addr+cmd+20字节所需要的时间  
32000(32k) 25us 50us 20kHz    
100000(100k) 8us 16us 41.67kHz    
1000000(1M) 800ns 1600ns 417KHz    
2000000(2M) 400ns 800ns 833.4kHz   波形略有失真,可能和外部电路设计也有关系。
3000000(3M) 250ns 500ns 1.894MHz   波形已经失真严重,设备接收异常。

本站所有文章欢迎转载,但请保留作者信息和原文地址。

Comments