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