基于1-WireTM技術(shù)的單片機(jī)單線通信的實(shí)現(xiàn)
在構(gòu)成一個(gè)較大規(guī)模的單片機(jī)應(yīng)用系統(tǒng)中,不可避免地要采用多機(jī)系統(tǒng),經(jīng)常涉及到系統(tǒng)間的信息交換。在通信速率要求不高的情況下,我們希望進(jìn)行通信的雙方占用盡可能少的端口連線。美國(guó)Dallas公司生產(chǎn)的單線數(shù)字溫度傳感器 DS1820僅用1根口線進(jìn)行信息交換,該技術(shù)可以很方便地應(yīng)用到單片機(jī)系統(tǒng)間的通信上來(lái)。
1 發(fā)送和接收
單線通信的數(shù)據(jù)交換僅在1根總線上完成,對(duì)主機(jī)和從機(jī)必須有嚴(yán)格的時(shí)序要求,可以借助“時(shí)隙”傳輸來(lái)實(shí)現(xiàn)數(shù)據(jù)的發(fā)送與接收。
如圖1(a),主機(jī)向從機(jī)發(fā)送一位信息時(shí),先由主機(jī)將總線由高(“1”)拉低(“0”)1~15μs,然后根據(jù)發(fā)送的信息是“1”還是“0”,置總線為相應(yīng)的邏輯“1”或“0”,持續(xù)時(shí)間大于45~60μs后釋放總線。從機(jī)檢測(cè)到總線由高變低后,在15~60μs的時(shí)間窗內(nèi)采樣總線,若為高,則收到 “1”,否則收到“0”。主機(jī)發(fā)送一位的總時(shí)間要求大于60μs,以便為最壞情況提供足夠的時(shí)間裕量。
當(dāng)主機(jī)需要接收數(shù)據(jù)時(shí),采用如圖1(b)的時(shí)隙,先由主機(jī)將總線拉低1~15μs,然后釋放。從機(jī)檢測(cè)到總線由高變低后置總線為邏輯“1”或“0”,持續(xù)時(shí)間不少于15μs。主機(jī)在釋放總線的15μs時(shí)間內(nèi)采樣總線,以接收從機(jī)發(fā)送的“1”或“0”,同樣,要求接收
一位的總時(shí)間不少于60μs。
由此可見(jiàn),主機(jī)和從機(jī)進(jìn)行單線通信,總是由主機(jī)發(fā)起的,即將總線由高拉低,除非被主機(jī)請(qǐng)求,否則從機(jī)無(wú)法主動(dòng)發(fā)送數(shù)據(jù)。除了主機(jī)外,從機(jī)之間也無(wú)法進(jìn)行通信。
2 復(fù) 位
進(jìn)行通信前需要進(jìn)行總線復(fù)位,可以采用如圖2的時(shí)隙來(lái)實(shí)現(xiàn)。先由主機(jī)保持總線480~960μs的低電線為“0”,持續(xù)時(shí)間為60~240μs。主機(jī)在釋放總線后檢測(cè)從機(jī)發(fā)出的應(yīng)答信號(hào),如果檢測(cè)到總線為“0”,則表示從機(jī)存在并有應(yīng)答,主機(jī)就可以通過(guò)產(chǎn)生接收或發(fā)送時(shí)隙來(lái)控制信息傳輸。若總線上沒(méi)有從機(jī)應(yīng)答或從機(jī)不存在,則主機(jī)會(huì)收到“1”。
3 通信流程
實(shí)現(xiàn)掛接在單總線上各子系統(tǒng)的通信,需要分配給每個(gè)系統(tǒng)惟一的軟件地址,當(dāng)某一個(gè)系統(tǒng)需要信息交換時(shí)將主動(dòng)發(fā)送復(fù)位信號(hào)扮演主機(jī)角色,各從機(jī)偵聽(tīng)到來(lái)自總線上的復(fù)位信號(hào)后先進(jìn)行地址匹配,一旦握手成功,主從機(jī)間就可以進(jìn)行數(shù)據(jù)傳輸。設(shè)從機(jī)軟件地址為8位,采用如表1所示的協(xié)議字,實(shí)現(xiàn)通信的流程如圖3 所示。
4 應(yīng)用舉例
具體應(yīng)用時(shí),可以靈活地根據(jù)單片機(jī)端口特點(diǎn)進(jìn)行總線配置,例如在一個(gè)采用8051單片機(jī)的應(yīng)用系統(tǒng)中,各片8051的端口(P3.2引腳)掛接在單總線上,主機(jī)的作普通I/O口使用,從機(jī)采用邊沿觸發(fā)(負(fù)跳變)的中斷觸發(fā)方式來(lái)偵聽(tīng)總線上主機(jī)的復(fù)位信號(hào)以不占用 CPU資源,進(jìn)入中斷服務(wù)程序后,從機(jī)的端口又作普通的I/O口用于數(shù)據(jù)通信。硬件連線如圖4所示。
參考文獻(xiàn)
[1] Dalls semiconductor.DS1820 1-WireTMdigital Thermometer.Maxim Integrated Products,Inc.,2002.