新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > LPC2200的I2C從模式

LPC2200的I2C從模式

作者: 時間:2016-11-11 來源:網絡 收藏
最近使用LPC2214的I2C總線,一開始使用PHILIPS感覺非常的不方便,因為他要從其狀態(tài)中讀出數(shù)值進行判斷,這樣做無形中要增加軟件難度,但是其寄存器確是非常的簡單,只有一個要仔細的看,那就是I2CONSET這一個。

對于從模式,AA當然要設置為1,I2ADR也一定要設置,這是主器件尋址的地址;在此設為0x98,最后一位表示廣播模式,根據情況要不要置一;這里還有一個重要的是VPBDIV的設置,注意VPBDIV與I2SCLH、I2SCLL這兩寄存器要匹配,否則I2C總線則可能不工作,這是比較容易犯錯誤的地方,下面是我的一些程序與設置,希望做個參考,也希望我以后用起來也方便,因為如果長時間不用,總是要再查一次資料,那樣浪費很多時間

本文引用地址:http://m.butianyuan.cn/article/201611/316610.htm

一、初始化部分

void I2cInit()
{

VPBDIV=0x01;

//在前面要有上面這句
I2cFlag=0x00;
I2cNum=0x00;
I2cBuf=databuf; //databuf是一個要存貯數(shù)據的數(shù)組
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; //查詢狀態(tài)。

switch(sta)
{
case 0x60:
case 0x68:
case 0x70:
case 0x78: //I2C開始,把讀數(shù)據的數(shù)組等初始化。
I2cBuf=databuf;
I2cNum=0x00;
I2cFlag=0;
break;
case 0x80:
case 0x88:
case 0x90:
case 0x98:
*I2cBuf++=I2DAT; //這幾種狀態(tài)是讀數(shù)據,無論廣播還是尋址。
I2cNum++;
break;
case 0xa0:
I2cFlag=1; //結束,設置I2C成功接收標志。
break;

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

以上就是我把LPC2214做為從機的設置。



關鍵詞: LPC2200I2C從模

評論


技術專區(qū)

關閉