AT24C08的IIC通信协议_第1页
AT24C08的IIC通信协议_第2页
AT24C08的IIC通信协议_第3页
AT24C08的IIC通信协议_第4页
AT24C08的IIC通信协议_第5页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、AT24C08AT24C08的的IICIIC通信协议通信协议1 1、单字节写操作、单字节写操作STARTSTART 发送器件地址发送器件地址ackack 发送字节地址发送字节地址ackack 发送数发送数据据ackack STOP STOP按按“页页”写操作,写操作,“页页”是指高位地址一样一组数据,对于是指高位地址一样一组数据,对于24C01/02/04/08/16,24C01/02/04/08/16,一页数据为一页数据为1616字节,一页指高四位地址一样的字节,一页指高四位地址一样的一组数据。一组数据。STARTSTART 发送器件地址发送器件地址ackack 发送页首地址发送页首地址ac

2、kack 发送数据发送数据ack.ack. 发送数据发送数据ackack STOP STOP当前单字节读操作,当前单字节读操作,“当前当前”指的是前面进行过读操作,但是没指的是前面进行过读操作,但是没有有STOPSTOP,芯片内部,芯片内部“指针指针”指的字节即为指的字节即为“当前当前”字节。字节。STARTSTART 发送器件地址(读)发送器件地址(读)ackack 接收数据接收数据no ackno ackSTOPSTOP随机单字节读操作随机单字节读操作STARTSTART 发送器件地址(写)发送器件地址(写)ackack 发送字节地址发送字节地址ackackSTARTSTART 发送器件地

3、址(读)发送器件地址(读)ackack 接收数据接收数据no ackno ackSTOPSTOP当前连续字节读操作当前连续字节读操作STARTSTART 发送器件地址(读)发送器件地址(读)ackack 接收数据接收数据ackack 接收数接收数据据 ack.ack.接收数据接收数据( (最后字节)最后字节)no ackno ackSTOPSTOP随机连续字节读操作随机连续字节读操作STARTSTART 发送器件地址(写)发送器件地址(写)ackack 发送字节首地址发送字节首地址ackackSTARTSTART 发送器件地址(读)发送器件地址(读) ack ack 接收数据接收数据ackac

4、k 接收接收数据数据ack.ack.接收数据接收数据( (最后字节)最后字节) noacknoackSTOPSTOP编程实例编程实例主发送程序设计主接收程序设计IIC中断程序测试程序#defineWRDATA(1)/写操作#definePOLLACK(2)/返回ACK操作#defineRDDATA(3)/读数据操作#defineSETRDADDR(4)/设置地址操作#defineIICBUFSIZE0 x20/数据缓冲大小staticU8_iicDataIICBUFSIZE;/数据缓存staticvolatileint_iicdataCount;/数据计数staticvolatileint_i

5、icStatus;/数据状态staticvolatileint_iicMode;/操作状态staticint_iicPt;voidWr24c080(U32slvaddr,U32addr,U8data)_iicMode=WRDATA;_iicPt=0;_iicData0=(U8)addr;_iicData1=data;_iccDataCount=2;rIICDS=slvAddr;/器件地址0 xa0rIICSTAT=0 xf0;/主发送,开始while(_iccDataCount!=-1);_iccMode=POLLACK;while(1)rIICDS=slvAddr;_iicStatus=0

6、x100;rIICSTAT=0 xf0;/主发送,开始rIICCON=0 xaf;/ResumesIICoperationwhile(_iicStatus=0 x100);if(!(_iicStatus&0 x1)break;/接收到ACKrIICSTAT=0 xd0;/StopMasTxconditionrIICCON=0 xaf;/ResumesIICoperationDelay(1);/WaituntilstopcondtionisineffectvoidRd24C080(U32slvAddr,U32addr,U8*data)_iicMode=SETRDADDR;/设置要从从机读

7、取数据的从地址_iicPt=0;_iicData0=(U8)addr;_iicDataCount=1;/写从地址rIICDS=slvAddr;rIICSTAT=0 xf0;/MasTx,Start/Clearingthependingbitisntneededbecausethependingbithasbeencleared.while(iicDataCount!=-1);_iicMode=RDDATA;/读数据模式_iicPt=0;_iicDataCount=1;rIICDS=slvAddr;rIICSTAT=0 xb0;/MasterRx,StartrIICCON=0 xaf;/Resu

8、mesIICoperation.while(iicDataCount!=-1);*data=iicData1;void_irqIicInt(void)U32iicSt,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)/从地址为00000000bif(iicSt&0 x1)/未收到ACKswitch(_iicMode)casePOLL

9、ACK:_iicStatus=iicSt;break;caseRDDATA:/从从机中读取数据if(_iicDataCount-)=0)_iicDataiicPt+=rIICDS;rIICSTAT=0 x90;/StopMasRxconditionrIICCON=0 xaf;/ResumesIICoperation.Delay(1);/Waituntilstopcondtionisineffect./Toolongtime./Thependingbitwillnotbesetafterissuingstopcondition.break;_iicDataiicPt+=rIICDS;/Thela

10、stdatahastobereadwithnoack.if(_iicDataCount)=0)rIICCON=0 x2f;/ResumesIICoperationwithNOACK.elserIICCON=0 xaf;/ResumesIICoperationwithACKbreak;caseWRDATA:/写数据到从机if(_iicDataCount-)=0)rIICSTAT=0 xd0;/stopMasTxconditionrIICCON=0 xaf;/resumesIICoperation.Delay(1);/waituntilstopcondtionisineffect./Thepend

11、ingbitwillnotbesetafterissuingstopcondition.break;rIICDS=_iicDataiicPt+;/iicData0hasdummy.for(i=0;i10;i+);/forsetuptimeuntilrisingedgeofIICSCLrIICCON=0 xaf;/resumesIICoperation.break;caseSETRDADDR:/设置要从从机机读取数据的从机地址/Uart_printf(S%d,_iicDataCount);if(_iicDataCount-)=0)break;/IICoperationisstoppedbecau

12、seofIICCON4rIICDS=_iicData_iicPt+;for(i=0;i10;i+);/forsetuptimeuntilrisingedgeofIICSCLrIICCON=0 xaf;/resumesIICoperation.break;default:break;voidMain(void)unsignedinti,j,save_E,save_PE;staticU8data256;/用于存储AT24C08读出的数据Uart_Printf(IICTest(Interrupt)n);save_E=rGPECON;/保护现场save_PE=rGPEUP;rGPEUP|=0 xc00

13、0;/上拉禁止rGPECON|=0 xa00000;/GPE15:IICSDA,GPE14:IICSCLpISR_IIC=(unsigned)Iicint;rINTMSK&=(BIT_IIC)/使能应答,时钟预分频选择IICCLK=PCLK/16,中断使能,/发送时钟值Txclock=IICCLK/(IICCON3:0+1)rIICCON=(17)|(06)|(15)|(0 xf);rIICADD=0 x10;/2410从机地址=7:1rIICSTAT=0 x10;/IIC总线数据输出使能(Rx/Tx)Uart_Printf(Writetestdatan);for(i=0;i256;i+)Wr2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论