摘要

UCD3138 內(nèi)部集成有 4 個,可以靈活配置其輸入端和參考值。模擬前端(AFE)模塊的絕對值量和E 的輸出都可以作為的輸入,因此使用可以實現(xiàn)對系統(tǒng)輸出電壓的故障響應(yīng)與保護。UCD3138 內(nèi)部集成有 16 個模數(shù)轉(zhuǎn)換器(),其中名稱為 15 的模數(shù)轉(zhuǎn)換器不對外部開放,可以用來檢測 3 個AFE 模塊中任何一個的 EAP 或 EAN 引腳,實現(xiàn)對系統(tǒng)輸出電壓的精確采集,最終可以實現(xiàn)對輸出電壓的故障響應(yīng)與保護。

1UCD3138 的數(shù)字比較器

UCD3138 內(nèi)部集成有4數(shù)字比較器,可以以AFE 的絕對值量或者誤差值為輸入端,靈活配置參考值,最終實現(xiàn)對系統(tǒng)輸出電壓故障(過壓,欠壓等)的快速響應(yīng)與保護。

1.1 數(shù)字比較器的硬件電路簡介

圖 1 所示的是UCD3138 芯片內(nèi)部模擬前端(Analog Front End,AFE)的框圖。輸出電壓在分壓后以差分信號的方式進入到AFE 模塊,與參考電壓(DAC0 的輸出值)比較后得到誤差信號(模擬量);該誤差信號在模數(shù)轉(zhuǎn)換后變?yōu)閿?shù)字量,然后輸入到數(shù)字環(huán)路補償模塊(Filter)。

數(shù)字電源控制器UCD3138的數(shù)字比較器與ADC的應(yīng)用說明

Figure 1. UCD3138 AFE 模塊框圖

為豐富應(yīng)用的靈活性,用戶設(shè)置的參考值(數(shù)字量)與EADC 的輸出值(數(shù)字量)相加后生成一個叫做“ 絕對值量(absolute value)” 的數(shù)字信號,可以表征實際采集到的電壓信息(即Vd 的值)。

UCD3138 的數(shù)字比較器就是以數(shù)字誤差信號(B 點值)或絕對值量(C 點值)作為一個輸入端,參考電壓值(用戶可以自行設(shè)置)為另一個輸入端所組成,觸發(fā)后可以配置其關(guān)斷任何一路DPWM。

UCD3138 中有3 個AFE 模塊,同樣地,也有4 個數(shù)字比較器。

1.2 數(shù)字比較器涉及的關(guān)鍵寄存器

1.2.1 EADC的輸出

EADC 的輸出是參考電壓與輸入模擬量相減后的值在數(shù)字化之后的信息量,即數(shù)字誤差量,其范圍與AFE 自身的增益有直接關(guān)系。例如,當增益值設(shè)置為1 時,其輸出范圍是+248~-256;而增益設(shè)置為8 時,輸出范圍是+31~-32.

寄存器EADCRAWVALUE 的第0~8 位(共9bit,名稱為RAW_ERROR_VALUE)保存的即為EADC 的輸出,分辨率為1mV/bit。

1.2.2 DAC的輸入

DAC 的輸出即為系統(tǒng)的參考電壓。在UCD3138 的實際應(yīng)用中,用戶可以設(shè)置DAC 的輸入值,為數(shù)字信號量。寄存器EADCDAC 的第4~13 位(共10bit,名稱為DAC_VALUE)保存了用戶的設(shè)置值。分辨率為1.5625mV/bit。

1.2.3 絕對值量

寄存器 EADCVALUE 的第16~25 位(共10bit,名稱為ABS_VALUE)保存的就是絕對值量,分辨率為1.5625mV/bit。

上文提到,絕對值量是EADC 的輸出信息與DAC 的輸入信息相加得到的,但并不是二者數(shù)字量的直接相加,因為其分辨率不同。事實上,上述三個數(shù)字量所各自表征的模擬量存在等式關(guān)系。

例如,某條件下,EADC 的輸出(ERROR_VALUE)為192;DAC 的輸入為747;絕對值量(ABS_VALUE)為624,如下圖2 所示。

數(shù)字電源控制器UCD3138的數(shù)字比較器與ADC的應(yīng)用說明

Figure 2. Memory Debugger 中讀取到的寄存器值

