新聞中心

        LPC2200的I2C從模式

        作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏
        最近使用LPC2214的I2C總線(xiàn),一開(kāi)始使用PHILIPS感覺(jué)非常的不方便,因?yàn)樗獜钠錉顟B(tài)中讀出數(shù)值進(jìn)行判斷,這樣做無(wú)形中要增加軟件難度,但是其寄存器確是非常的簡(jiǎn)單,只有一個(gè)要仔細(xì)的看,那就是I2CONSET這一個(gè)。

        對(duì)于從模式,AA當(dāng)然要設(shè)置為1,I2ADR也一定要設(shè)置,這是主器件尋址的地址;在此設(shè)為0x98,最后一位表示廣播模式,根據(jù)情況要不要置一;這里還有一個(gè)重要的是VPBDIV的設(shè)置,注意VPBDIV與I2SCLH、I2SCLL這兩寄存器要匹配,否則I2C總線(xiàn)則可能不工作,這是比較容易犯錯(cuò)誤的地方,下面是我的一些程序與設(shè)置,希望做個(gè)參考,也希望我以后用起來(lái)也方便,因?yàn)槿绻L(zhǎng)時(shí)間不用,總是要再查一次資料,那樣浪費(fèi)很多時(shí)間

        本文引用地址:http://www.104case.com/article/201611/316610.htm

        一、初始化部分

        void I2cInit()
        {

        VPBDIV=0x01;

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

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

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

        以上就是我把LPC2214做為從機(jī)的設(shè)置。



        關(guān)鍵詞: LPC2200I2C從模

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 浦东新区| 游戏| 酒泉市| 昔阳县| 安龙县| 新郑市| 新和县| 珠海市| 西藏| 清徐县| 潼南县| 甘谷县| 南和县| 景泰县| 大同市| 新营市| 皋兰县| 昭平县| 镇平县| 东海县| 阜康市| 定结县| 正阳县| 运城市| 百色市| 长春市| 天全县| 武宁县| 卢龙县| 什邡市| 厦门市| 额敏县| 吉林省| 黔东| 和龙市| 潢川县| 儋州市| 乌拉特前旗| 奇台县| 历史| 泰和县|