linux IIC子系统分析(一)——AT24C02 芯片简介
2016-06-13 10:17
435 查看
现在很多地方都有应用到eeprom存储芯片,主要是因为它现在存储空间越来越大,价格越来越便宜,我使用的mini2440开发板上贴的是AT24C02,与S3C2410的IIC相连接,为了更好的学习Linux的IIC子系统,了解IIC芯片操作方式是非常有必要的。
AT24C02芯片特性和引脚功能定义直接看Datasheet就可以了。我只关注设备地址和操作方式,我们实际应用中知道这些就可以操作它了。
1.AT24C02 地址
前四位(1010)是固定的,A2, A1, A0 与硬件连接有关系,外部输入电压为高时是1,外部电压输入为低是0。 我开发板中A2, A1, A0都是接地,所以我的设备地址是10100000 或10100001。 最后一位R/W是读写位,读操作时为0,写操作时为1。对于linux IIC之系统,读写位驱动会自动添加,实际设备地址位高七位 1010000B 也就是0x50。
2.AT24C02写操作
写操作分为一个字节写和分页写,时序如下图。
一个字节写时序:发送开始信号->发送设备地址->等待ACK->发送需要写入的地址->等待ACK->发送需要写入的数值->等待ACK->发送停止信号。
分页写时序与写一个字节基本相同,只是在发送第一个需要写入的数据之后不发送停止信号,继续发送数据,直到数据发送完之后再发停止信号。
这里需要特别注意EEPROM的页操作,在24C02中,存储空间是2048bit = 256*8bit = 256 Byte, 其中它被分为32页,每页8Byte。在进行页操作的时候,WORD ADDRESS的低三位用来表示页内的地址,其它所有高位表示页地址。比如WORD ADDRESS = 1001B,表示第1页的第一个地址。现在如果往1001B的存储地址写入8个数值:1,2,3,4,5,6,7,8 ,当写到数值7时,第一页已经写满,那么8会被写到第一页的0地址位置。这时会把第一页0位置的信息被覆盖。
3.AT24C02读操作。
读操作分为:从当前地址读;随机地址读;连续地址读;
解析:
当前地址读:24c02内部的data word address 会保存上次读或是写的存储地址,当执行当前地址读时,读取的是data word address counter + 1地址上的指。这里需要主要,在页尾时会出现地址翻转,实际会读取到该页的第一个字节数据。与上面提到的也写操作中的一样。data word address 中保存的值掉电就会丢失。
随机地址读取:注意上图Figure11 中的Dummy Write。随机读实际上是通过写入一个地址改变eeprom里面data word address 的值,然后再进行当前地址读。
连续读:
连续读由当前地址读和随机地址读启动,只要给eeprom 一个应答信号,他的data word address 就会增加,主控器就可以继续读数据,直到data word address 增加到一个页的末尾后,又回到该页的起始位置地址。当接收到IIC的停止信号的时候结束传输。
最后eeprom 还有一个WP 控制引脚。该引脚为低电平的时候,可以正常的读写数据。当该引脚为高电平的时候。eeprom进入写保护模式。这时数据是写不进去的。
AT24C02芯片特性和引脚功能定义直接看Datasheet就可以了。我只关注设备地址和操作方式,我们实际应用中知道这些就可以操作它了。
1.AT24C02 地址
前四位(1010)是固定的,A2, A1, A0 与硬件连接有关系,外部输入电压为高时是1,外部电压输入为低是0。 我开发板中A2, A1, A0都是接地,所以我的设备地址是10100000 或10100001。 最后一位R/W是读写位,读操作时为0,写操作时为1。对于linux IIC之系统,读写位驱动会自动添加,实际设备地址位高七位 1010000B 也就是0x50。
2.AT24C02写操作
写操作分为一个字节写和分页写,时序如下图。
一个字节写时序:发送开始信号->发送设备地址->等待ACK->发送需要写入的地址->等待ACK->发送需要写入的数值->等待ACK->发送停止信号。
分页写时序与写一个字节基本相同,只是在发送第一个需要写入的数据之后不发送停止信号,继续发送数据,直到数据发送完之后再发停止信号。
这里需要特别注意EEPROM的页操作,在24C02中,存储空间是2048bit = 256*8bit = 256 Byte, 其中它被分为32页,每页8Byte。在进行页操作的时候,WORD ADDRESS的低三位用来表示页内的地址,其它所有高位表示页地址。比如WORD ADDRESS = 1001B,表示第1页的第一个地址。现在如果往1001B的存储地址写入8个数值:1,2,3,4,5,6,7,8 ,当写到数值7时,第一页已经写满,那么8会被写到第一页的0地址位置。这时会把第一页0位置的信息被覆盖。
3.AT24C02读操作。
读操作分为:从当前地址读;随机地址读;连续地址读;
解析:
当前地址读:24c02内部的data word address 会保存上次读或是写的存储地址,当执行当前地址读时,读取的是data word address counter + 1地址上的指。这里需要主要,在页尾时会出现地址翻转,实际会读取到该页的第一个字节数据。与上面提到的也写操作中的一样。data word address 中保存的值掉电就会丢失。
随机地址读取:注意上图Figure11 中的Dummy Write。随机读实际上是通过写入一个地址改变eeprom里面data word address 的值,然后再进行当前地址读。
连续读:
连续读由当前地址读和随机地址读启动,只要给eeprom 一个应答信号,他的data word address 就会增加,主控器就可以继续读数据,直到data word address 增加到一个页的末尾后,又回到该页的起始位置地址。当接收到IIC的停止信号的时候结束传输。
最后eeprom 还有一个WP 控制引脚。该引脚为低电平的时候,可以正常的读写数据。当该引脚为高电平的时候。eeprom进入写保护模式。这时数据是写不进去的。
相关文章推荐
- ubuntu下允许root用户ssh远程登录及Linux下服务的启动
- 多进程通信之消息队列
- Linux环境导入*.sql文件出现数据库为空
- POSIX---linux多线程编程基础总结
- RedHat server6.3/centos6.5系统配置本地yum源并安装图形界面
- linux下利用split分割大文件
- Linux 下error while loading shared libraries的解決方法
- CentOS 下 Codeblocks 的 安装 + 汉化 以及 基本使用介绍
- RedHat/CentOS发行版本号及内核版本号对照表
- Linux系统/etc/sysconfig目录下无iptables文件
- kali linux web渗透测试学习笔记
- Linux学习小结20160613
- CentOS下Mysql数据库的安装与配置
- unix之内存管理
- 在 Linux 下使用 scp 命令
- 在 Linux 下使用 scp 命令
- 5款linux下的笔记软件
- linux convert命令
- Linux-HA Heartbeat Keepalived
- LFCS 系列第九讲: 使用 Yum、RPM、Apt、Dpkg、Aptitude 进行 Linux 软件包管理