




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、按“页”写操作,“页”是指高位地址一样一组数据,对于24C01/02/04/08/16,24C01/02/04/08/16,一页数据为1616字节,一页指高四位地址一样的一组数据。STARTSTART 发送器件地址ackack 发送页首地址ackack 发送数据ack.ack. 发送数据ackack STOP STOP第1页/共20页当前单字节读操作,“当前”指的是前面进行过读操作,但是没有STOPSTOP,芯片内部“指针”指的字节即为“当前”字节。STARTSTART 发送器件地址(读)ackack 接收数据no ackno ackSTOPSTOP第2页/共20页随机单字节读操作STARTS
2、TART 发送器件地址(写)ackack 发送字节地址ackackSTARTSTART 发送器件地址(读)ackack 接收数据no ackno ackSTOPSTOP第3页/共20页当前连续字节读操作STARTSTART 发送器件地址(读)ackack 接收数据ackack 接收数据 ack.ack.接收数据( (最后字节)no ackno ackSTOPSTOP随机连续字节读操作STARTSTART 发送器件地址(写)ackack 发送字节首地址ackackSTARTSTART 发送器件地址(读) ack ack 接收数据ackack 接收数据ack.ack.接收数据( (最后字节) no
3、acknoackSTOPSTOP第4页/共20页编程实例 主发送程序设计 主接收程序设计 IIC中断程序 测试程序第5页/共20页第6页/共20页第7页/共20页#define WRDATA (1) /写操作#define POLLACK (2) /返回ACK操作#define RDDATA (3) /读数据操作#define SETRDADDR (4) /设置地址操作#define IICBUFSIZE 0 x20 /数据缓冲大小static U8 _iicDataIICBUFSIZE; /数据缓存static volatile int _iicdataCount; /数据计数 static
4、 volatile int _iicStatus; /数据状态static volatile int _iicMode; /操作状态static int _iicPt;第8页/共20页void Wr24c080(U32 slvaddr,U32 addr,U8 data) _iicMode = WRDATA; _iicPt = 0; _iicData0 = (U8)addr; _iicData1 = data; _iccDataCount = 2; rIICDS = slvAddr; /器件地址 0 xa0 rIICSTAT = 0 xf0; /主发送,开始 while(_iccDataCoun
5、t!=-1);第9页/共20页 _iccMode = POLLACK; while(1) rIICDS = slvAddr; _iicStatus = 0 x100; rIICSTAT = 0 xf0; /主发送,开始 rIICCON = 0 xaf; /Resumes IIC operation while(_iicStatus = 0 x100); if(!(_iicStatus&0 x1)break; /接收到ACK rIICSTAT = 0 xd0; /Stop MasTx condition rIICCON = 0 xaf; /Resumes IIC operation Delay(
6、1); /Wait until stop condtion is in effect第10页/共20页第11页/共20页第12页/共20页void Rd24C080(U32 slvAddr,U32 addr,U8 *data) _iicMode = SETRDADDR; /设置要从从机读取数据的从地址 _iicPt = 0; _iicData0 = (U8)addr; _iicDataCount = 1; /写从地址 rIICDS = slvAddr; rIICSTAT = 0 xf0; /MasTx,Start /Clearing the pending bit isnt needed be
7、cause the pending bit has been cleared. while(iicDataCount!=-1) ; _iicMode = RDDATA; /读数据模式 _iicPt = 0; _iicDataCount = 1; rIICDS = slvAddr; rIICSTAT = 0 xb0; /Master Rx,Start rIICCON = 0 xaf; /Resumes IIC operation. while(iicDataCount!=-1); *data = iicData1; 第13页/共20页void _irq IicInt(void) U32 iicS
8、t,i; rSRCPND = BIT_IIC;/清中断 rINTPND = BIT_IIC; iicSt = rIICSTAT; iicSt = rIICSTAT; /ICC状态寄存器 if(iicSt & 0 x8) /总线仲裁失败 if(iicSt & 0 x4) /从地址与ICCADD地址匹配 if(iicSt & 0 x2) /从地址为00000000b if(iicSt & 0 x1) /未收到ACK switch(_iicMode) case POLLACK: _iicStatus = iicSt; break; 第14页/共20页 case RDDATA: /从从机中读取数据 i
9、f(_iicDataCount-)=0) _iicDataiicPt+ = rIICDS; rIICSTAT = 0 x90; /Stop MasRx condition rIICCON = 0 xaf; /Resumes IIC operation. Delay(1); /Wait until stop condtion is in effect. /Too long time. /The pending bit will not be set after issuing stop condition. break; _iicDataiicPt+ = rIICDS; /The last da
10、ta has to be read with no ack. if(_iicDataCount)=0) rIICCON = 0 x2f; /Resumes IIC operation with NOACK. else rIICCON = 0 xaf; /Resumes IIC operation with ACK break; 第15页/共20页 case WRDATA: /写数据到从机 if(_iicDataCount-)=0) rIICSTAT = 0 xd0; /stop MasTx condition rIICCON = 0 xaf; /resumes IIC operation. D
11、elay(1); /wait until stop condtion is in effect. /The pending bit will not be set after issuing stop condition. break; rIICDS = _iicDataiicPt+; /iicData0 has dummy. for(i=0;i10;i+); /for setup time until rising edge of IICSCL rIICCON = 0 xaf; /resumes IIC operation. break; 第16页/共20页 case SETRDADDR:
12、/设置要从从机机读取数据的从机地址 /Uart_printf(S%d,_iicDataCount); if(_iicDataCount-)=0) break; /IIC operation is stopped because of IICCON4 rIICDS = _iicData_iicPt+; for(i=0;i10;i+); /for setup time until rising edge of IICSCL rIICCON = 0 xaf; /resumes IIC operation. break; default: break; 第17页/共20页void Main(void)
13、 unsigned int i,j,save_E,save_PE; static U8 data256; /用于存储AT24C08读出的数据 Uart_Printf(IIC Test(Interrupt)n); save_E = rGPECON;/保护现场 save_PE = rGPEUP; rGPEUP |= 0 xc000; /上拉禁止 rGPECON |= 0 xa00000; /GPE15:IICSDA,GPE14:IICSCL pISR_IIC = (unsigned)Iicint; rINTMSK &= (BIT_IIC) /使能应答, 时钟预分频选择IICCLK=PCLK/16, 中断使能, /发送时钟值 Tx clock = IICCLK/(IICCON3:0+1) rIICCON = (17) | (06) | (15) | (0 xf); rIICADD = 0 x10; /2410 从机地址 = 7:1 rIICSTAT = 0 x10; /IIC总线数据输出使能(Rx/Tx) 第18页/共20页 Uart_Printf(Write test data n); for(i=0;i256;i+) Wr24C02(0 xa0,(U8)i,i);/Line changed 0f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 伞具抗风性能提升创新创业项目商业计划书
- 新型抗寄生虫内服药品企业制定与实施新质生产力项目商业计划书
- BIPV可行性研究行业跨境出海项目商业计划书
- 指导学生进阶阅读高中思政教材的三个维度
- 五年级语文上册单元作文范文和妈妈说说心里话素材新人教版
- 小学语文“菜根谭”的智慧四溪壑易填人心难满素材语文版
- 中心医院“十五五”发展规划(2026 - 2030年)
- 三年级上册数学(人教版)预习复习课件-第七单元:第2课时 周 长
- 两个重要的极限习题练习
- 41认识人工智能课件-人教中图版高中信息技术必修一
- 2025-2030中国食物病原体检测行业市场发展趋势与前景展望战略分析研究报告
- 托里县铁厂沟镇工业固废垃圾填埋场项目环境影响报告书
- 金山区2024-2025学年六年级上学期期中考试数学试卷及答案(上海新教材)
- T/CUWA 60054-2023饮用水纳滤阻垢剂性能试验方法
- T/CHES 63-2022活塞式调流调压阀技术导则
- T/CCMA 0048-2017二手工程机械评估师
- 恒生笔试题及答案
- 传染病防治法试题(答案)
- 家居建材联盟协议书
- 2025-2031年中国垃圾处理市场竞争策略及行业投资潜力预测报告
- 《神经系统疾病概述》课件2
评论
0/150
提交评论