首页 基于MSP的IC模拟总线程序讲解

基于MSP的IC模拟总线程序讲解

举报
开通vip

基于MSP的IC模拟总线程序讲解Lastrevisiondate:13December2020.基于MSP的IC模拟总线程序讲解程序和流程图:voidInit_IIC(void);voidEEPROM_ByteWrite(unsignedcharnAddr,unsignedcharnVal);unsignedcharEEPROM_RandomRead(unsignedcharnAddr);unsignedcharEEPROM_CurrentAddressRead(void);voidEEPROM_AckPolling(void);voidInit...

基于MSP的IC模拟总线程序讲解
Lastrevisiondate:13December2020.基于MSP的IC模拟总线程序讲解程序和 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图:voidInit_IIC(void);voidEEPROM_ByteWrite(unsignedcharnAddr,unsignedcharnVal);unsignedcharEEPROM_RandomRead(unsignedcharnAddr);unsignedcharEEPROM_CurrentAddressRead(void);voidEEPROM_AckPolling(void);voidInit_CLK(void);voidInit_IIC_Port(void);/*******************************************IICforAT24c16ORAT24CXXX系列只要控制好IICRMIICSTPIICSTT其硬件会自动完成SCLSDA的一系列时序只要注意各个发送与接收的控制标志位.******************************************/#include<>#include""volatileunsignedcharData[6];voidmain(void){2C9A2C0A0A2C2C2C2C01A2C2C2C2C{2Cwhile(I2CDCTL&I2CBUSY);2C2C2C2C2C2C2C2C2C{switch(I2CIV){caseI2CIV_AL:{7F/*************************************************************文件名:430f2c*整体描述:MSP430F169单片机硬件IIC软件,字节方式,主方式*IIC接口:=SCL,=SDA;(开漏输出)*相应寄存器:地址寄存器I2COA用于存放自身从地址(从方式时才有用)*地址寄存器I2CSA用于存放外围的从机地址(主方式时才有用)*控制寄存器U0CTL硬件I2C的设置、使能、模式等。发送控制寄存器I2CTCTL*数据控制寄存器I2CDCTL指示I2C总线的状态**U0CTL--RXDMAEN,TXDMAEN,I2C,XA,LISREN,SYNC,MST,I2CEN*00100111(0x17)*I2CTCTL--I2CWORD,I2CRM,I2CSSEL1,I2XSSEL0,I2CTRX,I2CSTB,I2CSTP,I2CSTT*0110*0***作者:jy*状态:通过************************************************************/#include<>#include""#defineWR24C512#defineLED1_1(0x20)/*PortOutput->LED1*/#defineLED1_0(0xdf)#defineSDA_1P3OUT|=BIT1//串行数据线,SDA=1#defineSDA_0P3OUT&=~BIT1//SDA=0#defineSCL_1P3OUT|=BIT3//串行时钟线,SCL=1#defineSCL_0P3OUT&=~BIT3//SCL=0#defineSDADIR_INP3DIR&=~BIT1//SDA,I/O口为输入#defineSDADIR_OUTP3DIR|=BIT1//I/0口为输出#defineSDA_IN((P3IN>>1)&0x01)//ReadSDA#defineSCLDIR_INP3DIR&=~BIT3//SCL,I/O口为输入#defineSCLDIR_OUTP3DIR|=BIT3//I/0口为输出#defineSCL_IN((P3IN>>3)&0x01)//ReadSCL#ifdefWR24C512staticintnumi=0;//DataPointer#elsestaticintnumj=0;//DataPointer#endif#defineI2CSLA0x50/*----------------------------------------------------------功能描述:检查总线是否空闲--子程序状况:09-23调试通过------------------------------------------------------------*/voidI2c_Idle_Check(void){while(I2CBUSY&I2CDCTL);//I2Cready在空闲状态:0,空闲;1:忙}voidDelayTime10us(unsignedcharn){unsignedchari;while(n--)//5cyclesfor(i=0;i<10;i++);//8mhz110:771+4towhile}/*-----------------------------------------------------------功能描述:发送数据:用于向总线发送数据--子程序状况:09-23调试通过-------------------------------------------------------------*/voidI2cBusSendByte(unsignedcharc){while((I2CIFG&TXRDYIFG)!=TXRDYIFG);//检测发送准备I2CDRB=c;//写发送寄存器}/*------------------MSP430I2C写数据09-23调试通过---------------------*//*----------------------------------------------------------功能描述: 申请 关于撤销行政处分的申请关于工程延期监理费的申请报告关于减免管理费的申请关于减租申请书的范文关于解除警告处分的申请 总线:进行I2C总线的初始化-发送起始信号--子程序状况:09-23调试通过------------------------------------------------------------*/voidI2C_Send(unsignedcharndatNum){//注意:通讯结束,I2CMST自动清零,再次通讯必须重新置位P3OUT=0x00;//clearP3outputregisterP3SEL=0x0A;//=SDA,=SCL,SelectI2Cpins,SetupI2CmoduleU0CTL|=(I2C+SYNC);//selectI2Cmode;XA=0,7bit_addresing;U0CTL&=~I2CEN;//i2c功能使能无效//I2CTCTL=I2CRM+I2CSSEL_2;//x(x>256)字节模式,newstart测试使用//选择方式I2CRM=0,最终用户使用I2CTCTL=I2CSSEL_2;I2CNDAT=2+ndatNum;//最终用户使用,2byte地址+128byte数据I2CPSC=2;//setsclI2CIFG=0;I2CSA=0x50;//SlaveaddressofAt24c512U0CTL|=I2CEN;//enableI2Cmodule,7bitaddr,mastermode08-26U0CTL|=MST;while(I2CBUSY&I2CDCTL);//I2Cready在空闲状态:0,空闲;1:忙I2CTCTL|=I2CTRX+I2CSTT+I2CSTP;//I2CRM=0,启动总线,发送从器件地址while((I2CIFG&NACKIFG)==0x02);//ack为低电平,等待地址应答位,判断无应答NACKIFG=1}/*------------------------------------------------------------------子程标号:I2cWrSlaSubAddr--子程功能:主机发送从机的子地址--入口参数:unsignedcharsla,unsignedintsuba--参数说明:子地址--子程序状况:09-23调试通过--说明:完成地址信息的定位,先确定顺序读写的起始地址-------------------------------------------------------------------*/unsignedcharI2cSendSubAddr(unsignedintsuba,unsignedcharndatNum){unsignedcharHi_suba,Lo_suba;I2C_Send(ndatNum);//启动总线,等待地址应答位Hi_suba=(unsignedchar)(suba>>8);Lo_suba=(unsignedchar)(suba&0x00ff);I2cBusSendByte(Hi_suba);//发送器件子地址while((I2CIFG&0x02)==NACKIFG)//等待数据的应答{I2CTCTL|=I2CSTP;//无应答,结束总线return(0);}I2cBusSendByte(Lo_suba);//发送器件子地址while((I2CIFG&0x02)==0x02)//等待数据的应答{I2CTCTL|=I2CSTP;//无应答,结束总线return(0);}return(1);}/*--------------------------------------------------------------------子程标号:I2cWriteStr(用户函数)--子程功能:向I2C从器件写入数据--入口参数:unsignedchar*ps,unsignedcharnum--参数说明:写入数据的地址指针,数据个数--子程序状况:09-23调试通过--说明:I2C读取数据---------------------------------------------------------------------*/unsignedcharI2cSendStr(constunsignedchar*ps,unsignedcharnum){//unsignedchari;unsignedchartempnum;tempnum=num-1;for(numi=0;numi>8);Lo_suba=(unsignedchar)(suba&0x00ff);while(I2CBUSY&I2CDCTL);//I2Cready在空闲状态:0,空闲;1:忙I2CTCTL|=I2CTRX+I2CSTT+I2CSTP;//I2CRM=0,启动总线,发送从器件地址while((I2CIFG&NACKIFG)==0x02)//ack为低电平,等待地址应答位,判断无应答NACKIFG=1{I2CTCTL|=I2CSTP;//结束总线}I2cBusSendByte(Hi_suba);//发送器件子地址while((I2CIFG&NACKIFG)==0x02)//ack为低电平,等待地址应答位,判断无应答NACKIFG=1{I2CTCTL|=I2CSTP;//结束总线}I2cBusSendByte(Lo_suba);//发送器件子地址while((I2CIFG&NACKIFG)==0x02)//ack为低电平,等待地址应答位,判断无应答NACKIFG=1{I2CTCTL|=I2CSTP;//结束总线}DelayTime10us(250);DelayTime10us(250);DelayTime10us(250);DelayTime10us(250);}/*-----------------------------------------------------------------------子程标号:I2cSlaSubAddr--子程功能:主器件接收初始化--入口参数:无--子程序状况:--说明:-----------------------------------------------------------------------*/voidInitI2cRece(unsignedcharnum){P3OUT=0x00;//clearP3outputregisterP3SEL=0x0A;//=SDA,=SCL,SelectI2Cpins,SetupI2CmoduleU0CTL|=I2C+SYNC;//selectI2Cmode;XA=0,7bit_addresing;U0CTL&=~I2CEN;//i2c功能使能无效//I2CTCTL=I2CRM+I2CSSEL_2;//I2CRM=1x(x>256)字节模式I2CTCTL=I2CSSEL_2;//I2CRM=0I2CNDAT=num;//1个字节I2CPSC=1;//setscl//I2CSCLH=0x01;//HighperiodofSCL//I2CSCLL=0x01;//LowperiodofSCLI2CIFG=0;I2CSA=0x50;//SlaveaddressofAt24c512I2CTCTL&=~I2CTRX;U0CTL|=I2CEN;//enableI2Cmodule,7bitaddr,mastermode08-26}/*-----------------------------------------------------------------功能描述:读一个字节--子程序状况:--------------------------------------------------------------------*/unsignedcharI2cReceSlaByte(void){unsignedcharch;DelayTime10us(15);U0CTL|=MST;//主模式while(I2CBUSY&I2CDCTL);//I2Cready在空闲状态:0,空闲;1:忙I2CTCTL|=I2CSTT+I2CSTP;//I2CRM=0;Receive,ST,SP(clearsMST)while((I2CIFG&RXRDYIFG)!=RXRDYIFG);//等待地址应答位,判断ch=I2CDRB;return(ch);}/*-----------------------------------------------------------------功能描述:连续读数据--子程序状况:--------------------------------------------------------------------*/voidI2cReceSlaStr(unsignedcharnum){unsignedchari;DelayTime10us(15);U0CTL|=MST;//主模式while(I2CBUSY&I2CDCTL);//I2Cready在空闲状态:0,空闲;1:忙I2CTCTL|=I2CSTT+I2CSTP;//I2CRM=0;Receive,ST,SP(clearsMST)for(i=0;i
本文档为【基于MSP的IC模拟总线程序讲解】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
韶松
人民教师
格式:doc
大小:3MB
软件:Word
页数:0
分类:企业经营
上传时间:2021-09-18
浏览量:0