1,本文给出了linux 下使用IIC总线读写EEPROM 的实现程序。 2, 本文给出了在编程中遇到的几种非常隐蔽的错误的解决方法。 3,本文的读写程序非常通用: i2c -d /dev/i2c-1 -s 0x51 0x05 18 -----Write 18 to the register: 0x05 of the i2c-slave address: 0x51 i2c -d /dev/i2c-10 0x57 0x05 ------Read the register: 0x05 of the i2c-slave address: 0x57 i2c 0x40 0x0f ----- 在默认路径下读 i2c 从设备地址为0x40的 0x0f的地址(或寄存器地址) ### Linux下使用IIC总线读写EEPROM的知识点总结 #### 1. IIC总线简介 IIC(Inter-Integrated Circuit)总线是一种由Philips公司开发的两线式串行总线,用于连接微控制器和其他外围设备。它通过两条双向信号线SCL(时钟线)和SDA(数据线)进行通信。IIC总线广泛应用于嵌入式系统中,用于连接低速的外围设备,如EEPROM、实时时钟、A/D转换器、D/A转换器等。 #### 2. EEPROM简介 EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种非易失性存储器,即使在电源关闭后也能保存数据。它可以在电路中被电擦除和重写,通常用于存储少量的数据,如配置参数、设置选项等。与Flash相比,EEPROM支持单字节的读写操作,适用于需要频繁修改的小型数据存储。 #### 3. Linux下使用IIC总线读写EEPROM的方法 - **实现程序示例**: - 写入数据到EEPROM:`i2c -d /dev/i2c-1 -s 0x51 0x05 18`,表示向IIC从设备地址为`0x51`的EEPROM的寄存器`0x05`写入数值`18`。 - 读取EEPROM数据:`i2c -d /dev/i2c-10 0x57 0x05`,表示从IIC从设备地址为`0x57`的EEPROM的寄存器`0x05`读取数据。 - 默认路径下的读取:`i2c 0x40 0x0f`,表示在默认路径下读取IIC从设备地址为`0x40`的寄存器`0x0f`的数据。 #### 4. AT24C02 EEPROM芯片特性 - **存储容量**:2Kb,分成32页,每页8字节,共256字节。 - **寻址方式**: - **芯片寻址**:AT24C02的芯片地址为1010,地址控制字格式为1010A2A1A0R/W。其中A2、A1、A0为可编程地址选择位,R/W为芯片读写控制位,为0表示写操作。 - **片内子地址寻址**:芯片寻址后,可以通过片内子地址(00~FF)进行读/写操作。 #### 5. EEPROM与Flash的区别 - **读写方式**:EEPROM支持单字节读写,而Flash支持块擦除,部分芯片支持单字节写入,但通常需要采用块写入方式。 - **读写速度与可靠性**:Flash读写速度更快,可靠性更高。 - **成本**:Flash的成本相对较高。 #### 6. 实现过程中的常见问题及解决方案 - **问题一:Bad Address** - 错误出现位置:在内核代码`driver/i2c/i2c-dev.c`中的函数`i2cdev_ioctl_rdrw()`。 - 原因分析:问题出现在`copy_from_user()`函数中,由于用户空间与内核空间的数据类型大小不一致导致。 - 解决方案:确保用户空间与内核空间的数据类型大小一致,例如使用`unsigned int`代替`unsigned long`,尤其是在不同架构间进行交叉编译时需要注意这个问题。 #### 7. 结论 在Linux环境下使用IIC总线读写EEPROM是一项基本而又重要的技能,特别是在嵌入式系统开发领域。通过了解IIC总线的基本原理、EEPROM的特点以及具体的编程实践,开发者能够有效地利用这一技术来满足不同的应用需求。同时,处理好诸如数据类型匹配等问题,可以避免一些常见的错误,提高系统的稳定性和可靠性。


剩余10页未读,继续阅读






























- 粉丝: 121
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 包含在ZedBoard上实现YOLOv CNN的代码。我的单身日记的一部分(包括在里面)。_Contains code
- 在这个仓库中,我们介绍了一个与监控摄像头视图高度兼容的实时火灾探测模型。_In this repo, we introd
- 半年财务收入支出明细表excel模板.xlsx
- 搬运机械手PLC控制系统设计26233.doc
- 2020年电子商务开题报告范文.doc
- yolov的Caffe实现,从https___github.com_eric_Caffe-yolov分叉而来-Windo
- 使用OpenCV和YOLOv(ONNX)在C中进行实时车牌检测。包括具有节板功能的Haar Cascade YOLOv车
- 大学生网络政治参与的实证研究--以四川文理学院为例.pptx
- 企业发展战略咨询项目管理诊断报告.pptx
- 策划方案模版网站设计排版.docx
- 企业办公一体化之portal认证解决方案(OA系统登录无线网络)(1).doc
- 江苏成人计算机统考测验考试汇编(有标准答案).doc
- 使用YOLOv进行停车场占用检测_Parking lot occupancy detection using YOLOv
- 笑yolo onnx C,yolov __ yolov __yolov-。约洛夫_为bubbliiiing的yolo系列
- jan16公司网络组建的实训总结200字.docx
- 避障机器人电机运动程序设计实施方案与调试.doc



评论14