问题背景
在代码文件i2cTest.c中(该文件可在Github等地方找到),有设置i2c值和读取值两个操作:
ql_set_i2c_register(0x53,0, inbuf, i);
ql_get_i2c_register(0x53,0, outbuf, 6);
将第一个参数修改为对应可挂载设备的地址(我的是0x53),运行后报错:
i2c[53]_register[0] get err: Remote I/O error
原因分析
i2c速度较慢,具体与所连接的外设有关,这个错误是没有找到外设,很可能是因为set和get之间的间隔时间过短
解决方案
增加set和get之间的时间,如,在两行代码间加上一个:
sleep(10);
效果
运行结果:
set_i2c[53]_register[0] ok: 2
get_i2c[53]_register[0] ok: 2
02 03 00 53 02 02 00 00 00 00
符合预期!