前提是i2c控制器的驱动必须已经正常运行,标准的i2c tool只能对8位的地址进行读写,但是eeprom这种16位的地址就无能无力了
所以这种对16位地址的读写支持,在嵌入式领域还是十分常见的
主要利用标准的Linux I2C接口,struct i2c_msg; //I2C消息数据结构
首先是I2C时序图(来自网络)

读,需要两条消息:第一条,确认寄存器地址,长度是2,因为寄存器地址是16bit,第二条,是发送读写指令,长度是2,读取是16bit长度的

写,一条消息即可,因为不需要重新start,就可以将多出的8bit寄存器地址,当做第一个字节的数据

本文介绍了如何在Linux环境中使用I2C协议对16位寄存器进行读写操作。由于标准i2c工具无法处理16位地址,故在嵌入式领域中,直接利用Linux I2C接口变得至关重要。读操作涉及两条消息,分别设置寄存器地址和读取数据;而写操作仅需一条消息即可完成,额外的8位寄存器地址作为数据的一部分。
2636

被折叠的 条评论
为什么被折叠?



