引言
DS2480B是帶UART主機接口的1-Wire主機(驅(qū)動器)。該器件針對電源傳輸進行優(yōu)化并支持嵌入式應(yīng)用的高速模式,可以將主機從生成嚴格定時的1-Wire波形這一任務(wù)中解脫出來。DS2480B采用有源電路,縮短了時隙結(jié)束時的恢復(fù)時間。圖1給出了1-Wire驅(qū)動器部分的簡化電路圖。圖1. DS2480B 1-Wire驅(qū)動器的簡化電路
當1-Wire總線處于空閑狀態(tài)時,DS2480B驅(qū)動器通過一個受控電流源提供上拉。該電流源可被關(guān)閉(下拉期間),可提供弱上拉電流(下拉及空閑時IWEAKPU),或者提供一個有源上拉(上升沿時IACTPU)。下拉電路(Q1)的壓擺率可以通過軟件調(diào)整。Q2表示需要大電流的1-Wire從器件功能(如EEPROM編程或溫度轉(zhuǎn)換)所采用的供電電路。Q2的功能在本應(yīng)用筆記中未討論。
為支持有效的布線配置,需要一個外部線路終端電阻RT (~100Ω)以盡量減小傳輸線路的影響,如反射、下沖和過沖。然而,加入RT后會導(dǎo)致有源上拉在1-Wire總線完全充電之前過早關(guān)閉。這是因為DS2480B檢測的是其1-Wire引腳的電壓,而非1-Wire網(wǎng)絡(luò)從器件一側(cè)的電壓。當1-Wire引腳電壓到達內(nèi)部門限值(典型值IACTPU × RT = 15mA × 100Ω = 1.5V)時,從器件一側(cè)的電壓將低于1-Wire引腳電壓,差值為RT上的壓降。1-Wire引腳電壓超出該門限值時定時器啟動,在有源上拉關(guān)閉前定時必須結(jié)束。但由于定時器啟動早,因此結(jié)束的也早。不過,在有源上拉關(guān)閉后(關(guān)閉初期),將繼續(xù)用弱上拉電流IWEAKPU為1-Wire總線充電,直到完全充電。
臨界參數(shù)
簡單來說,可將1-Wire網(wǎng)絡(luò)比作一個在通信過程中不斷充放電的有損耗電容。因此,在確定驅(qū)動器性能時,任何影響網(wǎng)絡(luò)充電和放電過程的因素都是必須考慮的參數(shù)。描述DS2480B驅(qū)動器的硬件定義的重要參數(shù)包括:- 1-Wire弱上拉電流,IWEAKPU
- 1-Wire有源上拉電流,IACTPU
- 有源上拉開啟門限,VIAPO
- 有源上拉定時器門限,VIAPYO
- 有源上拉開啟時間, tAPUOT (標準速率時為2.0μs, 高速模式下為0.5μs)
1-Wire主機時序配置
DS2480B具有不同于標準速率的伸縮速率模式。這一特別伸縮速率模式允許對1-Wire時隙進行微調(diào)。復(fù)位/在線檢測序列的時間是固定的。可以通過寫控制寄存器來設(shè)置的時序參數(shù)如下:- 寫1低電平時間(tLOW1)
- 數(shù)據(jù)采樣偏移(tDSO)
- 寫0恢復(fù)時間(tREC0)
- 下降沿壓擺率(DS2480B產(chǎn)生的下降沿)
表1. 可變參數(shù):僅針對伸縮模式
Description | Symbol | Par. Code | Parameter Value Codes and Values | Units | |||||||
000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 | ||||
Write 1 Low Time | tLOW1 | 100 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | μs |
Data Sample Offset, Write 0 Recovery Time | tDSO, tREC0 | 101 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | μs |
Pulldown Slew Rate | — | 001 | 15 | 2.2 | 1.65 | 1.37 | 1.1 | 0.83 | 0.7 | 0.55 | V/μs |
表2. 固定參數(shù):伸縮模式和高速模式
Description | Symbol | Value (μs) | Speed |
Write 1 High Time | tHIGH1 | 49 | Flexible |
8 | Overdrive | ||
Write 0 Low Time | tLOW0 | 57 | Flexible |
7 | Overdrive | ||
Active Pullup On-Time | tAPUOT | 2 | Flexible |
0.5 | Overdrive | ||
Write 1 Low Time | tLOW1 | 1 | Overdrive |
Data Sample Offset | tDSO | 1 | Overdrive |
Write 0 Recovery Time | tREC0 | 3 | Overdrive |
數(shù)據(jù)采樣偏移和寫0恢復(fù)時間參數(shù)由同一寄存器值控制。可以這樣做是因為這兩個參數(shù)都受1-Wire網(wǎng)絡(luò)充電速度的影響。在達到邏輯1之前不需對1-Wire采樣(tDSO功能)。反之,讀時隙期間對1-Wire線完全充電所需的等待時間即可滿足寫0時隙的恢復(fù)時間(tREC0功能)。
如圖2所示,寫1時隙和讀數(shù)據(jù)時隙由3部分組成:tLOW1, tDSO和tHIGH1。tLOW1可設(shè)為8μs至15μs。tDSO范圍為3μs至10μs,tHIGH1固定為49μs,寫1或讀數(shù)據(jù)時隙的持續(xù)時間可在60μs至74μs之間任意設(shè)置。從1-Wire總線讀數(shù)據(jù)(讀時隙)時,在時隙開始后tLOW1 + tDSO時間內(nèi)進行采樣,即采樣從下降沿開始后11μs至25μs之間。
圖2. 寫1時隙和讀數(shù)據(jù)時隙
寫0時隙(圖3)包括兩部分,tLOW0和tREC0。由于tLOW0固定為57μs ,tREC0介于3μs至10μs之間,因此寫0時隙的持續(xù)時間為60μs至67μs。根據(jù)DS2480B從主機UART接收到的數(shù)據(jù),各時隙之間有足夠的空閑時間。
圖3. 寫0時隙
1-Wire從器件響應(yīng)時序的時間取決于三個因素:主機下拉下降沿的壓擺率;從器件的電氣特性;主機和從器件之間的物理距離。在伸縮模式下,壓擺率可以調(diào)節(jié),上限為15V/μs,下限為0.55V/μs。但是,若壓擺率設(shè)置的較低,則當tLOW1設(shè)置的較短時會起沖突。多次測試表明,1.37V/μs是一個較為理想的壓擺率,適合幾乎所有帶或不帶線路終端的應(yīng)用。盡量避免設(shè)置到最快壓擺率(15V/μs),除非線路連接有接適當?shù)亩私印o端接時可能會有明顯的振鈴,特別是當DS2480B驅(qū)動長電纜時。
怎樣更改設(shè)置
如附錄A “選擇配置參數(shù)值” 所示,采用如下配置:tLOW1 = 8μs,tDSO = 9μs,時序周期為66μs時可獲得較佳性能。可以下載(ZIP)一個可執(zhí)行的Windows應(yīng)用程序tmline.exe用于設(shè)置。必須先將該文件從ZIP文件夾中解壓縮,然后移到Windows桌面。雙擊其圖標運行程序,或右擊該圖標并選擇"打開" 。程序會打開一個類似DOS的窗口,并執(zhí)行以下幾項任務(wù):自檢;檢測底層驅(qū)動軟件版本;顯示Pulldown Slew Rate、Write 1 Low Time、Data Sample Offset/Write 0 Recovery Time的默認設(shè)置。如果tmline程序啟動時1-Wire應(yīng)用軟件已經(jīng)運行,則顯示當前設(shè)置。
Current (STANDARD) 1-Wire line settings: PDSR = 1.37 V/us W1LT = 8 us DSOW0 = 6 ustmline程序要求用戶輸入的第一個參數(shù)為Pulldown Slew Rate。輸入的數(shù)值為參數(shù)值代碼,如表A所示。輸入0至7表示選擇新的值;輸入8表示不改變設(shè)置退出程序。所有其他輸入將被忽略。
Select the PDSR (pulldown slew rate): 0) 15 V/us 1) 2.20 V/us 2) 1.65 V/us 3) 1.37 V/us 4) 1.10 V/us 5) 0.83 V/us 6) 0.70 V/us 7) 0.55 V/us 8) EXIT Enter number: 3(例如用戶輸入:3)
輸入有效數(shù)值后,下一個需要指定的參數(shù)為Write 1 Low Time。
Select the W1LT (write-1 low time): 0) 8 us 1) 9 us 2) 10 us 3) 11 us 4) 12 us 5) 13 us 6) 14 us 7) 15 us 8) EXIT Enter number: 0(例如用戶輸入:0)
輸入新的Write 1 Low Time后,用戶輸入最后一個的參數(shù)為Data Sample Offset/Write 0 Recovery Time。
Select the DSO/WOR (data sample offset/write 0 recovery): 0) 3 us 1) 4 us 2) 5 us 3) 6 us 4) 7 us 5) 8 us 6) 9 us 7) 10 us 8) EXIT Enter number: 6(例如用戶輸入:6)
輸入有效數(shù)值后,tmline向端口適配器中的DS2480B寫入一組新的參數(shù)。然后循環(huán)顯示新的設(shè)置作為當前值,并請求輸入一個新的下降沿擺率。輸入"8"退出程序。1-Wire應(yīng)用軟件運行期間,新設(shè)置始終有效。
多從器件1-Wire網(wǎng)絡(luò)的恢復(fù)時間
標準速率模式
對于單從機網(wǎng)絡(luò),在標準速度模式下,1-Wire從器件數(shù)據(jù)資料中通常規(guī)定采用2.2kΩ上拉電阻和2.8V最低上拉電壓時最小恢復(fù)時間為5μs。Maxim的應(yīng)用筆記3829:確定多從機1-Wire網(wǎng)絡(luò)的恢復(fù)時間,描述了在四種不同溫度、兩種不同電壓的條件下如何確定多從器件1-Wire網(wǎng)絡(luò)的恢復(fù)時間。由于DS2480B是一個5V器件,因此可以參照應(yīng)用筆記3829中有關(guān)工作電壓等于或大于4.5V時恢復(fù)時間的相關(guān)描述。溫度高于或等于-5°C時,標準速率下的恢復(fù)時間規(guī)定為2 × N + 1μs (N為從器件個數(shù))。因此,一個從器件的恢復(fù)時間為3μs,兩個從器件為5μs,3個從器件為7μs ,4個從器件為9μs。因此,根據(jù)附錄B中最差情況(1.5mA IWEAKPU,9mA IACTPU)計算,并且參考“四個從器件的9μs恢復(fù)時間”這一配置為參考,可以得知DS2480B至少可以處理31個從器件。因此,標準速度下DS2480B驅(qū)動器的驅(qū)動強度至少為2.2kΩ有源上拉電阻的8倍。
高速模式
對于單從機網(wǎng)絡(luò),在高速模式下,1-Wire從器件數(shù)據(jù)資料通常通常規(guī)定采用2.2kΩ上拉電阻和2.8V最低上拉電壓時最小恢復(fù)時間為2μs。根據(jù)上文提及的應(yīng)用筆記3829,溫度高于等于-5°C時,高速模式下的恢復(fù)時間為1.37 × N + 0.5μs (N為從器件個數(shù))。因此,一個從器件的恢復(fù)時間為1.87μs,兩個從器件為3.24μs,三個從器件為4.61μs,四個從器件為5.98μs。因此,以"兩個從器件的恢復(fù)時間為3.24μs"為參考,并按比例縮減為1.8個從器件的恢復(fù)時間為3μs,然后在高速模式下,按最壞情況執(zhí)行同樣的計算,可以得出DS2480B至少可以處理9個從器件。因此,高速模式下DS2480B驅(qū)動器的驅(qū)動強度至少為2.2kΩ有源上拉電阻的5倍。
- VIAPYO通常大于按最差情況計算時的假定值。
- 只要電壓升高至足以被認為是時隙結(jié)束,則從器件允許不完全再充電。
- DS2480B的VIH1也許低于數(shù)據(jù)資料中規(guī)定的最小值。
總結(jié)
1 - Wire網(wǎng)絡(luò)的可靠性同時取決于主機(驅(qū)動器)和從器件。運行于標準速度時,DS2480B 1-Wire驅(qū)動器采用伸縮速率并設(shè)置tLOW1 = 8μs、tDSO = tREC0 = 9μs時,可實現(xiàn)最優(yōu)的性能。1.37V/μs的壓擺率是一個較理想的設(shè)置。此時1-Wire從器件速率范圍為15μs至54μs。只有一個從器件并且時基低于54μs時,系統(tǒng)將無法工作。下降沿擺率變?yōu)?.65V/μs或2.2V/μs,會增加網(wǎng)絡(luò)中“臨界”從器件正常工作的機會。為了適應(yīng)那些速度較慢的1-Wire從器件(例如,60μs),必須將tHIGH1和tLOW0延長6μs,分別變?yōu)?5μs和63μs。然而,當前版本的DS2480B尚不支持該功能。以采用1-Wire驅(qū)動器的免費Windows軟件OneWireViewer為例。標準速率下,OneWireViewer軟件默認tLOW1 = 8μs、tDSO = 6μs、壓擺率1.37V/μs。如上所述,將有必要將tDSO增加至9μs,OneWireViewer 4.01和更高版本將tDSO默認值改為9μs,從而適應(yīng)本應(yīng)用筆記的推薦值。tLOW1和壓擺率的默認值分別保持為8μs和1.37V/μs。
DS2480B是強上拉1-Wire驅(qū)動器。相比采用2.2kΩ上拉電阻的電路而言,標準速度和高速模式下DS2480B的驅(qū)動能力至少為該電路的8倍和5倍。
附錄A
選擇配置參數(shù)值
寫1和讀數(shù)據(jù)時隙由tLOW1、tDSO和 tHIGH1三部分組成,有64種組合,如表3所示。tDSO越長(寫0時隙時為tREC0),網(wǎng)絡(luò)再充電(恢復(fù))需要的時間越長。然而, tLOW1和tDSO設(shè)為最大值時,采樣時間點會推遲至?xí)r隙開始25μs后才開始采樣。采樣點也就是DS2480B讀1-Wire總線的時間點。表3. 時隙周期與tLOW1和tDSO的對應(yīng)關(guān)系
tLOW1 (μs) | tDSO (μs) | |||||||
3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
8 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 |
9 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 |
10 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |
11 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 |
12 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 |
13 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 |
14 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 |
15 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 |
1-Wire從器件的內(nèi)部時基變化范圍為15μs至60μs。因此,從器件發(fā)出信號0做為響應(yīng)時,可以在時隙開始15μs后,停止總線拉低。壓擺率設(shè)為1.37V/μs (標稱值)時,從器件響應(yīng)時隙,并在電壓達到2.2V左右或tLOW1大約2μs后啟動其定時器。為確保在這樣快的從器件時仍然可以讀到信號0,采樣時間點不得晚于時隙開始后2 + 15 =17μs。所有周期不超過66μs的時序都符合這一條件。另一個從器件可能響應(yīng)時隙,并在電壓達到大約0.8V或tLOW1大約3μs后啟動其定時器,并在60μs后停止拉低總線。在這種情況下,1-Wire總線可以在時隙開始后63μs開始充電。為了能將恢復(fù)時間設(shè)為最小值3μs,時序周期應(yīng)取最小值66μs。快速的壓擺率可使這一時間點與從器件開啟定時器的時間點更加靠近。這可以稍微改善恢復(fù)時間,但若驅(qū)動器未接線路終端,這樣做也增加了振鈴。
如果寫1和讀數(shù)據(jù)時隙周期不為66μs會發(fā)生什么?快速1-Wire從器件支持較短的時序周期。但是,時隙周期每減小1μs,最慢的從器件的響應(yīng)時間必須快1μs。在時隙周期為60μs的極限條件下,網(wǎng)絡(luò)中能正常工作的最慢的從器件不能低于54μs。慢較的1-Wire從器件允許時隙周期超過66μs。然而,時隙周期每增加1μs,速度最快的從器件必須慢1μs以保持其在網(wǎng)絡(luò)中的可讀性。在時隙周期為74μs的極限條件下,網(wǎng)絡(luò)中能正常工作的最快的從器件不能高于23μs。隨機選擇的1-Wire從器件中不滿足上述最后一個條件的概率很低。因此,時隙周期小于64μs或大于68μs時可靠性較差。多數(shù)1-Wire從器件的速度大約為15μs到60μs這一范圍的中心值,低于54μs的器件比較罕見。
由于選擇的tDSO值也適用于寫0時隙時再充電的tREC0,因此tREC0應(yīng)盡可能設(shè)為最大值。該值取最大值決定了tLOW1 = 8μs和tDSO = 9μs時器件性能較佳(表3中的高亮部分)。再從從器件的角度來分析寫0時隙,從器件在tLOW0大約3μs后啟動定時器并在60μs后讀數(shù)據(jù)(采樣)。由于時隙開始57μs之后tLOW0結(jié)束,因此6μs后從器件開始采樣,此時tREC0幾乎結(jié)束。為了保證從器件不錯過寫0時隙的最后一閣采樣點,其時基絕不能低于54μs。該要求也保證了讀0時隙的最短恢復(fù)時間和寫0時隙一樣,即9μs。
附錄B
DS2480B可以驅(qū)動多少個從器件?
這一問題并不能簡單的回答。1-Wire從器件與理想電容器還是有些區(qū)別。不過,可以用一個電容模型來描述其工作情況,電壓低于某一固定值時該電容模型呈現(xiàn)低容值,電壓大于該值時該電容模型呈現(xiàn)高容值。大電容值相當于寄生電源電容,用于從器件的再充電過程。為加快充電過程,DS2480B用2級電流源代替電阻。開始時先用小電流IWEAKPU充電,然后再采用較大電流IACTPU充電。圖4中上升沿詳細描述了這一過程。
圖4. 上升沿
在t1時刻,下拉(主機或從器件)結(jié)束且弱上拉電流開始對1-Wire總線充電。總線上的負載和DS2480B的IWEAKPU值決定了上升斜率。在t2時刻,總線電壓超過門限電壓VIAPO。此時DS2480B充電電流切換到相對較大的電流IACTPU。因此,1-Wire總線電壓開始快速上升。當t3時刻電壓超過門限VIAPYO時,定時器開始計時,使IACTPU繼續(xù)保持2μs (tAPUOT,伸縮模式)或0.5μs (高速模式)。定時結(jié)束后,IWEAKPU繼續(xù)為1-Wire總線供電,直到DS2480B啟動下一個時序或通訊周期。
采用恒定電流源對電容充電可以使用下面的公式進行描述:
V(t) = ICHARGE × t / C(等式1)
設(shè)定V(t) = VIAPO,令I(lǐng)WEAKPU等于ICHARGE,可以從等式(1)中得到到達門限值VIAPO的時間t2等于:
t2 = C × VIAPO / IWEAKPU(等式2)
t2時,充電電流從IWEAKPU變?yōu)镮ACTPU,并持續(xù)充電使電壓由VIAPO達到并超過VIAPYO。將等式2展開可推導(dǎo)出充電至VIAPRO的時間t3等于:
t3 = C × [(VIAPTO - VIAPO) / IACTPU + VIAPO / IWEAKPU](等式3)
估算DS2480B可以驅(qū)動的從器件數(shù)目時,有必要將再充電過程分為三個階段,并對每階段進行單獨分析。
Phase 1 | Recharge from 0 to 3.6V, the lowest VIAPTO. The end of this phase approximately coincides with the beginning of the slave's recharge. The slave's low capacitance applies. |
Phase 2 | Recharge continues with IACTPU until tAPUOT expires. The slave's high capacitance applies. |
Phase 3 | Recharge continues with IWEAKPU until the next time slot begins. The slave's high capacitance applies. |
估算DS2480B可以驅(qū)動的從器件數(shù)目時,有必要將再充電過程分為三個階段,并對每階段進行單獨分析。 充電周期第1階段用等式3計算。第2階段用等式1計算,令I(lǐng)CHARGE等于IACTPU,t等于tAPUOT。這樣可以得到在剩余時間內(nèi)IACTPU繼續(xù)充電所引起的電壓增量。對于第三階段,計算充電剩余時間,并用等式1確定IWEAKPU引起的額外電壓變化。在給定從器件數(shù)目條件下,如果第2階段和第3階段時VIAPYO的電壓變化導(dǎo)致其高于或等于工作電壓,則器件完成了完全充電。能夠滿足這一條件的最大從器件數(shù)就是所期望的結(jié)果。這種算法可以用電子表格來實現(xiàn),其中從器件數(shù)目做為變量。
經(jīng)過上述計算后,可得到伸縮模式下可驅(qū)動的從器件數(shù)目是31。注意,該數(shù)字是一個保守的估計。實際可驅(qū)動的從器件數(shù)目要更多。表4列出了計算時用到的輸入?yún)?shù)值。
表4. 伸縮模式下計算可驅(qū)動的從器件數(shù)目時用到的參數(shù)值
Parameter | Value | Comment |
Operating voltage | 5V | Nominal value |
Slave low capacitance | 50pF | High estimate, actual value could be lower |
Slave high capacitance | 600pF | Typical value |
VIAPO threshold | 1V | Typical value |
Phase 1 threshold | 3.6V | Lowest VIAPTO specification value |
Weak pullup current | 1.5mA | Lowest IWEAKPU specification value |
Active pullup current | 9mA | Lowest IACTPU specification value |
Active current continuation | 2μs | The continuation timer starts at VIAPTO |
Recovery time | 9μs | tRECO |
相同條件下,高速模式可算出可驅(qū)動9個從器件。考慮電纜電容時,必須確認第1階段的持續(xù)時間不超過1μs。同樣,該數(shù)字也是一個保守的估計。實際可驅(qū)動的從器件數(shù)目要更多。表5列出了計算時用到的參數(shù)值。
表5. 高速模式下計算可驅(qū)動的從器件數(shù)目時用到的參數(shù)值
Parameter | Value | Comment |
Operating voltage | 5V | Nominal value |
Slave low capacitance | 50pF | High estimate, actual value could be lower |
Slave high capacitance | 600pF | Typical value |
VIAPO threshold | 1V | Typical value |
Phase 1 threshold | 3.6V | Lowest VIAPTO specification value |
Weak pullup current | 1.5mA | Lowest IWEAKPU specification value |
Active pullup current | 9mA | Lowest IACTPU specification value |
Active current continuation | 0.5μs | The continuation timer starts at VIAPTO |
Recovery time | 3μs | tRECO |
注意,為簡單起見,假定從器件開始再充電的時間與電壓到達VIAPYO的時間重合。實際再充電可能開始的早一些或遲一些,與數(shù)據(jù)流成動態(tài)變化。再充電開始的越早,到達VIAPYO越晚,以補償額外充電所需的能量。如果再充電開始較晚,充電需要的能量較少;第1階段的持續(xù)時間越短,第3階段補償?shù)臅r間就越長。
注意,這些計算不考慮連接主機和從器件的電纜的電容。如需得出采用某一特定的電纜可以支持多少從器件,先計算出電纜電容,并在計算第1階段持續(xù)時間以及第2和第3階段電壓變化量時將其計入從器件總電容。
附錄C
網(wǎng)絡(luò)過載條件
1-Wire總線有兩種類型的過載,容性過載和直流過載。電容過載表現(xiàn)為恢復(fù)時間不足。它通常表現(xiàn)為寫0時隙末尾的一個毛刺,即再充電未完成時就開始下一個時序。如果遵從本應(yīng)用筆記中的建議進行設(shè)置和加載,不大可能發(fā)生電容過載。如果1-Wire和GND之間接一個阻值約為3kΩ的電阻,則會發(fā)生直流過載。額外的“漏電流”導(dǎo)致恢復(fù)時間內(nèi)1-Wire電壓跌至低于驅(qū)動器的電源電壓。如果出現(xiàn)這種情況,將在上升沿出現(xiàn)直流過載,如圖5所示。1-Wire電壓升至VDD后,一旦IACTPU結(jié)束,1-Wire電壓將降至較低的電壓。
圖5. 上升沿DC過載
評論
查看更多