近来写了段24C512的驱动程序,简单测试了下没有问题。后来移植到另外一个项目下却出错了。
现在把一些要注意的地方回顾一下。
1、这是一个E2PROM芯片,存储器以页的方式来组织,因此不同于字节寻址的器件。
2、页大小为128字节,我误看成127字节,浪费不少时间。。
3、基于I2C接口,因此需要了解下I2C协议的一些基本概念,比如起始操作,结束操作,器件地址,读写控制。
4、器件地址不仅仅由A2A1A0决定,除此3位外之前还有一些固定的位。
5、在写操作时可以支持单字节写和页写方式。不过此两种操作所花费的时间差不多而写的内容大小有明显差异(1 VS 128),因此在数据量大的时候尽量采用页写方式。
6、不管是单字节写还是页写,每两次操作之间必须有一定时间间隔,因为E2PROM编程是需要时间的,ATMEL的资料显示此参数最大为10ms,而microchip的资料没有明确地讲到这一点,这让我走了不少弯路。
7、在页写时,注意所写的内容不要超越了页边界,如果超越了则需要以分页的方式来写。
8、在页写时,基址不是必须页对齐。
9、在页写时,写的字节数不是必须达到页尾。
10、在读数据时相对于写数据来说要简单写,可以任意地址读取任意大小的内容。 |