Linux环境下基于I2C总线的EEPROM 驱动程序
2020-03-25 08:55:37 点击:
上一篇:基于VxWorks的NAND FLASH驱动程序设计
图2 EEPROM设备地址字节结构
如果主设备要向EEPROM 中写数据,在地址字节中主设备向EEPROM发出一个写请求(R/W=0),发送的地址字节之后紧跟着要发送的数据。每发送一个字节的数据后EEPROM就会产生一个应答信号,主设备也会监控应答信号,如果在发送一个字节后EEPROM没有返回应答信号,则主设备就会停止发送,并生成一个结束信号。写操作的时序如图3所示。
图3 I2C主设备写操作时序
要从EEPROM 中读取数据时,应设置R/W=1。在EEPROM发送完一个字节的数据后,主设备产生一个应答信号来响应,告知EEPROM主设备要求更多的数据,对应主设备产生的每个应答信号EEPROM将发送一个字节的数据。当主设备不发送应答信号并随后发送结束信号位时结束此操作。读操作的时序如图4所示。
图4 I2C主设备读操作时序
3 Linux中I2C总线驱动体系结构
在Linux系统中,对于一个给定的I2C总线硬件配置系统,I2C总线驱动程序体系结构由I2C总线驱动和I2C设备驱动组成。其中I2C总线驱动包括一个具体的控制器驱动和I2C总线的算法驱动.一个算法驱动适用于一类总线控制器.而一个具体的总线控制器驱动要使用某一种算法。例如,Linux内核中提供的算法i2e-algo-8260可以用在MPC82xx系列处理器提供的I2C总线控制器上。Linux内核中提供了一些常见处理器如MPC82xx系列的算法驱动。对于I2C设备,基本上每种具体设备都有自己的基本特性.其驱动程序一般都需要特别设计。