coding无法使用浏览器打开,必须用git工具下载:
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git
参考资料:
drivers/i2c/i2c-dev.c
https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/
本节源码:GIT仓库中
doc_and_source_for_drivers\IMX6ULL\source\04_I2C\01_at24c02_test
doc_and_source_for_drivers\STM32MP157\source\A7\04_I2C\01_at24c02_test
从芯片手册上可以知道,AT24C02的设备地址跟它的A2、A1、A0引脚有关:
打开I2C模块的原理图(这2个文件是一样的):
STM32MP157\开发板配套资料\原理图\04_Extend_modules(外设模块)\eeprom.zip\i2c_eeprom_module_v1.0.pdf
IMX6ULL\开发板配套资料\原理图\Extend_modules\eeprom.zip\i2c_eeprom_module_v1.0.pdf
从原理图可知,A2A1A0都是0,所以AT24C02的设备地址是:0b1010000,即0x50。
可以读1个字节,也可以连续读出多个字节。 连续读多个字节时,芯片内部的地址会自动累加。 当地址到达存储空间最后一个地址时,会从0开始。
为IMX6ULL编译时,有如下错误:
这是因为IMX6ULL的工具链自带的include目录中,没有smbus.h。
需要我们自己提供这个头文件,解决方法:
以下命令在开发板中执行。