LPC2200的I2C从模式
对于从模式,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做为从机的设置。
LPC2200I2C从模 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)