DS1859的與眾不同之處在于其內部校準及右移位(可擴展動態范圍)特性。當結合使用時,這些特性可極大地提高DS1859器件中12位模數轉換器(ADC)的性能,無需增加成本及尺寸即可達到16位ADC的精密度與準確度。此外,DS1859的內部校準還具有可編程增益及可編程偏移,從而可以省去大部分的外部信號調理電路。在ADC之前的模擬域中提供可編程增益,對輸入信號進行放大/衰減,這樣可以充分利用ADC的整個動態范圍。然后,在數字域,通過右移再將數字輸出同比縮小(除以某數),從而使所需的(或者SFF-8472所要求的) LSB保持不變,甚至對用戶透明。
本應用筆記旨在展示DS1859的內部校準及右移位功能給實際應用所帶來的好處。并且還提供了一些對于實施內部校準及右移位操作非常有用的信息。最后,提供了一個實例,用以支持本文論點。
DS1859模擬監視輸入
在深入討論之前,最好先看一下DS1859的MON輸入框圖(見圖1)。為簡明起見,只畫出了其中一路輸入,三路MON輸入原理上是一致的。
圖1. DS1859 MON輸入框圖
如圖所示,一個單端電壓加于DS1859 MON管腳上。在模擬域中,該電壓被送入一個具有衰減及放大功能的可編程增益單元中。該增益單元可對MON通道進行校準,以獲得需要的LSB或滿量程電壓。滿量程電壓是指數字輸出達到最大(FFF8h)時的輸入電壓。此外,增益單元還可將小輸入信號放大,以便最大限度利用ADC動態范圍。稍后將對此進行詳細說明。
增益單元之后是12位ADC。12位轉換結果以左對齊的2字節(16位)數字量形式輸出。ADC可輸出0000h至FFF8h的數字值。
一旦進入數字域,DS1859的內部校準又向前邁進了引人注目的一步,用戶可編程數字偏移可以為轉換結果引入一定量的正向或負向偏移。數字偏移功能通過簡單的數字相加,在內部為轉換結果增加正向或負向偏移。必須指出的是,正偏仍將鉗位在FFF8h數值上,但最小數值則可能大于零。同樣,負偏將具有小于FFF8h的滿量程數值(因為負偏須從轉換結果中扣除)。最小值仍為0000h。有關數字偏移的更詳細信息請參見后面的偏移校準寄存器部分。
數字量輸出前的最后一步操作是右移位。每一路MON輸入均有3個控制位,用來控制右移次數。右移位的優勢將在后面詳細討論。如果將此3位設為0,則禁止右移功能。與偏移一樣,右移位也會影響滿量程數字輸出。例如,若將其設置成右移2位,則滿量程數字輸出變為3FFEh。移位完成后,數值隨后被寫入相應的寄存器中,從這里用戶可以讀取轉換結果。這也是用來進行告警及警告比較的參數。
工廠校準的DS1859
MON輸入都已經在工廠調整為2.5V滿量程電壓。這意味著2.5V滿量程輸入電壓將輸出FFF8h數字值。而且,每一數字偏移也已經在工廠設置為0,因此0V輸入即意味著0000h數字輸出。最后,右移位的工廠默認設置值為0。工廠校準后的DS1859的傳輸函數示于圖2B,并將在稍后進行解釋。
對于0至2.5V輸入電壓,工廠校準過的器件將輸出4096個量化值中的一個,提供610μV (2.5V/4096)或12位的分辨率。理想情況下,將被量化的信號是一個0至2.5V的信號,這樣就可利用整個轉換范圍。然而,現實情況并非總是如此。以接收功率為例,0至0.5V輸入電壓就很常見。很遺憾,在這種情況下,將有80%的數字輸出碼永遠不會用到。這對于可產生4096個數字碼的12位轉換器來說,僅輸出820個碼(4096的20%)實在是一種浪費。其余的3276個碼將永遠不會被使用。而且,對于用到的820個碼來說,其分辨率仍為610μV。
在利用更多數字碼的多種努力中,至少將接收功率MON輸入通道重新校準為小于2.5V的滿量程電壓頗具有吸引力。單這么做還不足以解決問題,因為此時LSB會改變且不再與所要求的LSB匹配。解決這一問題的有效途徑是采用以下所述的內部校準加右移位方法。
使用DS1859內部校準及右移位的好處
內部校準及右移位在被監視信號較小、沒有利用整個ADC范圍時最有用。模數轉換之前,在模擬域中先將信號放大一定的倍數,然后在數字域中再除以相同的系數,這樣,LSB量值保持不變,而精密度和準確度在每右移一位(最多4位)時提高了2倍。4次移位之后,精密度有所損失,但準確度會繼續提高。值得稱道的是,這種操作僅僅利用了原來被浪費掉的動態范圍。
運用內部校準及右移位的優勢可用圖2中的示例予以恰當地說明。圖2A為一被監視信號的電壓與時間的關系曲線。該信號在0V至0.5V之間擺動。圖2B及圖2C為MON輸入電壓與數字輸出的關系曲線,分別代表經工廠校準的傳輸函數,以及采用2次右移和滿量程電壓為2.5V/4 = 0.625V時的傳輸函數。0.625V的滿量程意味著被浪費掉的碼更少,因為轉換結果比2.5V滿量程時擴大了4倍,而接下來它又被除以4而同比縮小(2次右移位)。確定右移位數以及與之相關聯的滿量程電壓的根據將在后續部分中詳細討論。這里只使用2次右移位來比較有右移位與無右移位的差別。所采用的器件設置以及與每一傳輸函數相關的計算列于相應的傳輸函數下面。
圖2. 無右移與右移位對比
圖2中,3條曲線以相同的y軸坐標并排排列,這樣,對于輸入信號上的某個特定點(圖2A),通過一條通過該點及各傳輸函數的水平直線,可粗略地估計出數字輸出。再回到本例的0V至0.5V輸入信號,0.5V輸入由一條穿過三條曲線的水平粗線標出,比較圖B與C即可看出右移位的好處。該圖非常直觀地說明,當ADC輸入范圍遠大于輸入信號范圍時,大量的量化臺階將被浪費掉(見圖B)。4096個臺階中僅有819個被用到。圖B中剩下的80%碼字被浪費掉。與之相對比,曲線C則顯示,通過在內部校準到一個較小的滿量程電壓,再運用右移位,精密度提高了。現在可用4096個碼中的3276個碼來對輸入信號進行量化。更值得一提的是,經過右移后,所需的LSB量值沒有改變。右移位操作對用戶透明。通過觀察這兩條曲線上的輸出近似為同一數字值即可證明這一點。
如何確定右移位數
某一應用可以使用的右移位數取決于滿量程電壓(內部校準),以及給定輸入信號所用到的數字編碼百分比。如果已知輸入信號的最大電壓(以及滿量程電壓),則可計算出理想的數字輸出碼。否則,將要求在進行工程估值以確定數字輸出范圍時采用一種所謂的“傳遞”方法,并由此而得出理想的右移位數。以下對這種“傳遞”法加以詳細說明。
1. | 將右移位數設為0。 |
2. | 執行內部校準以獲得所需的LSB (這將確定起始滿量程電壓)。 |
3. | 施加最小及最大輸入信號并讀取相應的數字輸出以確定所使用的范圍。 |
4. | 確定所使用的ADC動態范圍百分比。如果讀數超出7FFFh,則不能使用右移位(0右移位)。如果讀數小于7FFFh,則至少可使用1次右移位。如果讀數小于3FFFh,則可使用2次右移位,依此類推。對于其余范圍請參見DS1859數據資料中的表9。 |
5. | 為補償右移位所引入的除數,必須在模擬域中增加增益以保持所需的LSB量值不變。新的滿量程電壓可用下式來計算:新的滿量程電壓 = 原來的滿量程電壓/2右移位數。因此,如果第2步的內部校準得到2.0V的滿量程電壓(滿足所需的LSB量值),并且讀數大于1FFFh但永不會超過3FFFh,此時可使用2次右移位。對于此例,新的滿量程電壓為2.0V/22 = 0.5V; |
6. | 內部校準該通道(右移位數仍設置為0)為新的滿量程電壓。 |
7. | 將右移位數設置為新值。 |
一旦估算出理想右移位數及針對特定應用的滿量程電壓,則只需用步驟1、6及7進行校準。
DS1859內部校準及右移位寄存器
DS1859器件內負責保存各模擬通道內部校準及右移位參數的寄存器列于表1。其中列出了各個MON通道以及VCC通道的寄存器地址。VCC通道不在本應用筆記討論之列,但為完整性起見,將其一并列于表中。量化結果的存放地址也列于表中,以表明其相對位置。請注意,增益、偏移及右移位寄存器是位于存儲表01h中(請不要將其與本應用筆記中的表1混淆)。存儲表01h的選擇是通過將01h寫入“表選擇”字節7Fh中來完成。由于轉換結果位于存儲器的低半區(0-7Fh),因此它們與“表選擇”字節無關。
表1. DS1859內部校準及右移位寄存器
VCC | MON1 | MON2 | MON3 | |
Gain Cal | 92-93h | 94-95h | 96-97h | 98-99h |
Offset Cal | A2-A3h | A4-A5h | A6-A7h | A8-A9h |
Right Shifts | N/A | 8Eh (b6-b4) | 8Eh (b2-b0) | 8Fh (b6-b4) |
Readings | 62-63h | 64-65h | 66-67h | 68-69h |
Table 01h |
增益校準寄存器
增益校準寄存器為一個雙字節值,它通過調整輸入開關電容網絡來確定某一特定被監視通道的增益/衰減量。這使得用戶能將滿量程電壓校準成介于-500mV及6.5535V之間的任何期望值。
但遺憾的是,對增益校準寄存器進行編程并非像“我喜歡增益4....因此我只需要將4寫入增益校準寄存器中”那么簡單。而且,由于不同器件之間(以及不同批次之間)開關電容網絡中的電容值有所差異,因此確實有必要對設定值進行校準。此校準步驟以及確定需寫入增益校準寄存器中值的步驟列于DS1859數據資料中的“內部校準”部分中。其他信息則請參見本應用筆記中的“怎樣進行內部校準”部分。
校準DS1859時最后須注意的是,一定要搞清楚偏移及右移位寄存器的值,否則,如果它們為非0或者未進行補償,則器件將不會被校準成需要的結果。
偏移校準寄存器
偏移校準寄存器同樣也是一個雙字節值,它確定對每一被監視輸入信號所施加的數字偏移量。前面曾提到,DS1859的偏移其實是轉換值的簡單數字增加或減少,因此在增益被校準成所需值后(且在右移位以前),可通過可編程偏移抵消任何失調誤差或轉移動態范圍。但與增益校準寄存 器相類似,確定要編程的偏移值并非像“我喜歡100mV偏移...因此我只需將100寫入寄存器中即可”那么容易。
DS1859數據資料中,“內部校準”部分中的偽碼顯示了應如何確定“抵消”失調所需的偏移校準值,下面提供更多的一些信息和一個實例來說明如何確定正向和負向偏移。
偏移校準可通過先確定應從轉換值中增加或減去多少個數來計算。一種常用方法是先施加“零”輸入(如關掉激光源),然后再讀出轉換值,而這正是您應從所有轉換值中減去的值。
需寫入偏移校準寄存器中的值,可通過將所需偏移數代入到DS1859數據資料中提供的等式中,并重復以下步驟來計算:
偏移校準寄存器 = [4000h - (Count/2)] XOR 4000h
例1:如果您將0V加到MON輸入上并讀到一個200 (C8h)的數,則您可以利用偏移寄存器從A/D轉換結果中減去(比如說) 200 (C8h)來將其清零。利用下式可計算出應該寫入寄存器中的參數:
偏移校準寄存器 = [4000h - (C8h/2)] XOR 4000h = 7F9Ch
請記住,在此情況下將執行減法運算,這樣滿量程數(FFF8h)也將減少C8h,新的滿量程數為FF30h。
例2:現在讓我們來看另一種情況,這種情況下你可能想在讀數中增加200個計數。在此情形下,兩次求負(公式中的減號和-C8h相消)將使第二項成為正值,得到:
偏移校準寄存器 = [4000h + (C8h/2)] XOR 4000h = 0064h
為計算新的滿量程數,您或許會嘗試將FFF8h加上C8h,但FFF8h已是最大可能讀數,因此滿量程數仍將保持為FFF8h。
例3:計算零偏移時的偏移校準值:
偏移校準寄存器 = [4000h - (0/2)] XOR 4000h = 0000h
這也是出廠默認的偏移校準寄存器設置。
右移位寄存器
右移位寄存器(表01h中的字節8Eh至8Fh)比偏移寄存器更易于理解。由于MON1至MON3可執行多達7次右移位,故對于每一MON輸入均需使用3位。對于表01h中字節8Eh所代表的MON1與MON2設置,以及表01h中字節8Fh所代表的MON3設置,請參見器件數據資料中存儲器配置圖中的數位位置。這些EEPROM寄存器的工廠默認值為00h,禁止右移位。
為進一步說明右移位的結果,圖3給出了幾個右移后的MON量化值例子。
圖3. MON寄存器右移位舉例
怎樣進行內部校準
雖然有好幾種內部校準方法,但本應用筆記只討論DS1859數據資料中所給出的采用偽碼的二進制搜索法。偽碼算法的輸出即為增益及偏移寄存器值,它產生所需的傳輸函數,亦即所需的LSB。
為使用偽碼算法,必須能將激光設置成兩種不同的強度,例如為最小及最大值的90%等,而且還必須能進行多次重復。對于非光學應用,必須按要求將兩種不同的電壓加于MON輸入上。器件數據資料中所提供的算法采用90%最大值以使上限低于鉗位值。然而,當采用滿量程一定百分比的電壓進行測量時,在做數值計算時也應考慮相應的數字量百分比。
可通過將偏移及右移位寄存器設置成已知狀態(例如0偏移及0右移位)來開始該偽碼算法,盡管本例中將兩個寄存器均設置為0,但只要對它們進行相應的補償,則亦可采用其他值。例如,如果以所編程偏移開始,則FFF8h可能不再是被鉗位的滿量程數字值(參見偏移校準寄存器部分)。除初始化寄存器外,該算法也可從計算幾個為所需LSB函數的重要常數開始。
二進制搜索增益值時,首先將增益校準寄存器設置成滿量程的一半(即8000h),然后再將90%最大輸入加至被校準MON通道,然后讀取量化值。將此測量值稱為Meas2。接著再檢查Meas2,看它是否被鉗位在FFF8h上(此時偏移及右移位均為0)。如果讀數被鉗位,則無法斷定轉換值恰好是FFF8h還是比這大許多(此時也被鉗位成FFF8h)。無論怎樣,增益設置都太高。在后續的二進制搜索法中,將增益值減半并重復此操作,直至找到非鉗位增益值為止。
一旦找到非鉗位的Meas2,即可通過施加零輸入并讀取其數字轉換值來繼續該算法。此轉換值即為Meas1。最后,計算Meas2與Meas1的差值,并使用在算法開始時所算出的常數來與所需差值(CNT2-CNT1)進行比較,如果Meas2-Meas1小于CNT2-CNT1,則將增益再減半;如果Meas2-Meas1大于CNT2-CNT1,則在減半后再將其恢復到當前增益值。重復此過程直至總共進行16次。即獲得一個代表所需增益(以及所需LSB)的16位值。
以下介紹另一種能使該增益校準過程更加形象的方法。先從16位增益校準寄存器的MSB (b15)開始,將該位設置為1 (同時將其他各位初始化為0);再使MSB = 1,并加上模擬輸入,然后再讀取對應的數字輸出,如果該讀數被鉗位,則表示增益太高,可將MSB寫回至0,否則將其保留為1,因此現在即已知MSB。然后再轉向下一位(b14),也是先將b14設為1 (此時保留b15為已確定值),此時b13至b0仍為0。如果增益仍太高,則可重復前述操作,即將b14設為0,否則保留為1。此過程一位接一位進行,直至確定出全部16位為止。其結果仍是一個代表所需增益的16位值。
在確定所需增益以后,即可計算新的偏移或將其保留為0 (無偏移)。此校準方法取決于所使用的偏移性質。數據資料中對該算法的解釋是基于如下假設,即:用戶想要執行負偏來清零數字讀數,以使零模擬輸入時產生全0輸出。這可簡單地通過施加零模擬輸入并讀取相應的轉換值來實現。如果零輸入(例如激光關斷)產生(例如) 20h的數字輸出,則可對偏移進行編程以將20h從每一轉換值中減去。在本例中,則是先將20h代入偏移公式中,然后再將計算結果編程至所需MON通道的偏移校準寄存器中來完成。
內部校準及右移位舉例
為演示本應用筆記所提及的概念,我們采用了以下示例。
在此例中,利用MON3來監視Rpower,當施加-40dBm最小輸入時,在DS1859的MON3管腳上呈現出10mV的電壓,此時該輸入所需數字輸出為0000h。當施加0dBm輸入時,MON3管腳上的電壓為300mV,此時所需數字輸出為2710h,這樣的選擇是為了滿足SFF-8472規定的LSB (Rpower的LSB對應于0.1μW)。
確定此例中的理想右移位數相對比較簡單,因為已經給定所需的數字輸出范圍(0000h至2710h)。利用DS1859數據資料中的表9,可得到理想右移位數為2。現在請記住右移位數為2,要使2710h在經過2次右移位后仍為最終輸出數字值,我們可推斷,此時300mV的輸入在右移位以前必須產生9C40h的轉換值,因此需要用內部校準來將300mV輸入的轉換值“抬高”至9C40h。在完成偏移的內部校準及編程以后,即可執行2次右移位。該舉例被歸納于表2中。
表2. 內部校準及右移位舉例
Customer Signal Rpower (dBm) | Voltage applies to MON3 pin (mV) | Digital outputs during cal. (0 right shifts)(hex) | Final Digital output (2 right shifts)(hex) |
-40 | 10 | 0000 | 0000 |
50 | 0563 | ||
100 | 0C1F | ||
150 | 12DB | ||
200 | 1997 | ||
250 | 2051 | ||
0 | 300 | 9C40 | 2710 |
在確定了輸入與輸出之間的關系后(如表2所示),即可用數據資料中提供的內部校準程序來對器件進行內部校準。該校準程序先從執行幾步如下所示的預先計算開始。請注意,這里并未采用數據資料校準程序中所給出的90%,因為第二校準點(300mV = 9C40h)已經小于滿量程值的90%,故本例中所采用的內部校準程序未采用90%參考點:
根據表2進行以下計算:
LSB = (0.300V - 0.010V)/(9C40h - 0000h) = 0.290V/40,000 = 7.25μV
滿量程電壓 = FS = LSB × 65535 = 7.25μV × 65535 = 0.475128V
CNT1 = 0.010/LSB = 1379.3 => 1379 (dec)
CNT2 = 0.300/LSB = 41379.31 => 41379 (dec)
當采用兩個校準點時,CNT1及CNT2為所期望(所需)的數字輸出,內部校準程序將反復搜索與這兩個值所確定的斜率最接近的斜率。
校準程序反復進行16次以下過程,即先用二進制來對該斜率進行編程然后再檢查其是否與所需的斜率相等,在此例中,是采用內部校準程序以及表3中所列全部16次重復輸入與輸出來對DS1859進行校準。
表3中的第一欄“Iteration (重復)”等于程序中的“n”; gain_result (增益結果)欄為每次重復時被編程進增益校準寄存器(即器件表01h中的字節98至99h)中的值;“Meas1”及“Meas2”欄則分別為施加300mV及10mV輸入時器件上的讀數;最后,對于Meas2不被鉗位的重復,將Meas2-Meas1與CNT2-CNT1進行比較,如果Meas2-Meas1大于CNT2-CNT1,則表示增益結果太大,對應于此次重復的Gain Cal (增益校準)位為0,而這隨后又確定后續重復中的增益結果。當完成全部16次重復后,即得到增益校準值,如表3所示,此例中所使用器件的增益校準值為5038h。
表3. 實際的內部校準值
Iteration | gain_result | Meas2 | Meas1 | Meas2 | Meas1 | Meas2-Meas1 | CNT2-CNT1 | bit result | Gain Cal |
(dec) | (hex) | (hex) | (dec) | (dec) | (dec) | (bin) | (hex) | ||
15 | 8000 | fd58 | 870 | 64856 | 2160 | 62696 | 40000 | 0 | 5 |
14 | 4000 | 82a0 | 450 | 33440 | 1104 | 32336 | 40000 | 1 | |
13 | 6000 | c010 | 658 | 49168 | 1624 | 47544 | 40000 | 0 | |
12 | 5000 | a138 | 558 | 41272 | 1368 | 39904 | 40000 | 1 | |
11 | 5800 | b0b8 | 500 | 45240 | 1280 | 43960 | 40000 | 0 | 0 |
10 | 5400 | a938 | 5a0 | 43320 | 1440 | 41880 | 40000 | 0 | |
9 | 5200 | a530 | 578 | 42288 | 1400 | 40888 | 40000 | 0 | |
8 | 5100 | a328 | 568 | 41768 | 1384 | 40384 | 40000 | 0 | |
7 | 5080 | a238 | 568 | 41528 | 1384 | 40144 | 40000 | 0 | 3 |
6 | 5040 | a1a8 | 560 | 41384 | 1376 | 40008 | 40000 | 0 | |
5 | 5020 | a170 | 558 | 41328 | 1368 | 39960 | 40000 | 1 | |
4 | 5030 | a190 | 558 | 41360 | 1368 | 39992 | 40000 | 1 | |
3 | 5038 | a198 | 558 | 41368 | 1368 | 40000 | 40000 | 1 | 8 |
2 | 503C | a1a0 | 558 | 41376 | 1368 | 40008 | 40000 | 0 | |
1 | 503a | a1a0 | 558 | 41376 | 1368 | 40008 | 40000 | 0 | |
0 | 5039 | a1a0 | 558 | 41376 | 1368 | 40008 | 40000 | 0 |
對于已被編程成新增益校準值的器件,可通過施加10mV (即我們希望其輸出讀數為0000h的電壓)并讀取其數字輸出結果來確定其偏移校準。此例中所使用的器件在輸入為10mV時輸出為0558h。利用偏移公式,可將偏移校準計算如下:
MON3偏移校準 = [4000h - 0558h/2] XOR 4000h = 7D54h
最后,再按下式來計算新鉗位值:
新鉗位值(右移前) = FFF8h - 0558h = FAA0h
完成內部校準后,即可通過將20h寫入表01h中的8Fh來執行2次右移位。
結論
DS1859的內部校準及右移位特性,可為用戶提供最大的靈活性并使其適用。于各種應用本應用筆記提供了DS1859數據資料中未給出的附加信息,例如為什么內部校準及右移位具有優勢以及如何來實現等。同時還給出了一個與理論相聯系的運用“傳遞”方法的實例,并提供了DS1859內部校準過程中實際得到的讀數。
審核編輯:郭婷
-
寄存器
+關注
關注
31文章
5421瀏覽量
123340 -
存儲器
+關注
關注
38文章
7636瀏覽量
166412 -
adc
+關注
關注
99文章
6639瀏覽量
548263
發布評論請先 登錄
DS1859 pdf datasheet (Dual, Te
DS1859 雙路、溫控電阻,內置校準監視器

使用DS1863/DS1865的內部校準和右移位(可擴展動態

Using the DS1859 with External

評論