《15寸移动式心电监测仪》制作纪实 :zynq 7000系列 i2c 总线调试纪实
开启i2c-0和i2c-1
这里引用ALINX开启双目摄像头的教程的设备树配置
不需要写两个sensor@3c的子节点,只写clock-frequency=<100000>即可开启总线。
也不需要在配置界面配置什么。
使用i2c-tools辅助测试
简介
i2c-tools软件包包含用于Linux的一组不同的I2C工具:总线探测工具,chip dumper,寄存器级SMBus访问帮助器,EEPROM解码脚本,EEPROM编程工具以及用于SMBus访问的python模块。 只要内核中包含I2C支持,就支持所有版本的Linux。
我们使用这个工具来进行快速测试验证,这是个不可多得的好东西。
安装
apt安装i2ctools:
sudo apt-get install i2c-tools
使用举例
还记得HDMI中有一对I2C总线吗,它挂载在i2c-0,我们来试一试读一读显示器的内容。
同时,i2c-1上面挂载了一个24c04,地址为0x50,我们也来操作它。
1.列出所有i2c总线:i2cdetect
i2cdetect -l
2.检测指定i2c总线上的器件地址:i2cdetect
i2cdetect -r -y 0
上面的是拔出显示器,下面是插入显示器,可见,显示器有这些设备地址。
3.获得指定总线,指定器件中所有寄存器的值:i2cdump
i2cdump -f -y 0 0x50
我们获得了显示器0x50器件的所有寄存器的值
(我猜测它应该是显示器内部的EEPROM)
4.获得指定总线,指定器件中单个寄存器的值:i2cget
i2cget -f -y 0 0x50 0x5f
可以与上面的dump值进行一下对比
5.设置指定总线,指定器件中单个寄存器的值:i2cset
对显示器写入信息可能会破坏它,我们来操作i2c-1上的24c04。
这是存储器的dump值
下面写一下0x00寄存器 ,值为0x30
i2cset -f -y 0x50 0x00 0x30
然后再dump一下:
可以看到已经修改成0x30了。