I2C总线读写E2PROM
器件说明:
AT24CXXX系列引脚图如下
现在我先来说说AT24CXX的具体使用
现在要对E2PROM_01存储器进行写字节操作看看它是如何找到的。
上面说过在发送完一个开始信号后接着发送一个字节的器件识别信号。这一个字节的4-7位就是器件识别码。1010就是对应E2PROM器件,其它器件就不再理会了。1-3位是器件的物理地址,也就是说如果是E2PROM,它可以在I2C总线上挂接(000-111)8个E2PROM。在这里就得详细说说AT24CXX上的A0,A1,A2和这个器件识别字节之间的关系了。上面说过存储器的寻址范围是一个字节,也就256个,AT24C02的存储容量为256字字,刚刚好将一个字节的地址用完。器件电路上A0,A1,A2三个管脚通过接高电平或低电平来和AT89S51发送过来的器件识别控制字节相匹配,从而得以识别出AT89S51将要操作的那个存储器。现在AT24C04的容量是512个字节,那不是一个字节的地址不够用了吗?其实它是将512个字节为成两个页,每页256字节,而页地址就是器件识别控制字节的1位。前面说了这个1-3位不是和器件上的A0,A1,A2匹配来识别器件的吗?是的,但存储器容量超过256字节情况就有变了。AT24C04上的A0这时就废弃不用了,只用A1和A2,这样就只能接(00-11)四个AT24C04了,同样AT24C08容量为1K字节分为4页了,于是页地址就是器件识别控制字节的1-2位,器件上的A0,A1废弃不用,只用A2,就只能接两个AT24C08了。AT24C16容量为2K字节,分为8页。页地址是器件识别控制字节的1-3位,全用了。器件上的A0,A1,A2,就无效了,只能接一只AT24C16。
我这么说能明白吗?
对于大容量AT24C32-1024的存储器。器件的存储寻址地址为两个字节,所以它的一页为65536(64K)。AT24C32-64的容量为4K字节-8K字节,在一页范围,可以接8只器件。从AT24C128-1024的器件代号也由1010改为10100,多了一位,识别控制字节的器件物理地址就少了一位,变为1-2位,相应的在器件管脚上A2也废弃空着了,因此最多只能接四只器件。AT24C128-512只有两位器件地址所以最多只能接四只器件。而AT24C1024的容量为128K,分为两页,识别控制字节的的1位为页地址,器件的A0脚废弃不用,只用了A1。因此只能接2只器件。
原先的板子如下图
焊好后。
好!下面我们进行调试:插上主电源。但AT24C16的电源短路帽不接,在短路帽两个针之间接上万用表的电流档检查是否有短路和静态电流的大小。实测静态电流几乎为零,改变两个数据线的电平时,电流会有所上升,说明电路基本正常。
现在我们接上电源短路帽把AT24C16电源接好。将两个数据线用跳线接到P1.6和P1.7口上(接到哪个口上可以自己选的)。注意分清哪个是SDA哪个是SCL。别弄错了。
把LCD12864装上,后面我们就要进行软件的调试了。
I2C总线读写E2PRO 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)