本帖最后由 zl2168 于 2016-10-10 22:06 编辑
实例50 非零地址读写AT24C02
由于E2PROM的半导体工艺特性,对E2PROM的写入时间需要5~10ms,但AT24Cxx系列串行E2PROM芯片内部设置了一个具有SRAM性质的输入缓冲器,称为页写缓冲器。CPU对该芯片写操作时,AT24Cxx系列芯片先将CPU输入的数据暂存在页写缓冲器内,然后,慢慢写入E2PROM中。因此,CPU对AT24Cxx系列E2PROM一次写入的字节数,受到该芯片页写缓冲器容量的限制。页写缓冲器的容量为16B,若CPU写入字节数超过芯片页写缓冲器容量,应在一页写完后,隔5~10ms重新启动一次写操作。
AT24Cxx页写缓冲的特性,需要补充说明的是,一次写入AT24Cxx字节数不但不能超过芯片页写缓冲器容量,而且,若不是从页写缓冲器页内零地址0000写起,一次写入地址不能超出页内最大地址1111。例如,若从页内地址0000写起,一次最多可写16字节;若从页内地址0010写起,一次最多只能写16-2=14字节。若要写16字节,超出页内地址1111,将会引起地址翻卷,导致出错。因此,本例16字节从AT24C025BH开始写起,须分两次写入。第1次写0x5b~0x5f单元,第2次写0x60~0x62单元,中间还必须有页写延时。
先Proteus仿真一下,确认有效。
以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版
书中电路和程序设计有详细说明,程序语句条条有注解。
|