摘要:本文介紹了一種基于微控制器的1-Wire?主機接口,適用于小規模、中等規模以及大規模的1-Wire網絡。采用精細的阻抗匹配和"智能" (軟件控制)強上拉、擺率控制等方法保證網絡的可靠工作。本文給出了軟件流程圖,有助于用戶利用任何適當的微控制器產生正確的復位脈沖、在線檢測、寫“1”、寫“0”以及讀時隙的1-Wire時序。示波器測試曲線說明了驅動器的時間特性以及遠距離通信時傳輸線的影響。
圖1. 驅動器原理圖
R4、R1和R3的串聯電路提供標準的1-Wire到VCC上拉。在這種電路情況下,總的上拉電阻近似為1kΩ。當1-Wire線空閑時,則線上呈現此阻抗。由于R4與Q1的漏極相連,因此Q1導通時電流會流過該電阻,但不會影響1-Wire總線的低電平電壓。1-Wire總線電壓升至5V的速度是由R4+R1+R3的電阻值和1-Wire網絡的負載決定的。不建議減小R4阻值,否則會導致1-Wire總線的低電平電壓升高,而這不是我們所期望的。通過把肖特基二極管D1、D2分別導通至GND和VCC,抑制ESD沖擊以及來自鄰近電纜的耦合信號。電阻R3限制ESD電流,保護D1和D2。
該驅動器一個最明顯的特性就是可以在主機端實現與1-Wire電纜之間嚴格的終端匹配。在1-Wire網絡中推薦使用5類非屏蔽雙絞數據電纜,其特性阻抗約為100Ω。當Q1或Q2導通時,總線終端匹配分別通過R3與R1或R2的串聯來實現。C3與R1和R3串聯為在線應答脈沖提供一個交流耦合終端匹配。為了驅動器適應不同的特征阻抗電纜,需要相應地調整R1和R2。
驅動器的三個部分在相應的晶體管導通時,其壓擺率受到控制。當驅動器將1-Wire總線變為低電平(例如某個時序或復位脈沖的起始點), R5和C1控制下降斜率;R6和C2限制動態上拉信號變為有效狀態時的壓擺率;而R7和C4限制強上拉的壓擺率。這三個部分的時間常數均為0.5μs,壓擺率近似為4V/μs。關于詳細資料和示波器波形,請參見性能舉例部分。
圖2. 復位與在線應答脈沖時序
表1. 復位/在線應答脈沖檢測序列的時間建議值
采樣點H必須選在應答脈沖窗口之內,在線應答脈沖窗口由最快和最慢的1-Wire器件在線應答脈沖的時間決定,數據資料中將此窗口時間長度規定為tMSP。復位脈沖結束后,當1-Wire器件檢測到邏輯高電平時,標志著tMSP開始,圖2中該參考點近似為E點。A到C之間的時間長度等于tF (下降時間)與tRSTL (低電平復位時間)之和。當發生2類中斷時,有效的復位時間長度就是從A到B的持續時間與中斷脈沖(參見DS1994/DS2404數據資料)持續時間的總和。從E到M的時間稱為高電平復位時間tRSTH。數據資料規定了tRSTL,并說明了如何確定最小的tRSTH值,但對于tRSTH沒有最大值要求。
圖3. 寫0時隙
寫0時隙不需要對數據線進行采樣,因此圖3未標明任何采樣點,但是也允許對1-Wire總線按照讀時隙(圖4或圖5)中相同的時間點進行采樣,不過獲得的采樣邏輯狀態將始終為0,表明電路正在向1-Wire總線進行寫0操作。從A到C0的持續時間長度等于tF (下降時間)與tW0L (寫0低電平時間)之和,從C0至E0的時間稱為恢復時間tREC。數據資料規定了tW0L和tREC的最小值。A至E0的時間稱之為時隙周期tSLOT。
表2. 推薦的寫0時隙時間值
圖4. 寫1/讀時隙(讀1)
采樣點CR必須落在主機采樣窗口范圍內,由最快的1-Wire器件響應時間決定。在數據資料中該時間窗口稱為tMSR。時隙開始后,1-Wire器件檢測到邏輯低電平時作為tMSR的開始點,圖4中這一參考點近似為A點加上脈沖的下降時間tF。從A到BR的持續時間等于tF (下降時間)和tRL (讀低電平時間)之和。數據資料中規定了tRL (等于tW1L)和tMSR,從A到F1的時間也就是時隙周期時間tSLOT。
表3. 推薦的寫1/讀時隙(讀1)時間值
圖5. 讀時隙(讀0)
CR采樣點的選取與寫1/讀時隙時相同,隨后的重復采樣間隔應該在微控制器和軟件允許范圍內盡可能的短。從A到H0的時間也就是時隙周期時間tSLOT。
表4. 推薦的讀時隙(讀0)時間值
注1: 若僅將定時器作為計數器而不是實時定時器,則必須采用遞減計數器。定時器應該在5000μs后終止。
注2:Presence和Short是用來向高級程序報告復位/在線應答脈沖檢測時隙結果的邏輯變量。由于在這里只有一款可產生中斷的1-Wire芯片(DS1994/DS2404),并且使用中斷會大大降低1-Wire網絡的有效速度,因此中斷不作為變量來進行報告。
在該流程圖,采用一個邏輯輸入變量來控制是產生寫0時隙還是產生讀0時隙。寫1時隙與讀0時隙是相同的。位變量BitValue用來向上級程序報告時隙執行的結果 。
注1: 若僅將定時器作為計數器而不是實時定時器,則必須采用遞減計數器。定時器應該在45μs后終止。
注2:按照此流程圖,在定時器停止之前,DPU信號會被重復置為有效狀態。若信號已處于有效狀態,則激活操作不會對它產生影響,因此允許對已處于有效狀態的DPU信號進行激活。如果需要,也可以進行檢測DPU信號是否有效,如果DPU信號有效,則在執行程序時無需再次激活。
復位/在線應答脈沖檢測時隙(如圖2)
寫0時隙(如圖3)
寫1/讀1時隙(如圖4)
讀0時隙(如圖5)
在300m電纜末端的下降沿信號
在300m電纜末端附近所看到的相同的下降沿信號
簡介
1-Wire網絡的可靠性在很大程度上取決于主機與1-Wire從機器件之間所采用的通信驅動電路的性能。本文介紹了一種1-Wire主機端接口,采用精細的阻抗匹配和"智能" (軟件控制)強上拉等方法,保證網絡在輕載到重載范圍內均能可靠工作,且通信距離可達500m。關于創建可靠的1-Wire網絡指南,請參見應用筆記148。電路描述
網絡驅動器(圖1)由下拉部分(Q1,R1,C1,R5)和上拉部分(Q2,R2,C2,R6)組成。晶體管Q3與周圍的元件(C4、R7)組成強上拉電路,可為諸如EEPROM、溫度傳感器等器件提供額外電源。 本文沒有討論"強上拉"的功能。任何時候,三個晶體管中最多只有一個處于導通狀態;當1-Wire不進行通信("空閑"狀態)時,這三個晶體管都不導通。圖1. 驅動器原理圖
R4、R1和R3的串聯電路提供標準的1-Wire到VCC上拉。在這種電路情況下,總的上拉電阻近似為1kΩ。當1-Wire線空閑時,則線上呈現此阻抗。由于R4與Q1的漏極相連,因此Q1導通時電流會流過該電阻,但不會影響1-Wire總線的低電平電壓。1-Wire總線電壓升至5V的速度是由R4+R1+R3的電阻值和1-Wire網絡的負載決定的。不建議減小R4阻值,否則會導致1-Wire總線的低電平電壓升高,而這不是我們所期望的。通過把肖特基二極管D1、D2分別導通至GND和VCC,抑制ESD沖擊以及來自鄰近電纜的耦合信號。電阻R3限制ESD電流,保護D1和D2。
該驅動器一個最明顯的特性就是可以在主機端實現與1-Wire電纜之間嚴格的終端匹配。在1-Wire網絡中推薦使用5類非屏蔽雙絞數據電纜,其特性阻抗約為100Ω。當Q1或Q2導通時,總線終端匹配分別通過R3與R1或R2的串聯來實現。C3與R1和R3串聯為在線應答脈沖提供一個交流耦合終端匹配。為了驅動器適應不同的特征阻抗電纜,需要相應地調整R1和R2。
驅動器的三個部分在相應的晶體管導通時,其壓擺率受到控制。當驅動器將1-Wire總線變為低電平(例如某個時序或復位脈沖的起始點), R5和C1控制下降斜率;R6和C2限制動態上拉信號變為有效狀態時的壓擺率;而R7和C4限制強上拉的壓擺率。這三個部分的時間常數均為0.5μs,壓擺率近似為4V/μs。關于詳細資料和示波器波形,請參見性能舉例部分。
電路工作原理
若忽略強上拉電路(Q3, R7, C4),驅動器要求連接三個信號至監控微控制器,這些信號分別為DRIVE、DPU和SENSE。DRIVE為高電平有效信號,它通過使 Q1導通,來啟動 1-Wire通信。DPU為低電平有效信號,用來激活動態上拉晶體管Q2。SENSE是1-Wire電路與微控制器輸入口之間的直連信號。1-Wire的地線與驅動器/微控制器GND共地。為了進行1-Wire通信,必須發出恰當的DRIVE信號和DPU信號,并在適當的時間內通過SENSE輸入口讀取1-Wire總線信號。1-Wire通信有四種波形,它們是復位/在線應答檢測序列,和三種通信時隙波形。復位/在線應答脈沖檢測序列
1-Wire通信過程都是從一個復位脈沖開始,之后跟隨在線應答脈沖,波形如圖2所示。當需要發出復位脈沖時, DRIVE信號要變為高電平并保持從A到B的時間(參見圖2)。從A點開始,1-Wire的電壓緩降為0V。在B點,DRIVE信號釋放,除非1-Wire器件將總線拉低以產生中斷信號(參見DS1994/DS2404數據資料,中斷類型2),否則1-Wire電壓開始上升。為了能正確處理這種中斷,從C點開始就要對1-Wire進行重復采樣,直到D點1-Wire狀態變為邏輯高電平。在D點之后很短時間內,動態上拉DPU信號變為有效狀態(E點),1-Wire總線將會以更快的速度被拉至5V,動態上拉在F點結束。假定總線上存在一個1-Wire器件,它就會發出在線應答脈沖,從G點開始,到I點結束。在G與I之間的某個地方(H點),對1-Wire狀態進行采樣,判定是否存在1-Wire 器件。在線應答脈沖結束后,1-Wire電壓開始升至5V。在J點還要對1-Wire邏輯狀態再次采樣,判斷是否發生了1A類中斷信號(參見DS1994/DS2404數據資料)。無中斷信號時,邏輯狀態為高電平,從K點到L點動態上拉信號再次變為有效狀態,以確保1-Wire總線電壓上升到5V,如圖2所示。當有中斷信號產生時,J點所檢測到的狀態將為邏輯0,同時開始下一輪重復采樣過程,就像在復位脈沖結束那樣(如返回C點繼續采樣)。如果在總線上還存在其它的1-Wire器件,除發出中斷的器件外,它們將把此中斷脈沖看作是復位脈沖,隨后發出在線應答脈沖作為響應。(如第二次到達J點時,1-Wire的邏輯狀態為高,如圖2所示)。在任何情況下,復位/在線應答脈沖檢測在M點結束,同時也是下一個時隙的起始。圖2. 復位與在線應答脈沖時序
表1. 復位/在線應答脈沖檢測序列的時間建議值
A to B | B to C | D to E | E to F | E to H | H to J | J to K | K to L | L to M |
480μs | 0 to 2μs | 0 to 2μs | 8μs | 72μs | 240μs | 0 to 2μs | 60μs | > 2μs |
采樣點H必須選在應答脈沖窗口之內,在線應答脈沖窗口由最快和最慢的1-Wire器件在線應答脈沖的時間決定,數據資料中將此窗口時間長度規定為tMSP。復位脈沖結束后,當1-Wire器件檢測到邏輯高電平時,標志著tMSP開始,圖2中該參考點近似為E點。A到C之間的時間長度等于tF (下降時間)與tRSTL (低電平復位時間)之和。當發生2類中斷時,有效的復位時間長度就是從A到B的持續時間與中斷脈沖(參見DS1994/DS2404數據資料)持續時間的總和。從E到M的時間稱為高電平復位時間tRSTH。數據資料規定了tRSTL,并說明了如何確定最小的tRSTH值,但對于tRSTH沒有最大值要求。
通信時隙
寫0時隙
寫0時隙用于在1-Wire總線中傳送比特0,對應的1-Wire波形如圖3所示。需要進行寫0時隙操作時,DRIVE信號首先要變為有效電平狀態并持續一段時間,圖中對應的為A點和B0點。從A點開始,1-Wire總線的電壓緩降至0V。在B0點當DRIVE信號釋放時,1-Wire總線電壓開始上升。B0點之后很短時間內,動態上拉DPU變為有效(C0點),1-Wire總線將會以更快的速度被拉至5V。動態上拉信號在D0點結束,下一個時隙或復位/在線脈沖檢測序列將緊隨在E點之后。圖3. 寫0時隙
寫0時隙不需要對數據線進行采樣,因此圖3未標明任何采樣點,但是也允許對1-Wire總線按照讀時隙(圖4或圖5)中相同的時間點進行采樣,不過獲得的采樣邏輯狀態將始終為0,表明電路正在向1-Wire總線進行寫0操作。從A到C0的持續時間長度等于tF (下降時間)與tW0L (寫0低電平時間)之和,從C0至E0的時間稱為恢復時間tREC。數據資料規定了tW0L和tREC的最小值。A至E0的時間稱之為時隙周期tSLOT。
表2. 推薦的寫0時隙時間值
A to B0 | B0 to C0 | C0 to D0 | A to E0 |
60μs | 2μs | 16μs | 80μs |
寫1/讀1時隙
寫1時隙用于從1-Wire總線上傳送比特1,對應的1-Wire波形如圖4所示。實際上,從1-Wire總線讀取比特1的操作與寫1操作的工作波形是相同的,因此,寫1操作和讀1操作就作為一種情況來討論。若要產生寫1或讀1時隙,首先在A點將DRIVE信號變為有效并持續到BR。從A點開始,1-Wire總線電壓緩降至0V。在BR點,DRIVE信號釋放,無論是在進行讀1操作還是進行寫1操作,1-Wire總線電壓都開始上升。在CR點對1-Wire總線進行取樣。由于讀到的比特為1,動態上拉DPU將立即變為有效狀態,并從D1持續到E1。這將使1-Wire總線電壓以更快的速度升至5V。下一時隙或復位/在線應答脈沖檢測序列可以從F1點開始。圖4. 寫1/讀時隙(讀1)
采樣點CR必須落在主機采樣窗口范圍內,由最快的1-Wire器件響應時間決定。在數據資料中該時間窗口稱為tMSR。時隙開始后,1-Wire器件檢測到邏輯低電平時作為tMSR的開始點,圖4中這一參考點近似為A點加上脈沖的下降時間tF。從A到BR的持續時間等于tF (下降時間)和tRL (讀低電平時間)之和。數據資料中規定了tRL (等于tW1L)和tMSR,從A到F1的時間也就是時隙周期時間tSLOT。
表3. 推薦的寫1/讀時隙(讀1)時間值
A to BR | A to CR | CR to D1 | D1 to E1 | A to F1 |
9μs | 18μs | 0 to 2μs | 60μs | 80μs |
讀時隙(讀0)
讀0時隙用于從1-Wire總線上讀取比特0,對應的1-Wire波形如圖5所示。需要進行讀時隙操作時,DRIVE信號首先要變為有效電平狀態并持續一段時間,圖中對應為A點和BR點。從A點開始,1-Wire總線的電壓緩降至0V。為了發送比特0, 1-Wire器件需要把1-Wire拉為低電平,從A點,到BR點結束。這樣的話,1-Wire總線在開始時先由1-Wire主機將電壓拉低,在BR點時主機下拉結束,隨后由總線上存在的一個或多個1-Wire器件繼續把1-Wire總線電壓維持在邏輯低電平狀態。在CR點對1-Wire總線進行采樣。由于讀到的比特為0,1-Wire總線將被重復采樣。在D0點1-Wire器件停止下拉, 1-Wire總線電壓開始升高。隨后在E0再次進行取樣,判斷總線是否已經處于邏輯高電平狀態,同時動態上拉DPU變為有效狀態,1-Wire總線電壓開始以更快的速度升至5V。動態上拉DPU的有效狀態從F0持續到G0。下一個時隙或復位/在線應答脈沖檢測時序可以從H0開始。圖5. 讀時隙(讀0)
CR采樣點的選取與寫1/讀時隙時相同,隨后的重復采樣間隔應該在微控制器和軟件允許范圍內盡可能的短。從A到H0的時間也就是時隙周期時間tSLOT。
表4. 推薦的讀時隙(讀0)時間值
A to BR | A to CR | E0 to F0 | CR to G0 | A to H0 |
9μs | 18μs | 0 to 2μs | 60μs | 82μs |
應用注意事項
控制這個高級的1-Wire網絡驅動器的信號結構相對來說比較復雜。然而,算法還是比較直觀,因此這個驅動器通常用軟件來實現,采用速度足夠快的微控制器,以產生實時信號。下面的流程圖將有助于用戶采用自己熟悉的、任何一款能夠滿足要求的微控制器來實現該驅動器。為能產生合適的定時信號,必須要考慮在選定晶振頻率下每個命令的執行時間。軟件流程圖
注1: 若僅將定時器作為計數器而不是實時定時器,則必須采用遞減計數器。定時器應該在5000μs后終止。
注2:Presence和Short是用來向高級程序報告復位/在線應答脈沖檢測時隙結果的邏輯變量。由于在這里只有一款可產生中斷的1-Wire芯片(DS1994/DS2404),并且使用中斷會大大降低1-Wire網絡的有效速度,因此中斷不作為變量來進行報告。
在該流程圖,采用一個邏輯輸入變量來控制是產生寫0時隙還是產生讀0時隙。寫1時隙與讀0時隙是相同的。位變量BitValue用來向上級程序報告時隙執行的結果 。
注1: 若僅將定時器作為計數器而不是實時定時器,則必須采用遞減計數器。定時器應該在45μs后終止。
注2:按照此流程圖,在定時器停止之前,DPU信號會被重復置為有效狀態。若信號已處于有效狀態,則激活操作不會對它產生影響,因此允許對已處于有效狀態的DPU信號進行激活。如果需要,也可以進行檢測DPU信號是否有效,如果DPU信號有效,則在執行程序時無需再次激活。
性能舉例
本文討論的驅動器產生的1-Wire信號的示波器波形如下頁所示。當對信號進行檢驗時,尤其是在電纜的最遠端,必須使用差分探頭,探頭的參考地懸空,否則探頭的地將旁路1-Wire的參考地,從而改變系統的拓撲結構。如果不能提供差分探頭,則必須通過變壓器或使用電池供電的示波器,將示波器地同總線地隔離,兩種方法可任選其一,以斷開示波器電源電纜的安全接地。示波器波形
復位/在線應答脈沖檢測時隙(如圖2)
寫0時隙(如圖3)
寫1/讀1時隙(如圖4)
讀0時隙(如圖5)
在300m電纜末端的下降沿信號
在300m電纜末端附近所看到的相同的下降沿信號
評論
查看更多