当前位置:首页 > 单片机 > 单片机
[导读]记录AT24C128 eeprom的多字节读写#define_EEPROM_DEBUG_LEVEL0#if_EEPROM_DEBUG_LEVEL==1#defineEEPROM_DEBUG(fmt,args...)do{\\printf(fmt,##args);\\}while(0)#elif_EEPROM_DEBUG_LEVEL==2#defineEEPROM_DEBUG(fmt,a

记录AT24C128 eeprom的多字节读写

#define_EEPROM_DEBUG_LEVEL0

#if_EEPROM_DEBUG_LEVEL==1

#defineEEPROM_DEBUG(fmt,args...)do{

printf(fmt,##args);

}while(0)

#elif_EEPROM_DEBUG_LEVEL==2

#defineEEPROM_DEBUG(fmt,args...)do{

printf("%s:line:%d->",__FUNCTION__,__LINE__);

printf(fmt,##args);

}while(0)

#elif_EEPROM_DEBUG_LEVEL==0

#defineEEPROM_DEBUG(fmt,args...)

#else

#defineEEPROM_DEBUG(fmt,args...)

#endif



[cpp]view plaincopy

#defineAT24C128_PAGE_SIZE64

#defineAT24C128_PAGE_COUNT256

#defineAT24C128_BYTE_SIZE16*1024

#defineAT24C128_WADDR0xA0

#defineAT24C128_RADDR0xA1


写时序:




///

////wrtieeeprombypage

////

intwriteE2promByPage(u32startaddr,void*data,u32len){

intretry=0,pageCnt=0,i=0,j=0,k=0;

u32temp1=0,temp2=0,temp3=0,start=0,startPage;

u8*pBuf;

pBuf=(u8*)data;

temp1=startaddr%AT24C128_PAGE_SIZE;

temp2=len%AT24C128_PAGE_SIZE;

temp3=len/AT24C128_PAGE_SIZE;

startPage=startaddr/AT24C128_PAGE_SIZE;

if(temp1==0){

if(temp2!=0)pageCnt=temp3+2;

elsepageCnt=temp3+1;

}

else

{

if(temp2!=0)pageCnt=temp3+3;

elsepageCnt=temp3+2;

}

if(pageCnt>AT24C128_PAGE_COUNT)return-1;

EEPROM_DEBUG("pageCnt%drn",pageCnt);

for(i=0;i

//startsignal!!!

while(SCCB_Start()==0){

if(retry>100){

EEPROM_DEBUG("startfailrn");

return-1;

}

retry++;

}

if(i==0){

start=startaddr;

temp1=AT24C128_PAGE_SIZE-startaddr;

}

else{

start=(startPage+i)*AT24C128_PAGE_SIZE;

temp1=AT24C128_PAGE_SIZE;

}

EEPROM_DEBUG("start:%drn",start);

EEPROM_DEBUG("temp1:%drn",temp1);

//writeslaveaddr

SCCB_writeByte(AT24C128_WADDR);

if(SCCB_Wait_Ack()==0){

EEPROM_DEBUG("writeaddrfailrn");

SCCB_Stop();

goto_end;

}

//writepagehighaddr

SCCB_writeByte(start/256);

if(SCCB_Wait_Ack()==0){

EEPROM_DEBUG("writehighpageaddrfailrn");

SCCB_Stop();

goto_end;

}

//writepagelowaddr

SCCB_writeByte(start%256);

if(SCCB_Wait_Ack()==0){

EEPROM_DEBUG("writelowpageaddrfailrn");

SCCB_Stop();

goto_end;

}

//writedate

for(j=0;j

SCCB_writeByte(pBuf[k]);

//writeoperationneedslaveresponseack

if(SCCB_Wait_Ack()==0){

EEPROM_DEBUG("writedatafailrn");

SCCB_Stop();

goto_end;

}

else{

k++;

}

if(k==len){

SCCB_Stop();

goto_end;

}

}

EEPROM_DEBUG("page%dwritesuccessrn",i);

//stop

SCCB_Stop();

SCCB_Delay(SCL_TIME_US);

}

_end:

return k;

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

伦敦2024年10月24日 /美通社/ -- 根据最新的GSMA "2024年移动互联网连接状况" 报告,全球43%的人口(相当于34.5亿人)...

关键字: 移动互联网 GSMA BSP 读写

深圳2024年8月22日 /美通社/ -- 对于消费级SSD来说,性能一直是用户最为关注的重要指标之一。高性能不仅是提升数据处理速度的关键,更是支撑AI模型训练、大数据分析及高负载应用的基础,尤其是在AI应用加速落地背景...

关键字: SSD 测试 读写 IO

北京2023年9月5日 /美通社/ -- 浪潮云海在2023年5月正式发布新一代InCloud Rail G7系列超融合一体机,其内置的InCloud dSAN超融合存储组件,基于新一代的硬件平台设计,支持全栈RDMA协...

关键字: IO 读写 软件 测试

北京2023年2月23日 /美通社/ -- 晴空万里、群星璀璨的丽江高美古,在纳西语中的释义是"天气好、星星多、离天最近的地方"。这里的年平均晴天超200天,视宁度达到世界优良台址的水平,大气洁净透明...

关键字: 分布式 望远镜 节点 读写

深圳2022年12月26日 /美通社/ -- 为更好地满足超大规模的数据应用,忆联发布数据中心级NVMe SSD -- UH711a以及UH711a E3.S形态。该系列产品使用自研控制器与长江存储128L 3...

关键字: SSD 数据中心 IO 读写

深圳2022年11月30日 /美通社/ -- 不久前,专业存储研究机构Forward Insights发布了新版《中国固态硬盘市场》报告,本次报告包含了其对2021年中国固态硬盘市场份额统计分析。在中国Clie...

关键字: CLIENT OEM SSD 读写

深圳2022年11月11日 /美通社/ -- 2022年11月9日,由百易传媒(DOIT)主办,以"数据觉醒新时代"为主题的2022中国数据与存储峰会在北京举行,并重磅发布了《年度评选之百易风云榜单》...

关键字: 固态硬盘 读写 SSD PHOENIX

(全球TMT2022年10月31日讯)10月26日,由IDC中国主办的2022 第七届IDC中国数字化转型年度盛典在北京举行。忆联携旗下存储产品及解决方案首度亮相本次IDC DX年度盛典。忆联分享了在存储领域的最新技术...

关键字: IDC 数字化 读写 固态硬盘

深圳2022年10月28日 /美通社/ -- 10月26日,由IDC中国主办的2022 第七届IDC中国数字化转型年度盛典在北京盛大举行,IDC资深研究团队、与会企业家以及业界专家学者们汇聚一堂,共同探讨数字化...

关键字: IDC 数字化 数据存储 读写

深圳2022年9月14日 /美通社/ -- 近日,忆联旗下企业级固态硬盘UH811a/UH831a系列经过微软中国技术中心的各项严格测试,已正式通过了微软WHQL认证。标志着忆联UH811a/UH831a系列与Windo...

关键字: 微软 硬件 SSD 读写
关闭