以前调试用到的I2C-Tools命令,可以参考下~
I2C-Tools | 描述 |
---|---|
i2cdetect -V i2cdetect -l i2cdetect -F 1 i2cdetect -y -a 1 i2cdetect -a 1 i2cdetect -y 1 | i2cdetect用來列举I2C bus和上面所有的设备,可接受的参数有: -V:输出当前版本号 -l:输出所有I2C总线 I2CBUS:i2c总线编号 -F:此I2C支持的功能,需标明哪路I2C(eg:i2cdetect -F 1) -y:指令自动yes,否则会询问确认执行Continue? [Y/n] Y -a:输出总线上所有地址(00-7f),没有-a,只显示 08-77,UU 表示该设备在驱动中已使用 -q:快速写指令,-q与-r不能同时使用 -r:读指令,-q与-r不能同时使用 |
i2cdump -f -y -a 1 0x38//0x38设备地址 i2cdump -f -y -r 0x50-0x7f 1 0x38//0x38设备地址,只读取0x50-0x7f寄存器范围的值 | i2cdump读取设备上所有寄存器的值,可接受的参数有: -V:输出当前版本号 -f:强制使用此设备地址,即使此设备地址已经被使用;若不添加此参数,地址可能写失败 -y:指令执行自动yes -r:读取从 first-last 之间的寄存器值 -a:读取0x00-0xff范围的地址 I2CBUS:i2c总线编号 ADDRESS:设备地址,建议使用十六进制 MODE:数据长度类型,b(byte,default),w(word),W(word on even register addresses),s(SMBus block),i(I2C block),c(consecutive byte) |
i2cset -y -r 1 0x38 0x04 0x03//0x38设备地址,0x04要写入的寄存器,0x03要写入的值 | i2cset设置设备上寄存器的值,可接受的参数有: -V:输出当前版本号 -f:强制使用此设备地址,即使此设备地址已经被使用 -y:指令执行自动 yes -m:添加掩码 -r:回显,显示是否写入成功,要写的值和读取的值 -a:允许使用0x00-0x02和0x78-0x7f之间的地址 I2CBUS:i2c总线编号 CHIP-ADDRESS:设备地址 DATA-ADDRESS:要写入的寄存器地址 VALUE:要写入的值 MODE:数据长度类型 |
i2cget -f -y 1 0x38 0x04//0x38设备地址,0x04要读取的寄存器 | i2cget读取设备上寄存器的值,可接受的参数有: -V:输出当前版本号 -f:强制使用此设备地址,即使此设备地址已经被使用 -y:指令执行自动 yes -a:允许使用0x00-0x02和0x78-0x7f之间的地址 I2CBUS:i2c总线编号 CHIP-ADDRESS:设备地址 DATA-ADDRESS:要读取的寄存器地址 MODE:数据长度类型 |
#i2ctransfer 0 w1@0x50 0x64 r8 //在总线0上,从地址0x50的EEPROM读取偏移量0x64的8个字节 //(第一条消息写入一个字节以将存储器指针设置为0x64,第二条消息从同一芯片读取) | i2ctransfer通过一次传输发送用户定义的I2C消息,用于创建I2C消息并将其作为一次传输合并发送。对于已读消息,已接收缓冲区的内容被打印到stdout,每条已读消息一行,可接受参数: -V:输出当前版本号 -f:强制使用此设备地址,即使此设备地址已经被使用;若不添加此参数,地址可能写失败 -y:指令执行自动 yes,否则会提示确认执行Continue? [Y/n] Y,不加参数y会有很多执行提示,可以帮助判断 -v:启用详细输出 -a:允许使用0x00-0x02和0x78-0x7f之间的地址 I2CBUS:i2c总线编号 DESC:{r|w}<消息长度>[@设备地址] #{r|w}指定消息是读还是写 #<消息长度>指定在此消息中读取或写入的字节数。它被解析为一个无符号的16位整数 #[@设备地址]指定此消息要访问的芯片的7位地址,并且是整数。如果省略,请重用以前的地址。通常,将阻止0x03-0x77范围之外的地址以及附加了内核驱动程序的地址。通过-f(强制),可以使用所有地址 |