在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
https://blog.csdn.net/Z_HUALIN/article/details/78084313 https://kernel.googlesource.com/pub/scm/utils/i2c-tools/i2c-tools/+/refs/tags/v3.1.2 将编译得到i2cdetect i2cget i2cset i2cdump四个工具。 1.我们现在要查看tas5729这个i2c外设,通过查询原理图,得知tas5729挂在在TWI1上; uranus-nansu:/ # i2cdetect -y -r 1 i2cdetect -y -r 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- 得到设备的地址是:0x2B(0x20+0x0b),UU意味着这个设备被kernel driver占用,通常不能从user space探查; 2.查看某个寄存器值(0x20); Usage: i2cget [-f] [-y] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]] I2CBUS is an integer or an I2C bus name ADDRESS is an integer (0x03 - 0x77) MODE is one of: b (byte, default) w (word) W (word on even register addresses) s (SMBus block) i (I2C block) c (consecutive byte) Append p for SMBus PEC i2cget -f -y 1 0x2b 0x20 w4
3.将某个值写入某个寄存器: Usage: i2cset [-f] [-y] [-m MASK] [-r] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE] i2cset -f -y -r 1 0x2b 0x04 0x03
4.dump部分寄存器值; Usage: i2cdump [-f] [-y] [-r first-last] I2CBUS ADDRESS [MODE [BANK [BANKREG]]]
i2cdump -f -y -r 0x00-0x25 1 0x2b w
5.i2ctransfer。 1).上述几个工具即使选择‘w’模式,每个寄存器返回的数值最大时16bit(2bytes),对于32bit生长更高位数寄存器读取不到所有bit数据; 2).大多数设备在读取之前都需要对寄存器进行写访问。i2ctransfer提供了一种组合写入和读取过程的方法。它还可以在单个命令中处理带有附加后缀的多个字节写入/读取。 a.要读取一组字节:i2ctransfer -f -y <i2cbus number> r<number of bytes>@<peripheral address> b.要写一组字节:i2ctransfer -f -y <i2cbus number> w<number of bytes>@<peripheral address> <byte value 1> <byte value 2> ... <byte value n> c.要写入一组字节,然后读取一组字节:i2ctransfer -f -y <i2cbus number> w<number of bytes to write>@<peripheral address> <byte value 1> <byte value 2> ... <byte value n> r<number of bytes to read>
i2ctransfer -f -y 1 w1@0x2b 0x25 r4 #从I2S1总线上的0x2b外设,读取寄存器0x25中4字节数据; i2ctransfer -f -y 1 w5@0x2b 0x04 0x00 0x00 0x00 0x03
i2ctransfer -f -y 1 w3@0x2b 0x07 0xc0 0x00
i2ctransfer -f -y 1 w1@0x2b 0x4f r4 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论