代码拉取完成,页面将自动刷新
同步操作将从 dk鲁晓东/STC15库 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "24c16.h"
//#define I2C_Speed 100000
#define I2C1_SLAVE_ADDRESS7 0xA0 //1010 000 x 参考P233 林立单片机教材
//#define I2C2_SLAVE_ADDRESS7 0xA4 //1010 010 x FOR 24c04
//#define I2C2_SLAVE_ADDRESS7 0xA8 //1010 100 x FOR 24c08
#define I2C_PageSize 256
u8 FRAM_ADDRESS;
//I2C向地址WriteAddr以u8* pBuffer为起始写NumByteToWrite个
u8 I2C_FRAM_BufferWrite( u16 WriteAddr,u8* pBuffer, u16 NumByteToWrite)
{ bit Op_ok;
u8 Addr = 0, count = 0; //Addr 是页地址(容量256),count是本页的地址
Addr = WriteAddr / I2C_PageSize;//根据绝对地址计算
count = WriteAddr % I2C_PageSize;
Addr = Addr << 1; //这些操作时形成地址帧SLA
Addr = Addr & 0x0F;
FRAM_ADDRESS = I2C1_SLAVE_ADDRESS7 | Addr;//当超过256自动切换到下一个页地址,
//根据时序第1个先写器件地址
Op_ok=I2C_SendByte(FRAM_ADDRESS);
if(!Op_ok){I2C_Stop(); return FALSE; }
//第2个写段内地址
Op_ok=I2C_SendByte(count);
if(!Op_ok){I2C_Stop(); return FALSE; }
// 下面则是n个数据
while(NumByteToWrite--)
{ Op_ok=I2C_SendByte(* pBuffer);
if(!Op_ok){I2C_Stop(); return FALSE; }
else pBuffer++;
}
I2C_Stop();
//注意:因为这里要等待EEPROM写完,可以采用查询或延时方式(10ms)
delay_ms(10);
return TRUE;
}
////////////////////////////////////////////////////////////////////////////////
//I2C从地址WriteAddr为起始读NumByteToWrite个存在u8* pBuffer为起始的数组里
u8 I2C_FRAM_BufferRead( u16 WriteAddr,u8* pBuffer, u16 NumByteToRead)
{ bit Op_ok=0;
u8 Addr = 0, count = 0;
Addr = WriteAddr / I2C_PageSize;
count = WriteAddr % I2C_PageSize;
Addr = Addr << 1;
Addr = Addr & 0x0F;
FRAM_ADDRESS = I2C1_SLAVE_ADDRESS7 | Addr;//有专门的格式
if (!I2C_Start()) return FALSE;
//根据时序第1个先写器件地址
Op_ok=I2C_SendByte(FRAM_ADDRESS);
if(!Op_ok){I2C_Stop(); return FALSE; }
//第2个写段内地址
Op_ok=I2C_SendByte(count);
if(!Op_ok){I2C_Stop(); return FALSE; }
Op_ok=I2C_SendByte(FRAM_ADDRESS | 0x01);
if(!Op_ok){I2C_Stop(); return FALSE; }
while(NumByteToRead)
{
*pBuffer = I2C_ReceiveByte();
if(NumByteToRead == 1)I2C_NoAck();
else I2C_Ack();
pBuffer++;
NumByteToRead--;
}
I2C_Stop();
return TRUE;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。