高级会员

- 积分
- 523
- 金钱
- 523
- 注册时间
- 2016-7-29
- 在线时间
- 116 小时
|
铁电存储FM系列主要分2种
1)IIC接口的FM24XX
2) SPI接口的FM25XX
实际测试我用的FM24CL16B-GTR这个型号,IIC接口的其他型号也类似
它的原理:使用的铁电电容方式存储
一:功能
1)存储空间,16Kbits=2KB=2048B,需要11根地址线寻址
其中高3位和从机地址共用,一共可以寻址8页数据,每页256B
2) 无写入数据时间等待,像AT24CXX系列,因为只能往位数据写0,要擦除0必须要等待1个固定时间【内部利用高压电擦除】,这个参数看下表
AT24C01: 8B/页,tWR≤5ms
AT24C02: 8B/页,tWR≤10ms
AT24C04/08/16: 16B/页,tWR≤10ms
AT24C32/64: 32B/页,tWR≤5ms
AT24C128/256: 64B/页,tWR≤5ms
3)读写寿命10^14次,大概是100万亿次,它这个读和写都会减少寿命
AT24XX:读不消耗,只有写消耗
4) 无页写入概念,可以任意写,像AT24CXX如果连续写数据时到达页边界,数据会自动到页开始覆盖写入
5)写单字节/多字节,注意是从机一直返回ACK, 主机在写完最后1个字节,收到ACK后,结束总线;
读单字节/多字节,注意是从机开始输出单字节/多字节数据开始,主机一直在返回ACK,在接收完最后1个字节时主机返回NACK时,结束总线;
大家可以对着手册详细看下读和写的时序图
二:程序
和AT24CXX编写程序类似,使用IO口模拟IIC,这里使用了2种IO口设置方式
1)推挽输出方式,和原子提供的方法类似;
#define SDA_IN() {GPIOC->CRL&=0X0FFFFFFF;GPIOC->CRL|=(u32)8<<28;}//浮空输入
这个在切换为输入口时,需要恢复到默认高电平,需要加IIC_SDA=1;这样可以设置为上拉输入,这样可以有效读取电平
#define SDA_OUT() {GPIOC->CRL&=0X0FFFFFFF;GPIOC->CRL|=(u32)3<<28;}//推挽输出
2)使用开漏输出方式;
在读数据时注意到需要IIC_SDA=1;设置为高阻状态也就是外部上拉的高电平状态,这样可以有效读取电平
3)主要实现读/写单字节,读/写多字节功能
4)程序分4个文件,FM24CXX.c, FM24CXX.h, myiic.c, myiic.h
FM24CXX V0.01测试.rar
(7.66 KB, 下载次数: 1)
|
|