CW32的LVD低電壓檢測(cè)器適用于監(jiān)測(cè)VDDA電源電壓或外部引腳輸入電壓,當(dāng)被監(jiān)測(cè)電壓與LVD閾值的比較結(jié)果滿足觸發(fā)的條件時(shí),LVD將會(huì)產(chǎn)生中斷或者復(fù)位信號(hào),通常用來處理一些緊急任務(wù)。LVD產(chǎn)生的中斷或復(fù)位標(biāo)志,只能通過軟件程序清零,并且只有當(dāng)中斷或復(fù)位標(biāo)志被清零后,在再次達(dá)到觸發(fā)條件時(shí),LVD才能再次產(chǎn)生中斷或復(fù)位信號(hào)。在本文中以CW32L083系列為例,介紹LVD的基本功能和使用例程。
LVD的基本功能介紹:
1、4路監(jiān)測(cè)電壓源
VDDA電源電壓,PA00引腳輸入,PB00引腳輸入,PB11引腳輸入
2、16階閾值電壓,范圍2.02V-3.76V
3、3種觸發(fā)條件,可以組合使用
電平觸發(fā):電壓低于閾值
下降沿觸發(fā):電壓跌落到閾值以下的下降沿
上升沿觸發(fā):電壓回升到閾值以上的上升沿
4、可觸發(fā)產(chǎn)生中斷或復(fù)位信號(hào),二者不能同時(shí)產(chǎn)生
5、8階濾波可配置
6、支持遲滯功能
7、支持低功耗模式下運(yùn)行,中斷喚醒MCU

通過LVD的控制寄存器LVD_CR0的SOURCE位域來選擇LVD模塊監(jiān)控的電壓(VDDA電源/ PA00引腳/PB00引腳/PB11引腳),在監(jiān)測(cè)外部引腳電壓時(shí),需將對(duì)應(yīng)的GPIO端口配置為模擬輸入模式(GPIOx_ANALOG.PINy = 1)。
LVD的比較結(jié)果可以從PA01/PA08/PC12/PE02/PF02腳輸出,在此之前,需將對(duì)應(yīng)的GPIO口配置為數(shù)字輸出模式,同時(shí)選擇端口位LVDOUT復(fù)用功能。
LVD 內(nèi)置的電壓比較器具有遲滯功能,只有當(dāng)被監(jiān)測(cè)電壓高于或低于閾值電壓達(dá)到 20mV 時(shí),比較器輸出信號(hào)才會(huì)發(fā)生翻轉(zhuǎn),可避免當(dāng) LVD 的監(jiān)測(cè)電壓在閾值電壓附近時(shí),電壓比較器的輸出結(jié)果發(fā)生頻繁翻轉(zhuǎn),增強(qiáng)系統(tǒng)抗干擾能力。具體波形如下圖所示:

LVD的閾值電壓根據(jù)LVD控制寄存器LVD_CR0的VTH位控制。

LVD支持?jǐn)?shù)字濾波功能,可以增強(qiáng)系統(tǒng)的魯棒性(系統(tǒng)在一定的參數(shù)抖動(dòng)下,維持起某些性能的特性),可以將LVD電壓比較的輸出結(jié)果信號(hào)進(jìn)行數(shù)字濾波,小于濾波寬度的信號(hào)被濾除,不會(huì)被觸發(fā)中斷或復(fù)位,如下圖所示,圖中兩處噪音或其他信號(hào)就被濾除了。

通過設(shè)置控制寄存器LVD_CR1的FLTEN位域,可以使能數(shù)字濾波模塊,當(dāng)將該位設(shè)置為1的時(shí)候,會(huì)使能數(shù)字濾波模塊。
通過設(shè)置控制寄存器 LVD_CR1 的 FLTCLK 位域可以選擇數(shù)字濾波的時(shí)鐘:
? FLTCLK 位為 1,選擇 HSIOSC 作為濾波時(shí)鐘
? FLTCLK 位為 0,選擇內(nèi)置 RC 振蕩器時(shí)鐘作為濾波時(shí)鐘,其頻率約 150kHz
控制寄存器 LVD_CR1 的 FLTTIME 位域用于選擇數(shù)字濾波的時(shí)鐘個(gè)數(shù),如下表所示:

