




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 惠州消防知识培训班课件地址
- 情绪世界课件
- 情感升华课件
- 销售管理工作方案
- 恶性心律失常的识别课件
- “绿化环境,播种绿色”植树节活动方案
- 老年趣味运动会活动策划方案
- 孤儿学校初中语文随班就读的工作方案
- 护士理论考试题及答案
- 扬州电动车考试试题及答案
- 【《惠东农商银行个人信贷业务发展现状及存在的问题和策略分析》15000字】
- 光伏项目开发培训课件
- 职业年金政策讲解
- 智联猎头企业薪酬调研白皮书-2025年年中盘点
- 基孔肯雅热、登革热等重点虫媒传染病防控技术试题
- 消防设施操作员(监控方向)中级模拟考试题及答案
- 2025年事业单位教师考试公共基础知识试题(含答案)
- 2025年可靠性工程师MTBF计算强化练习
- 2025秋季学期中小学学校学生校服采购工作方案
- 乳房肿块鉴别诊断
- 普速铁路信号维护规则业务管理
评论
0/150
提交评论