AT24C32是2-Wire Serial EEPROM,容量为32Kbits(4096*8)。利用该芯片可以模拟I2C总线,如果采用IO口来进行模拟,可以采用二线制(SCL、SDA),也可以采用三线制(WP、SCL、SDA)。在编写驱动程序时,要分为两个层次。第一、针对IIC总线的驱动部分。第二、针对AT24C32的驱动部分。Dynamic C里面的IO模拟IIC函数库采用的是二线制,针对的芯片是24C02。如果要用,就需要进行相应的改进。下面把使用该芯片时注意的地方总结如下:
1、各个引脚的含义
A0-A2:地址线,用来选择slave器件。
WP:Write Protect写保护,高电平拒绝写入,低电平可以写入,即低电平有效。
SCL:Serial Clock 串行时钟,用来指示什么时候数据线上是有效数据。
SDA:Serial Data 串行数据,用于数据传送
2、关于WP脚
二线制没有WP,也就是把WP置为低电平,始终写有效。这样的问题是,在上电或调电的时候,可能会发生异常情况,对EEPROM内数据有所改动。所以,如果有重要的数据,还是要采用WP引脚比较安全。
对AT24C32来说,WP置高,则只有四分之一受保护,即0x0C00-0x0FFF。也就是说保护区为1KBytes。对于低地址的四分之三,则不保护。所以,如果数据较多时,可以有选择地存储。不重要的数据则放在低四分之三区域,重要的数据则放在高四分之一区域。
看IC Datasheet,一定要仔细。初次写测试程序时,发现WP不起作用,常有效。用万用表测试,确实是高电平。经过仔细阅读WP引脚说明,发现只有高四分之一区域可以写保护。改变地址后,测试成功。整个驱动函数也就修改成功了。
WP:The write protect input, when tied to GND, allows normal write operations.When WP is tied high to Vcc, all write operations to the upper quandrant(8Kbits) of memory are inhibited. If left unconnected, WP is internally pulled down to GND.
3、关于读写流程
AT24C32的数据地址必须要先发高字节地址,再发低字节地址。现在寻址空间只有4096=2^12,所以两个字节完全可以确定。
一般地,设备地址R--0xA0;设备地址W--0xA1
读流程:发设备地址0xA0---> 送8位高地址---> 送8位低地址---->发设备地址0xA1--->读取--->NOACK--->停止
写流程:发设备地址0xA1--->送高8位地址----->送低8位地址---->写数据--->停止
阅读(7993) | 评论(0) | 转发(0) |