顯然,747-624=123≠ 192。但是,各自的模擬量則滿足等式關(guān)系,如下:

? EADC 的輸出192 對應(yīng)的模擬量為192×1mV/bit=192mV;

? DAC 的輸入747 對應(yīng)的模擬量為 747×1.5625mV/bit=1167.1875mV;

? 絕對值量624 對應(yīng)的模擬量為 624×1.5625mV/bit=975mV;

◎ 最終,1167.1875-975=192.1875≈ 192.

或者,三個數(shù)字量可以在增加衰減系數(shù)后存在如下等式關(guān)系:

1.3 數(shù)字比較器的軟件配置

在程序初始化階段,可以完成對數(shù)字比較器的配置。以配置數(shù)字比較器0 為例,主要代碼如下:

FaultMuxRegs.DCOMPCTRL0.bit.CNT_THRESH = 1;

上述代碼配置只需觸發(fā)一次數(shù)字比較器就會產(chǎn)生一個fault。

FaultMuxRegs.DCOMPCTRL0.bit.FE_SEL = 0;

上述代碼配置數(shù)字比較器的輸入為AFE0 的絕對值量。也可以配置為EADC 的輸出。另外,其余兩個AFE 的絕對值量和EADC 的輸出也可以配置為數(shù)字比較器0 的輸入。

FaultMuxRegs.DCOMPCTRL0.bit.COMP_POL = 1;

上述代碼配置為數(shù)字比較器的輸入高于參考量后才會觸發(fā)。

FaultMuxRegs.DCOMPCTRL0.bit.THRESH = 850;

參考量設(shè)置為850。如果輸入量選擇為絕對值量,則當Vd 電壓大于850×1.5625mV/bit =1.33V 時便會觸發(fā)數(shù)字比較器。

FaultMuxRegs.DPWM0FLTABDET.bit.DCOMP0_EN=1;

上面代碼配置為,數(shù)字比較器觸發(fā)后立即關(guān)斷DPWM0A 和DPWM0B。

1.4 數(shù)字比較器的實際應(yīng)用結(jié)果

實際調(diào)試時,圖1 的Vd 處外接一個可調(diào)電壓,并由0V 慢慢增大??梢杂^察到,當電壓超過1.33V 后,驅(qū)動信號便立即被關(guān)閉,符合預(yù)期,如下圖3(CH3 為Vd 電壓,CH2 為DPWM0B)。

Figure 3. 數(shù)字比較器觸發(fā)后關(guān)閉DPWM0B

1.5 數(shù)字比較器的實際應(yīng)用結(jié)果

實際應(yīng)用中需要注意EADC 的飽和問題。

上文1.2 節(jié)提到,EADC 的輸出有一定的范圍,當輸入過大或過小時,EADC 的輸出會固定在其上限或下限,此時便是EADC 處于了飽和狀態(tài)。仍以上面提到的實驗為背景進行說明,其中AFE的增益設(shè)置為1。

當 Vd 電壓為554mV 時,絕對值量預(yù)計為355(因為554/1.5625≈ 355),EADC 的輸出預(yù)計為613(參考1.2 節(jié)最后的等式)。而實際讀取發(fā)現(xiàn),絕對值量為588,EADC 的輸出為248,這與設(shè)想完全不同。分析原因可知,此時EADC 已經(jīng)處于了正向飽和,輸出的上限為248。

數(shù)字電源控制器UCD3138的數(shù)字比較器與ADC的應(yīng)用說明

Figure 4. EADC 正向飽和

同樣地,當 Vd 電壓為1.64V 時,絕對值量預(yù)計為1050(因為1640/1.5625≈ 1050),EADC 的輸出預(yù)計為-473(參考1.2 節(jié)最后的等式)。而實際讀取發(fā)現(xiàn),絕對值量為911,EADC 的輸出為-256,這與設(shè)想也是完全不同。分析原因亦可知,此時EADC 已經(jīng)處于負向飽和,輸出的下限為-256。

數(shù)字電源控制器UCD3138的數(shù)字比較器與ADC的應(yīng)用說明

Figure 5. EADC 負向飽和

綜合上面分析可知,在DAC 的值固定后,絕對值量存在一個范圍,該范圍與AFE 的增益有直接關(guān)系,如下表所示。

Table 1. 絕對值量范圍和AFE 增益的關(guān)系

AFE Gain

DAC Value


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();