AT24C64驱动与FM3130驱动应用区别记录
1.由于都是敏捷开发,看文档的时间都不给(自己精力也有限)先写个纪事文。========场景案例1=============
2.铁电成本贵,换成AT24C64,驱动调整完后,产品初始化异常。
仿真调试确认,原本铁电数据读写简单粗暴。可以连续写,连续读,无分页的感觉。
换成AT24C64后,读完A区数据,接着读B区数据,换页时间不可忽视。使用者感连续读写,AT24C64就敢报紧接这的数据读写异常。数据结构必须按照片子的页大小,以及分页延时规则。
========场景案例2===========
3.另一个产品配置,AT24C16 + 8KB的铁电。成本优化,简单浓缩铁电的数据结构,将AT24C16的数据,拼接到铁电后面存取。
仿真发现,一次性读大于128B的铁电数据,后面的数据错误(随机值)。
直接一个函数,分成两个函数问题现象消失。
ReadEE( AddrIniDevice, 64, SETTING_BUF1 );
ReadEE( AddrIniDevice+64, 64, &SETTING_BUF1 );
注:BUFF是U16类型,64个元素实际上是128个BYTE内容。
4.查看老项目铁电的初始化发现,铁电初始化有其他运行性能配置,问老工程师,当初读写大于128字节的数据体会出现异常。结合第三条的验证结果,先继续敏捷开发往下走了。
有与时间关系,先写了一点纪事文。有使用铁电的老铁们,欢迎跟帖补充完善。
书到用时方恨少,2014年去参加TI研讨会,当时介绍铁电的时候没怎么听。铁电的IC,数据存储的性能还是很明显的,如果要玩真性能,那就得配合更多的使用场景、性能组合来做试验了。
---------------------下面是某老平台铁电的初始化函数-------------------------
有点老,中途随性维护,到我这还没时间看文档消化,仅供参考。
void InitI2C(void)
{
unsigned char dataread;
// WP = 1;//TD
/*-------------3130----------------------------
//清除低压复位
dataread=Read_reg(0x00);
Write_reg(0x00,dataread&0x7f);
//TST置零
dataread=Read_reg(0x0E);
Write_reg(0x0E,dataread&0xfe);
//禁止充电
Charge_fm(0); //根据需要调整
//写保护禁止
Pro_mem(0); //据需要修改
//振荡器使能
dataread=Read_reg(0x01); //启动时钟
Write_reg(0x01,dataread&0x78);
*/
/*-------------PCF8563---td0407-------------------*/
//normal mode run POR disabled
dataread=Read_reg(0x00);
Write_reg(0x00,dataread&0x00);
//AIE disabled
dataread=Read_reg(0x01);
Write_reg(0x01,dataread&0x18);
//clockout disabled
dataread=Read_reg(0x0D);
Write_reg(0x0D,dataread&0x7F);
//振荡器使能
dataread=Read_reg(0x0E); //启动时钟
Write_reg(0x0E,dataread&0x7F);
/*-------------PCF8563---td0407-------------------*/
} 一次性读大于128B的铁电数据,后面的数据错误(随机值)
、、、、
程序里面应答要处理,铁电速度快,不需要等待应答。 hqgboy 发表于 2021-8-11 08:40
一次性读大于128B的铁电数据,后面的数据错误(随机值)
、、、、
程序里面应答要处理,铁电速度快,不需 ...
还记得去年,我测试发现SOE记录非常影响装置性能,发现当时还是传统100KHZ的节奏驱动铁电,太浪费了。常规读写操作还参杂AT24系列的中庸delay。真不应该
页:
[1]