LPC2200的I2C从模式

本文介绍LPC2214微控制器I2C总线从模式配置方法,包括寄存器设置及中断处理程序。重点讨论了VPBDIV寄存器与I2SCLH、I2SCLL寄存器的匹配问题,并提供了一个初始化函数和中断服务程序的示例。

电子技术 2008-07-28 17:04:39 阅读257 评论0   字号: 订阅

转载~~~~~~~~~~~~~~~~~~~~~~地址http://david4383.blog.163.com/blog/static/336603620086285439303/

 

 

        最近使用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做为从机的设置。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值