本人用的是alinx7010开发板进行驱动。在应用层随便写入两个数到EEPROM中,然后读取这两个数的值,发现可以写入,读取时i2c_transfer函数返回-6,查询得知:

驱动打开时会显示:
于是我开始检测是否时client的addr没检测到,再检测寄存器是否有问题,发现都是不行,能写不能读。
于是,我直接打印出msg[0].addr和msg[1].addr和reg,看看哪个是乱码,结果惊奇的发现……


竟然可以读也可以写了???什么情况,pinntk立大功。于是对这三个参数我一个一个排查……
我发现msg[0].addr和msg[1].addr最少要打印其中一个,如果只打印寄存器一个,还是返回-6:

而打印了设备地址后只需打印其中一个就不会报错:

另外,我发现一定要打印 msg[0].addr = %#x,msg[1].addr = %#x\r\n 如果少了“=”号前面的也会报错,少了换行符 \n 也是一样的错误:

至于原因……找了一天还没找出来
作者在使用alinx7010开发板驱动时遇到写入EEPROM后无法读取的问题。经过排查,发现打印设备地址和正确格式对于解决I2C传输错误至关重要。具体来说,必须同时打印msg[0].addr和msg[1].addr,并确保格式规范,否则会导致读写错误。
9494






