新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > I2C總線在智能化振動測試儀中的應用

        I2C總線在智能化振動測試儀中的應用

        作者:南京師范大學數科院 時間:2002-12-05 來源:電子設計應用 收藏
        引言
        基于單片微處理器的智能化器日趨小型化、簡約化,串行用戶接口I2C總線正在或已經取代基于并行總線的接口方式,它無需地址總線、數據總線、控制總線,只通過兩條線就可以完成與單片微處理器的接口與數據交換,大大地簡化了傳統接口方式的復雜性,充分地利用了單片微處理器的有限I/O資源.
        串行用戶接口I2C總線
        I2C總線一般包括數據線SDA和時鐘線SCL。與單片微處理器交換數據就是通過SDA來完成的,它的工作方式為雙向,既可以輸出數據給微處理器,也可以接受微處理器發送的數據、命令。串行時鐘SCL也是雙向的,作為控制方的單片微處理器,通過SCL發送時鐘信號;作為受控制方的器件,也要按總線上的SCL信號發出或是接收SDA上的信號。具有I2C總線的器件,它的內部輸出端一定是開漏輸出或集電極開路輸出方式。在信息傳輸時,SCL為高電平期間,SDA上的信息必須保持穩定不變,只有SCL為低電平期間,SDA上的信息才允許變化。同時SDA上信息的每一位都要和SCL上的時鐘脈沖相對應。SCL沒有時鐘信號,SDA信息將停止傳輸處于等待狀態。在I2C總線傳輸的過程中,將兩種特定的狀態定義為起始信號、終止信號,在SCL保持高電平期間,SDA由高電平向低電平變化,這種狀態稱之為起始信號。SCL保持高電平期間,SDA由低電平向高電平變化,稱之為終止信號。如圖1所示。
        值得注意的是,SDA上傳輸的每個字節必須是8位,首先傳輸最高有效位,每個字節傳輸后還必須跟隨一個應答位,這時SCL保持高電平,在此期間在SDA端保持一個低電平信號,完成應答信號的輸出,數據傳輸中應答信號是必須的。在整個傳輸的過程中,傳輸字節的數目不受限制。
        數據傳送的格式:I2C總線要求在起始信號的后面是尋址字節,在尋址字節高7位是被控器的地址,第8位是信息傳輸方向位(R/W),“0”表示主控器發送,“1” 表示主控器接收。尋址字節的后面是數據字節,每一個字節都必須要有應答信號,傳送結束后必須發終止信號。如圖2所示.
        I2C技術在測振儀中的應用
        筆者所開發的測振儀表中應用了I2C技術,單片微處理器采用AT89C2051單片機。AT89C2051是美國ATMEL公司采用CMOS工藝生產的20引腳8位單片機,體積小,它與Intel公司MCS-51的指令和引腳兼容,內置2k字節flash程序存儲器、128字節RAM、15根I/O線、2 個16位定時/計數器、5個向量二級中斷結構、1個全雙向的串行口、并且內含精密模擬比較器和片內振蕩器。具有2.7V至5.5V的寬電壓工作范圍和高至24MHz的工作頻率,同時還具有加密陣列的二級程序存儲器加鎖、掉電和時鐘電路等。外圍接口芯片如A/D轉換器、實時時鐘、數據存儲器X24C16均是具有I2C技術結構的器件,如圖3所示。
        該測振儀表完全以單片機為主,完成振動數據的處理,可實時測量、存儲振動的速度均方根值及振動的位移值。振動傳感器使用磁電式速度傳感器。振動信號前置處理電路完成振動信號的調理、零位漂移的修正、自動量程切換、低通濾波等處理。峰值提取與保持電路將振動的位移峰-峰最大值檢出,并轉換為直流量送入串行A/D轉換器,送單片機處理。存儲芯片采用具有I2C總線結構的非易失型存儲器E2PROM X24C16,被測的振動數據由單片微處理器計算轉換工程量,輸出串行數據以字符的形式顯示在LCD液晶上,也可以通過標準RS-232C通訊接口將存儲的數據傳送至PC機,按測量的時間進行查詢處理。本測振儀表為電池供電,LCD液晶顯示、數據存儲器、通訊接口、A/D轉換器均以串行方式與單片微處理器交換數據,有效地利用了接口資源。
        雖然目前大量使用的8051內核的單片微處理器,并不支持I2C總線結構,但仍然可以利用單片微處理器的普通I/O口來模擬I2C總線,通過軟件編程來實現,但注意一定要按I2C總線的時序進行。以下給出利用AT89C2051單片微處理器的普通I/O口來模擬I2C總線,控制X24C16的讀寫操作。
        X24C16是一種具有2KB存儲容量的串行E2PROM,具有體積小、功耗低,可掉電保護等特點。當要對X24C16的存儲單元寫入數據時,每寫入一個字節,所要操作的數據格式由3個字節組成,第1字節為:

        第2字節為:

        其中:1010碼是X24C16的器件地址,A7-A0是從地址,A10、A9、A8為X24C16的高位地址。第2字節是X24C16的低8位地址,第3字節是要寫入到X24C16的數據,特別注意,每個字節后一定要跟一個應答信號。(源程序詳見本刊網站,www.eaw.com.cn)
        結語
        I2C總線,由于連線少,結構簡單,與并行總線相比,大大地簡化了儀表系統的硬件設計,提高了可靠性。這是一種高性能的串行總線,正在獲得廣泛的工程應用。與此同時,基于串行用戶接口I2C總線的新型電子器件的出現,也在推動著I2C總線的應用。對于不帶I2C總線接口的MCS-51系列單片微處理器,只要采用兩根通用I/O,并且嚴格按照I2C總線規程來模擬I2C總線,同樣可以使用帶I2C總線接口的器件來作為外擴I/O口的接口電路?!?/P>

        參考文獻:
        1. 吳金戊、沈慶陽、郭庭吉,8051 單片機實踐與應用,學苑出版社,1993
        2. 賴麒文,8051 單片機C語言徹底應用,科學出版社,2002

        作者簡介:
        吳強,南京師范大學數科院助教,主要從事計算機應用及語言的教學、科研。


        圖1 起始、終止信號時序

        圖3 基于I2C總線串行控制的測振儀原理框圖

        ;************************************
        ; 向X24C16 寫入一字節數據子程序
        ;************************************
        WR24: ACALL STA24 發起始信號
        mov a,addwh 存儲單元地址高位
        clr c
        rlc a
        orl a,#0a0h ; 器件碼1010
        acall send 發送
        mov a,addwl 存儲單元地址低8位
        acall send
        MOV A,DATA 數據在DATA中
        acall send 發送
        acall STOP 發終止信號
        RET
        ;*************************
        ; 24C16 讀出子程序
        ;*************************
        RD24: ACALL STA24
        mov a,addrh
        clr c
        rlc a
        orl a,#0A0h ; special code for read(0a1h)
        acall send
        mov a,addrl
        acall send
        acall sta24
        mov a,#0A1h
        acall send
        acall read
        mov data,a
        acall stop
        RET
        ;************************
        ; 啟動 24C16(發I2C總線起始信號)
        ;************************
        STA24: setb scl
        setb sda
        nop
        clr sda
        nop
        nop
        nop
        clr scl
        nop
        ret
        ;************************
        ; 24C16 關閉(發I2C總線終止信號)
        ;************************
        STOP: clr sda
        nop
        nop
        setb scl
        nop
        nop
        setb sda
        nop
        nop
        nop
        clr scl
        nop
        ret
        ;************************
        ; 24C16寫入
        ;************************
        send: MOV R7,#08H
        clr scl
        lop: RLC A
        mov sda,c
        nop
        nop
        setb scl
        nop
        nop
        clr scl
        djnz r7,lop
        setb sda 應答信號
        setb scl
        nop
        nop
        lop1: mov c,sda
        jc lop1
        clr scl
        ret
        ;***************************
        ; 按位讀出每一位
        ;***************************
        READ: MOV R7,#08H
        clr scl
        RLP: nop
        nop
        setb scl
        nop
        mov c,sda
        rlc a
        nop
        nop
        clr scl
        djnz r7,rlp
        clr sda 應答信號
        nop
        nop
        setb scl
        ret




        關鍵詞: 測試儀

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 丹东市| 呼伦贝尔市| 花垣县| 湖口县| 巴里| 兰坪| 林芝县| 铁力市| 小金县| 陇西县| 石家庄市| 江都市| 孝昌县| 惠来县| 长海县| 卢湾区| 阜南县| 南安市| 乾安县| 双城市| 凌海市| 七台河市| 东港市| 石屏县| 桂林市| 汤原县| 肃南| 新乡县| 张北县| 凤翔县| 栖霞市| 嘉荫县| 儋州市| 巍山| 上蔡县| 姚安县| 元朗区| 侯马市| 兴国县| 巩义市| 临泽县|