金牌会员
 
- 积分
- 2706
- 金钱
- 2706
- 注册时间
- 2017-9-8
- 在线时间
- 470 小时
|
5金钱
现需要将1400字节的数据从缓冲区写入EEPROM 24C64中,我想问问能不能直接连续写,不使用页写方式
附上修改的函数
[mw_shl_code=c,true]u8 I2C_Write(u8 addr,u8 reg,u8 len,u8 *buf)
{
u8 i;
MPU_IIC_Start();
MPU_IIC_Send_Byte((addr<<1)|0);
if(MPU_IIC_Wait_Ack())
{
MPU_IIC_Stop();
return 1;
}
MPU_IIC_Send_Byte(reg);
MPU_IIC_Wait_Ack();
for(i=0;i<len;i++)
{
MPU_IIC_Send_Byte(buf);
if(MPU_IIC_Wait_Ack())
{
MPU_IIC_Stop();
return 1;
}
}
MPU_IIC_Stop();
return 0;
}[/mw_shl_code]
|
最佳答案
查看完整内容[请看2#楼]
1、这么大的数据,肯定页写啊,效率高嘛。EEPROM页写必须延时,主要是EEPROM写速度太慢了。如果需要经常读写,建议用同型号的FRAM,引脚和程序完全兼容,页写不需延时,速度杠杠的,而且写寿命长。
参考本人的源码,带页写。
2、模拟i2c不是慢不是慢不是慢!说慢的都是进误区多年了,只是占用cpu时间而已。
https://github.com/Prry/drivers-for-mcu
|