前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系统驱动之编写APP直接访问EEPROM

Linux系统驱动之编写APP直接访问EEPROM

作者头像
韦东山
发布2021-12-08 10:49:33
1.3K0
发布2021-12-08 10:49:33
举报
文章被收录于专栏:韦东山嵌入式

资料下载

coding无法使用浏览器打开,必须用git工具下载:

代码语言:javascript
复制
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git

视频观看

百问网驱动大全

编写APP直接访问EEPROM

参考资料:

  • Linux驱动程序: drivers/i2c/i2c-dev.c
  • I2C-Tools-4.2: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/
  • AT24cxx.pdf

本节源码: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

1. 硬件连接

  • STM32MP157的I2C模块连接方法
在这里插入图片描述
在这里插入图片描述
  • IMX6ULL的I2C模块连接方法
在这里插入图片描述
在这里插入图片描述

2. AT24C02访问方法

2.1 设备地址

从芯片手册上可以知道,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。

2.2 写数据
在这里插入图片描述
在这里插入图片描述
2.3 读数据

可以读1个字节,也可以连续读出多个字节。 连续读多个字节时,芯片内部的地址会自动累加。 当地址到达存储空间最后一个地址时,会从0开始。

在这里插入图片描述
在这里插入图片描述

3. 使用I2C-Tools的函数编程

4. 编译

4.1 在Ubuntu设置交叉编译工具链
4.2 使用I2C-Tools的源码
在这里插入图片描述
在这里插入图片描述
4.3 编译

为IMX6ULL编译时,有如下错误:

在这里插入图片描述
在这里插入图片描述

这是因为IMX6ULL的工具链自带的include目录中,没有smbus.h。

需要我们自己提供这个头文件,解决方法:

4.4 上机测试

以下命令在开发板中执行。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 资料下载
  • 视频观看
  • 编写APP直接访问EEPROM
    • 1. 硬件连接
      • 2. AT24C02访问方法
        • 2.1 设备地址
        • 2.2 写数据
        • 2.3 读数据
      • 3. 使用I2C-Tools的函数编程
        • 4. 编译
          • 4.1 在Ubuntu设置交叉编译工具链
          • 4.2 使用I2C-Tools的源码
          • 4.3 编译
        • 4.4 上机测试
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档