树莓派-wiringPi-树莓派的i2c配置
介绍如何在树莓派上配置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 |
|
这个功能会启动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 | 波形已经失真严重,设备接收异常。 |
本站所有文章欢迎转载,但请保留作者信息和原文地址。