從 LVD 狀態(tài)寄存器 LVD_SR 的 FLTV 位域,可以讀出經(jīng) LVD 數(shù)字濾波后的信號(hào)電平;當(dāng) GPIO 的功能復(fù)用為 LVD_OUT 時(shí),數(shù)字濾波后的信號(hào)就可以從 GPIO 輸出,以方便觀察測(cè)量。
LVD 支持在低功耗模式下工作,中斷輸出可將芯片從低功耗模式下喚醒。當(dāng)被監(jiān)測(cè)電壓與 LVD 閾值的比較結(jié)果滿足觸發(fā)條件時(shí),可產(chǎn)生中斷或復(fù)位信號(hào)。產(chǎn)生中斷還是復(fù)位信號(hào)由控制寄存器 LVD_CR0 的 ACTION 位域控制:
? ACTION 為 1,LVD 觸發(fā)產(chǎn)生復(fù)位 #define LVD_Action_Reset ((uint32_t)0x00000002)
? ACTION 為 0,LVD 觸發(fā)產(chǎn)生中斷 #define LVD_Action_Irq ((uint32_t)0x00000000)
LVD可以通過設(shè)置控制寄存器 LVD_CR0 的 IE 位域?yàn)?1,使能 LVD 中斷,滿足觸發(fā)條件時(shí)將產(chǎn)生 LVD 中斷,中斷標(biāo)志位 LVD_SR.INTF 會(huì)被硬件置 1,用戶可以向 INTF 位寫 0,清除中斷標(biāo)志。設(shè)置控制寄存器 LVD_CR1 的 LEVEL、FALL、RISE 位域,可選擇不同的中斷或復(fù)位觸發(fā)方式,三者可組合使用:
? LEVEL 為 1,被監(jiān)測(cè)電壓低于閾值時(shí)觸發(fā)中斷或產(chǎn)生復(fù)位
? FALL 為 1,被監(jiān)測(cè)電壓跌落到閾值以下的下降沿觸發(fā)中斷或產(chǎn)生復(fù)位
? RISE 為 1,被監(jiān)測(cè)電壓回升到閾值以上的上升沿觸發(fā)中斷或產(chǎn)生復(fù)位
LVD使用例程介紹:
根據(jù)上述內(nèi)容,可以配置一個(gè)關(guān)于CW32L083的電壓監(jiān)測(cè)例程,LVD的輸入通道設(shè)置為PA00,輸出端口為PA08,門限電壓為2.02V,利用LVD的中斷實(shí)現(xiàn)當(dāng)LVD輸入通道電壓低于或者高于門限電壓時(shí)刻(利用上升沿和下降沿),PC03輸出電平翻轉(zhuǎn)一次。
voidLVD_PortInit(void)
{
GPIO_InitTypeDefGPIO_InitStructure={0};
//打開GPIOA時(shí)鐘
__RCC_GPIOA_CLK_ENABLE();
//將PA08設(shè)置為L(zhǎng)VD比較結(jié)果輸出
GPIO_InitStructure.Pins=GPIO_PIN_8;
GPIO_InitStructure.Mode=GPIO_MODE_OUTPUT_PP;
GPIO_Init(CW_GPIOA, GPIO_InitStructure);
//將PA08復(fù)用為L(zhǎng)VD比較結(jié)果輸出
PA08_AFx_LVDOUT();
//將PA00設(shè)置為L(zhǎng)VD的輸入口
PA00_ANALOG_ENABLE();
}
intmain(void)
{
LVD_InitTypeDefLVD_InitStruct={0};
//LED初始化
LED_Init();
//配置測(cè)試IO口
LVD_PortInit();
LVD_InitStruct.LVD_Action=LVD_Action_Irq;//配置中斷功能
LVD_InitStruct.LVD_Source=LVD_Source_PA00;//配置LVD輸入口為PA00
LVD_InitStruct.LVD_Threshold=LVD_Threshold_2p02V;//配置LVD基準(zhǔn)電壓為2.02v
LVD_InitStruct.LVD_FilterEn=LVD_Filter_Enable;//LVD濾波模塊開啟
LVD_InitStruct.LVD_FilterClk=LVD_FilterClk_RC150K;//LVD濾波時(shí)鐘為150KHz
LVD_InitStruct.LVD_FilterTime=LVD_FilterTime_4095Clk;
LVD_Init( LVD_InitStruct);
LVD_TrigConfig(LVD_TRIG_FALL|LVD_TRIG_RISE,ENABLE);//LVD中斷為上升沿和下降沿觸發(fā)
LVD_EnableIrq(LVD_INT_PRIORITY);
LVD_ClearIrq();
FirmwareDelay(4800);
LVD_Enable();//LVD使能
while(1)
{
if(gFlagIrq)
{
PC03_TOG();
gFlagIrq=FALSE;
}
}
}
/**
*@briefLEDI/O初始化
*
*/
voidLED_Init(void)
{
GPIO_InitTypeDefGPIO_InitStructure={0};
//打開GPIOC時(shí)鐘
REGBITS_SET(CW_SYSCTRL->AHBEN,SYSCTRL_AHBEN_GPIOC_Msk);
/*ConfiguretheGPIO_LEDpin*/
GPIO_InitStructure.Pins=GPIO_PIN_2|GPIO_PIN_3;
GPIO_InitStructure.Mode=GPIO_MODE_OUTPUT_PP;
GPIO_Init(CW_GPIOC, GPIO_InitStructure);
//LEDsareoff.
PC02_SETLOW();
PC03_SETLOW();
}
//LVD中斷服務(wù)函數(shù)
voidLVD_IRQHandler(void)
{
LVD_ClearIrq();//清除中斷標(biāo)志
gFlagIrq=TRUE;//將gFlagIrq賦值為TURE
}
根據(jù)上述例程可以得到在PA00的輸入電壓值低于2.02v或高于2.02v的瞬間時(shí)刻,LVD會(huì)產(chǎn)生中斷,PC03的輸出電平會(huì)產(chǎn)生翻轉(zhuǎn),可利用CW32L083的開發(fā)板和一根杜邦線,將PA00和DVCC連接,在連接上的時(shí)刻以及拔掉杜邦線的時(shí)刻,LED1的狀態(tài)會(huì)發(fā)生翻轉(zhuǎn)。
來源:武漢芯源半導(dǎo)體
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6074文章
45322瀏覽量
662950 -
mcu
+關(guān)注
關(guān)注
147文章
18588瀏覽量
385946 -
檢測(cè)器
+關(guān)注
關(guān)注
1文章
922瀏覽量
49637 -
武漢芯源
+關(guān)注
關(guān)注
1文章
67瀏覽量
666
發(fā)布評(píng)論請(qǐng)先 登錄
基于CW32的門禁綜合系統(tǒng)
使用CW32單片機(jī)通過ESP8266連接OneNET物聯(lián)網(wǎng)平臺(tái)
CW32 低電壓檢測(cè)器介紹
CW32單片機(jī)在智能馬桶的應(yīng)用介紹
CW32 低電壓檢測(cè)器介紹
cw32和stm32的區(qū)別
基于CW32單片機(jī)做的軟硬件開源項(xiàng)目
CW32單片機(jī)在智能馬桶的應(yīng)用介紹
CW32單片機(jī)在智能馬桶的應(yīng)用介紹

CW32單片機(jī)低電壓檢測(cè)器的使用介紹
評(píng)論