首页 I2C总线通信实验

I2C总线通信实验

举报
开通vip

I2C总线通信实验I2C总线通信实验一.实验目的掌握HCS12单片与E2PPROM设备之间的通信熟悉相关的寄存器,使用C语言编程。二.实验任务从单片机中发送一个数据到AT24C02中,然后再让单片机从AT24C02中读取数据,再把数据显示到数码管中。三.AT24C02电路图A0=0,A1=0,A2=0;可以知道AT24C02的从设备写地址为10100000(0xa0)读设备地址为10100001(Oxal);四.寄存器的简单介绍寄存器访问方式I2C总线地址寄存器(IBAD)读/写I2C总线分频寄存器(IBFD)读/写...

I2C总线通信实验
I2C总线通信实验一.实验目的掌握HCS12单片与E2PPROM设备之间的通信熟悉相关的寄存器,使用C语言编程。二.实验任务从单片机中发送一个数据到AT24C02中,然后再让单片机从AT24C02中读取数据,再把数据显示到数码管中。三.AT24C02电路图A0=0,A1=0,A2=0;可以知道AT24C02的从设备写地址为10100000(0xa0)读设备地址为10100001(Oxal);四.寄存器的简单介绍寄存器访问方式I2C总线地址寄存器(IBAD)读/写I2C总线分频寄存器(IBFD)读/写I2C总线控制寄存器(IBCR)读/写I2C总线状态寄存器(IBSR)读/写I2C总线数据寄存器(IBDR)读/写由于涉及的寄存内容较多,请读者自己查阅数据手册。五.实验代码本实验的 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图实验代码如下#include#include"derivative.h"voidIICInit(void){IBFD=0x68;//总线频率:8MHz,IIC总线频率:62.5KHz,SDA保持时间:2.45usIBAD=0xF0;IBCR=0x88;//D7-D0位是MCU作为从机时的地址,最低位不使用//不发送应答信号//接收模式//从机模式//禁止IIC中断//能IIC模块TOC\o"1-5"\h\z//SendSignal:在IIC总线上发送起停信号*//功能:根据需要产生开始或停止信号*〃参数:Signal=S(Start),产生开始信号;Signal='O'(Over),产生停止信号*//返回:无*//*voidSendSignal(INT8USignal){if(Signal=='S')IBCR1=0x20;〃主机模式选择位MST由0变为1,可以产生开始信号elseif(Signal=='O')IBCR&=~0x20;//主机模式选择位MST由1变为0,可以产生停止信号}TOC\o"1-5"\h\z//Wait等待应答或一个字节数据的传送完成*〃功能:在时限内,循环 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 接收应答标志位,或传送完成标志位,判断MCU是否接收到应*//答信号或一个字节是否已在总线上传送完毕*〃参数:x='A'(Ack),等待应答;x='T'(Transmission),等待一个字节数据传输完成*//返回:0:收到应答信号或一个字节传送完毕;1:未收到应答信号或一个字节没传送完*//*INT8UWait(INT8Ux){INT8UErrTime,i;ErrTime=255;//定义查询超时时限for(i=0;i=ErrTime)SCISend1('f');return1;//超时,没有收到应答信号或发送完一个字节}//IICread1:从从机读1个字节数据*//功能:从从机读1个字节数据//参数:TOC\o"1-5"\h\z//(1)DeviceAddr:设备地址*//(2)AccessAddr:访问地址*//(3)Data:带回收到的一个字节数据*//返回:为0,成功读一个字节;为1,读一个字节失败*〃内部调用:SendSignal,Wait*//通知从机改为发送数据//等待一个字节数据传送完成//没有传送成功,读一个字节失败//等待从机应答信号//没有等到应答信号,读一个字节失败//TX=O,MCU设置为接收模式//读出IBDR,准备接收数据//*INT8UIICread1(INT8UDeviceAddr,INT8UAccessAddr,INT8U*Data){IBCR|=0x10;SendSignal('S');//TX=1,MCU设置为发送模式//发送开始信号IBDR=DeviceAddr&0xfe;//发送设备地址,并通知从机接收数据if(Wait('T'))return1;if(Wait('A'))return1;IBDR=AccessAddr;if(Wait('T'))return1;if(Wait('A'))return1;IBCR|=0x04;//等待一个字节数据传送完成//没有传送成功,读一个字节失败//等待从机应答信号//没有等到应答信号,读一个字节失败//发送访问地址//等待一个字节数据传送完成//没有传送成功,读一个字节失败//等待从机应答信号//没有等到应答信号,读一个字节失败//主机模式下,RSTA位置1,产生重复开始信号IBDR=DeviceAddr|0x01;if(Wait('T'))return1;if(Wait('A'))return1;IBCR&=0xef;*Data=IBDR;if(Wait('T'))return1;SendSignal('O');*Data=IBDR;return0;}//等待从机应答信号//没有等到应答信号,读一个字节失败//发送停止信号//读出接收到的一个数据//正确接收到一个字节数据TOC\o"1-5"\h\z//IICwrite1:向从机写1个字节数据*//功能:向从机写1个字节数据*//参数:*//(1)DeviceAddr:设备地址*//(2)AccessAddr:访问地址*//(3)Data:要发给从机的1个字节数据*//返回:为0,成功写一个字节;为1,写一个字节失败*//内部调用:Start,SendByte,WaitAck,Stop*//INT8UIICwrite1(INT8UDeviceAddr,INT8UAccessAddr,INT8UData){IBCR|=0x10;SendSignal('S');IBDR=DeviceAddr&0xfe;if(Wait('T'))return1;if(Wait('A'))return1;IBDR=AccessAddr;if(Wait('T'))return1;if(Wait('A'))return1;IBDR=Data;if(Wait('T'))return1;if(Wait('A'))return1;SendSignal('O');return0;//TX=1,MCU设置为发送模式//发送开始信号//发送设备地址,并通知从机接收数据//等待一个字节数据传送完成//没有传送成功,写一个字节失败//等待从机应答信号//没有等到应答信号,写一个字节失败//发送访问地址//等待一个字节数据传送完成//没有传送成功,写一个字节失败//等待从机应答信号//没有等到应答信号,写一个字节失败//写数据//等待一个字节数据传送完成//没有传送成功,写一个字节失败//等待从机应答信号//没有等到应答信号,写一个字节失败//发送停止信号intWriteData=OxfO;〃8位LED,高四位灭,低四位亮。intReadData;//主 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数intmain(void){IICInit();while(IICwrite1(0xA0,0x02,WriteData));while(IICread1(0xA0,0x02,ReadData));DDRB=0xff;PORTB=ReadData;}六.小结HCS12DG128单片机I2C的编程较为简单,只要弄懂数据的传输原理,和懂得寄存器的设置,就可以轻松学会I2C。
本文档为【I2C总线通信实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_769254
暂无简介~
格式:doc
大小:63KB
软件:Word
页数:7
分类:
上传时间:2018-05-18
浏览量:0