7.4.4. 测试指南
7.4.4.1. 测试环境
7.4.4.1.1. 硬件
测试板:带有两个I2C接口的测试板
PC:用于和测试板交互
串口线:连接测试板的调试串口
7.4.4.1.2. 软件
PC端串口终端软件
i2c-tools第三方软件包
7.4.4.2. 测试配置
将测试板的两个I2C,一个配置为master,一个配置为slave。两个I2C接口对接。 编译第三方测试工具i2c-tools,利用i2c-tools提供的工具进行测试
7.4.4.3. i2c-tools测试
7.4.4.3.1. i2cdetect
i2cdetect用于测试系统中有哪些I2C总线,以及I2C总线上有哪些地址被使用
i2cdetect -l :列出系统中所有的I2C总线
i2cdetect -y -r 0 :查询I2C-0总线上哪些地址有挂接I2C设备。如下如所示,0x51地址上有挂接I2C设备
7.4.4.3.2. i2cset
i2cset用于每次向I2C设备写一个字节的数据
i2cset -f -y 0 0x54 1 0x39 :I2C从设备地址为0x54,将从设备中地址1处的数据设置为0x39
7.4.4.3.3. i2cget
i2cget用于每次从I2C设备读取一个字节的数据
i2cget -f -y 0 0x54 1 :I2C从设备地址为0x54,读取从设备数据地址为1处的1字节数据
7.4.4.3.4. i2ctransfer
i2ctransfer用于与I2C设备之间传输数据,每次可读写多个数据
i2ctransfer -f -y 0 w17@0x54 0 0x5a- :I2C设备地址为0x54,向从设备写入16byte数据,0为将要写入数据的起始地址,写入的数据为0x5a,0x59,0x58…
i2ctransfer -f -y 0 w1@0x54 0 r16 :I2C设备地址为0x54,从I2C设备读取16byte数据,读数据的起始地址为0
7.4.4.3.5. eeprog
eeprog是读写eeprom的工具,每次读写的message只有一个字节。若要读写8个字节,则会分成8个message进行读写
eeprog -f /dev/i2c-0 0x51 -r 0:8 -16 :I2C设备地址为0x51,读取的数据起始地址是0,读取8byte数据,-16表示I2C设备的数据地址需要16bit表示
date | eeprog /dev/i2c-0 0x51 -w 0x200 -16 :将date命令返回的数据写入到eeprom中,写入的起始地址是0x200
注意
i2c-tools默认是不支持eeprog的编译的,并且使用eeprog时需要确保被操作的eeprom没有通过DTS挂载到I2C总线,否则会一直返回该eeprom处于busy状态。