您的位置 首页 软件

LPC2200的I2C从形式

最近使用LPC2214的I2C总线,一开始使用PHILIPS感觉非常的不方便,因为他要从其状态中读出数值进行判断,这样做无形中要增加软件难…

最近运用LPC2214的I2C总线,一开端运用PHILIPS感觉十分的不便利,由于他要从其状况中读出数值进行判别,这样做无形中要添加软件难度,可是其寄存器确是十分的简略,只要一个要细心的看,那便是I2CONSET这一个。

关于从形式,AA当然要设置为1,I2ADR也一定要设置,这是主器材寻址的地址;在此设为0x98,最终一位表明播送形式,依据状况要不要置一;这儿还有一个重要的是VPBDIV的设置,留意VPBDIV与I2SCLH、I2SCLL这两寄存器要匹配,不然I2C总线则可能不作业,这是比较简单犯错误的当地,下面是我的一些程序与设置,期望做个参阅,也期望我今后用起来也便利,由于假如长期不必,总是要再查一次材料,那样糟蹋许多时刻

一、初始化部分

void I2cInit()
{

VPBDIV=0x01;

//在前面要有上面这句
I2cFlag=0x00;
I2cNum=0x00;
I2cBuf=databuf; //databuf是一个要存贮数据的数组
I2cSla=LPC934CONGADD; //No Use.
I2ADR=LPC2000CONGADD;
I2SCLH=0xa0;
I2SCLL=0xa0;
I2CONSET=0x44; //使能I2C,
VICIntSelect=0x00000000;
VICVectCntl2=0x00000029;
VICVectAddr2=(uint32)IRQ_I2C;
VICIntEnable=0x00004210; //中止部分。
}

二、中止程序部分

void IRQ_I2C(void) __irq
{
unchar sta;
sta=I2STAT; //查询状况。

switch(sta)
{
case 0x60:
case 0x68:
case 0x70:
case 0x78: //I2C开端,把读数据的数组等初始化。
I2cBuf=databuf;
I2cNum=0x00;
I2cFlag=0;
break;
case 0x80:
case 0x88:
case 0x90:
case 0x98:
*I2cBuf++=I2DAT; //这几种状况是读数据,不管播送仍是寻址。
I2cNum++;
break;
case 0xa0:
I2cFlag=1; //完毕,设置I2C成功接纳标志。
break;

}
I2CONCLR=0x28;
VICVectAddr=0x00; //清SI,清中止。
}

以上便是我把LPC2214做为从机的设置。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/ruanjian/274393.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部