首先,开启树莓派的I2C驱动:
查看I2C驱动是否已经被加载:ls /dev -l | grep i2c,如果有形如 i2c-x 的显示结果表明驱动已经加载,否则驱动没有加载,需要进行如下操作:
修改配置文件:/etc/modprobe.d/raspi-blacklist.conf(如果存在的话)
去掉 “#blacklist i2c-bcm2708” 前的注释符号#
重启树莓派,可以使用命令(sudo reboot)
加载驱动: sudo modprobe i2c-dev
设置读写属性:sudo chmod o+rw /dev/i2c*
安装python2.7:
quick2wire本身支持python3,但因为很多程序写在python2.7下,所以我添加了quick2wire对python2.7的支持
sudo apt-get install python
获取quick2wire代码:
创建一个本地目录,假设名字是q2w:
进入该目录 cd q2w
获取quick2wire-gpio-admin
git clone https://github.com/quick2wire/quick2wire-gpio-admin.git
cd quick2wire-gpio-admin
make && make install
获取quick2wire-python-api
原始版本(只支持python3):https://github.com/quick2wire/quick2wire-python-api.git
支持python2.7的版本:https://github.com/freason/quick2wire-python-api.git
这里使用支持python2.7的版本:
git clone https://github.com/freason/quick2wire-python-api.git
cd quick2wire-python-api
python setup.py
使用:
请参见:
https://github.com/quick2wire/quick2wire-python-api/blob/master/README.md
https://github.com/quick2wire/quick2wire-python-api/blob/master/doc/getting-started-with-i2c.md
首先用i2cdetect确定slave设备的地址:
i2cdetect x(其中x为/dev/i2c-x中的x),这条命令会返回类似如下的数据:
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1e --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
1e为slave设备的地址,我使用的设备是HMC5883,三轴陀螺仪
简单的python代码:
import quick2wire.i2c as i2c
addr = 0x1e
regConf = 0x02
regRd = 0x03
bus = i2c.I2CMaster()
bus.transaction(i2c.writing_bytes(addr, regConf, 0x00))
read_results = bus.transaction(i2c.writing_bytes(addr, regRd), i2c.reading(address, 6))
for i in r[0]:
print(ord(i))
该代码会有如下输出:
254
168
255
109
255
73
i2c--2.6.34文档:如何枚举产生i2c_client:http://www.linuxdiyf.com/linux/5310.html
Linux kernel 2.6.34:i2c驱动如何编写:http://www.linuxdiyf.com/linux/5307.html