学习记录
虽然网上关于I2C的教程很多,但是有很多都是复制粘贴的,自己都没有真正搞懂,也容易误导别人。我自己查找、思考、实践以后,把自己的经验写下来。
配置raspi-config
在终端输入命令
sudo raspi-config
选中Advanced Options,选中I2C,使能I2C。
添加开机启动
终端输入命令
sudo nano /etc/modules
添加
i2c-bcm2708
i2c-dev
保存后退出。
去除黑名单
终端输入
sudo nano /etc/modprobe.d/raspi-blacklist.conf
若文件内包含
blacklist i2c_bcm2708
则在行首加“#”,若没有,直接退出。(本人测试没有)
装载设备
终端输入
sudo modprobe i2c_bcm2708
装载设备
确认装载成功
终端输入
lsmod
若是能够发现
i2c_dev
i2c_bcm2708
则说明装载成功。
安装i2c-tools
可先用
i2cdetect -y 1
检查是否已经安装了i2c-tools(本人测试系统已经安装好)。若没有安装,则终端输入
sudo apt-get install i2c-tools
进行安装。
查询设备
终端输入
i2cdetect -y 1
输出结果
若是没有i2c设备,应该全为“- -”。我连接了一个e2prom。所以显示了一个设备。
读取寄存器全部内容
通过i2cdump指令可导出I2C设备中的所有寄存器内容。
终端输入
i2cdump -y 1 0x50
-y为忽略交互,1为设备号,0x50为设备地址。
输出结果
写寄存器
需要向I2C设备中写入字节时,可输入指令i2cset -y 1 设备地址 寄存器地址 写入内容
i2cset -y 1 0x50 0x00 0xff
读寄存器
需要读取I2C设备寄存器某字节时,可输入指令i2cget -y 1 设备地址 寄存器地址
i2cget -y 1 0x50 0x00
查看波特率
sudo cat /sys/module/i2c_bcm2708/parameters/baudrate
不知道为啥,波特率为0,但是i2c能够正常使用。
修改波特率
法一:
modprobe i2c_bcm2708 baudrate=32000
没有任何作用
法二:
进入/etc/modprobe.d 目录,并在该目录下新建一个costom.conf文件,在该文件中插入options i2c_bcm2708 baudrate=32000,32000便为新的I2C速率,最后请重启系统。
压根连文件都无法创建
由于i2c能够正常使用,就没有在这儿过多纠结。