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总线

../../../_images/i2cdetect_1.png

i2cdetect -y -r 0 :查询I2C-0总线上哪些地址有挂接I2C设备。如下如所示,0x51地址上有挂接I2C设备

../../../_images/i2cdetect_2.png

7.4.4.3.2. i2cset

i2cset用于每次向I2C设备写一个字节的数据

i2cset -f -y 0 0x54 1 0x39 :I2C从设备地址为0x54,将从设备中地址1处的数据设置为0x39

../../../_images/i2cset.png

7.4.4.3.3. i2cget

i2cget用于每次从I2C设备读取一个字节的数据

i2cget -f -y 0 0x54 1 :I2C从设备地址为0x54,读取从设备数据地址为1处的1字节数据

../../../_images/i2cget.png

7.4.4.3.4. i2ctransfer

i2ctransfer用于与I2C设备之间传输数据,每次可读写多个数据

i2ctransfer -f -y 0 w17@0x54 0 0x5a- :I2C设备地址为0x54,向从设备写入16byte数据,0为将要写入数据的起始地址,写入的数据为0x5a,0x59,0x58…

../../../_images/i2ctransfer_1.png

i2ctransfer -f -y 0 w1@0x54 0 r16 :I2C设备地址为0x54,从I2C设备读取16byte数据,读数据的起始地址为0

../../../_images/i2ctransfer_2.png

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状态。