新聞中心

        51單片機-IIC

        作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
        IIC(Inter-Intergrated Circuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線。用于連接微控制器及其外圍設(shè)備。IIC只需兩根線SDA(數(shù)據(jù)線),SCL(時鐘)。IIC支持多主控,當然,在任何時間點上只能有一個主控,而SPI是一主多從。IIC各種被控制電路均并聯(lián)在這條總線上,每個模塊和電路都有唯一的地址。SPI是通過CS進行片選,有多少個SPI就要占用多少口。IIC總線在傳輸數(shù)據(jù)過程中有3個信號,它們分別是:開始信號,結(jié)束信號和應(yīng)答信號。

        IIC總線的硬件結(jié)構(gòu)圖:



        IIC支持多主和主從工作方式,通常為主從工作方式。在主從工作方式中,系統(tǒng)中只有一個主器件(單片機),其它器件都是具有IIC總線的外圍從器件。在主從工作方式中,主器件啟動數(shù)據(jù)的發(fā)送(發(fā)出啟動信號),產(chǎn)生時鐘信號,發(fā)出停止信號。 開始信號:SCL為高電平,SDA由高電平向低電平跳變,開始傳送數(shù)據(jù) 結(jié)束信號:SCL為高電平,SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù) 應(yīng)答信號:接受數(shù)據(jù)的IC在接受到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)送特定的低電平脈沖,表示已經(jīng)接收到數(shù)據(jù)。CPU向受控單元發(fā)送一個信號后,等待受控單元發(fā)出一個應(yīng)答信號,CPU接收到應(yīng)答信號后,根據(jù)實際情況做出是否繼續(xù)傳送數(shù)據(jù)的判斷。若未收到應(yīng)答信號,由判斷為受控單元出現(xiàn)故障。

        這些信號中開始信號是必須的,結(jié)束信號和應(yīng)答信號都可以不要。

        IIC總線進行數(shù)據(jù)傳送時,時鐘信號為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時鐘信號為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。



        IIC總線協(xié)議規(guī)定,每傳送一個字節(jié)數(shù)據(jù)后,都要有一個應(yīng)答信號,以確定數(shù)據(jù)傳送是否被對方收到。應(yīng)答信號由接受設(shè)備產(chǎn)生,在SCL信號為高電平期間,接受設(shè)備將SDA拉為低電平,表示數(shù)據(jù)傳輸正確,產(chǎn)生應(yīng)答。



        IIC總線的時序圖:



        許多單片機并不具有IIC總線接口,如51單片機

        單片機模擬IIC總線通信:

        啟動代碼: void start(){
        SDA = 1;
        delay();
        SCL = 1;
        delay();
        SDA = 0;
        delay();
        }

        停止代碼:


        void stop(){
        SDA = 0;
        delay();
        SCL = 1;
        delay();
        SDA = 1;
        delay();
        }


        關(guān)鍵詞: 51單片機IIC串行總

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 多伦县| 仙桃市| 泸定县| 体育| 台南县| 恩施市| 山西省| 新乡县| 屏东县| 调兵山市| 巫山县| 云林县| 涞源县| 隆化县| 遂昌县| 颍上县| 岑溪市| 涪陵区| 宁陕县| 隆安县| 方城县| 仪征市| 手机| 秦安县| 昭平县| 赤城县| 随州市| 北辰区| 济宁市| 吉林市| 岳阳市| 嘉义县| 东海县| 大理市| 新民市| 资溪县| 临清市| 昭平县| 云龙县| 万盛区| 南充市|