一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CW32 低電壓檢測器介紹

武漢芯源半導(dǎo)體有限公司 ? 2022-12-08 14:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

低電壓檢測器(LVD)適用于監(jiān)測VDDA電源電壓或外部引腳輸入電壓,當(dāng)被監(jiān)測電壓與LVD閾值的比較結(jié)果滿足觸發(fā)的條件時,LVD將會產(chǎn)生中斷或者復(fù)位信號,通常用來處理一些緊急任務(wù)。LVD產(chǎn)生的中斷或復(fù)位標(biāo)志,只能通過軟件程序清零,只有當(dāng)中斷或復(fù)位標(biāo)志被清零后,在再次達(dá)到觸發(fā)條件時,LVD才能再次產(chǎn)生中斷或復(fù)位信號。本文以CW32L083為例,介紹LVD的使用方法。

低電壓檢測器(LVD)的主要特性:

1. 4路監(jiān)測電壓源:VDDA電源電壓,PA00、PB00、PB11引腳輸入

2. 16階閾值電壓,范圍2.02V-3.76V

3. 3種觸發(fā)條件,可以組合使用

電平觸發(fā):電壓低于閾值

下降沿觸發(fā):電壓跌落到閾值以下的下降沿

上升沿觸發(fā):電壓回升到閾值以上的上升沿

4. 可觸發(fā)產(chǎn)生中斷或復(fù)位信號,二者不能同時產(chǎn)生

5. 8階濾波可配置

6. 支持遲滯功能

7. 支持低功耗模式下運行,中斷喚醒MCU

pYYBAGORfImAegxGAABA_d05W_E662.jpg

上圖為CW32L083低電壓檢測器(LVD)的功能框圖,LVD不僅可以監(jiān)測VDDA電源電壓,也可以監(jiān)測外部引腳 (PA00、PB00、PB11)輸入電壓,通過控制寄存器LVD_CR0的SOURCE位域來選擇,當(dāng)使用外部引腳來監(jiān)測電壓時,需將對應(yīng)的GPIO端口配置為模擬輸入模式(GPIOx_ANALOG.PINy = 1)。

LVD的輸出結(jié)果可以從PA01/PA08/PC12/PE02/PF02引腳輸出,需將對應(yīng)的GPIO口配置為數(shù)字輸出模式,同時選擇功能復(fù)用,下面為具體配置

//LVD I/O口初始化

void LVD_PortInit(void)

{

GPIO_InitTypeDef GPIO_InitStructure = {0};

//打開GPIOA時鐘

__RCC_GPIOA_CLK_ENABLE();

//將PA08設(shè)置為LVD比較結(jié)果輸出

GPIO_InitStructure.Pins = GPIO_PIN_8;

GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_Init(CW_GPIOA, &GPIO_InitStructure);

//將PA08復(fù)用為LVD比較結(jié)果輸出

PA08_AFx_LVDOUT();

//將PA00設(shè)置為LVD的輸入口

PA00_ANALOG_ENABLE();

}

遲滯功能

LVD 內(nèi)置的電壓比較器具有遲滯功能,可避免當(dāng) LVD 的被監(jiān)測電壓在閾值電壓附近時,電壓比較器的輸出結(jié)果發(fā)生頻繁翻轉(zhuǎn),增強(qiáng)系統(tǒng)抗干擾能力。只有當(dāng)被監(jiān)測電壓高于或低于閾值電壓達(dá)到20mV時,比較器輸出信號才會發(fā)生翻轉(zhuǎn)。具體波形如下圖所示:

pYYBAGORfIqAQx8UAAA8Znz2QEc664.jpg

LVD的閾值電壓根據(jù)LVD控制寄存器LVD_CR0的VTH位值決定,有效值0 ~ 15,如下表所示:

poYBAGORfIqALUXtAADCN_mLJ5M121.jpg

數(shù)字濾波功能

CW32L083的LVD支持?jǐn)?shù)字濾波功能,以增強(qiáng)系統(tǒng)的魯棒性,可將LVD電壓比較的輸出結(jié)果信號進(jìn)行數(shù)字濾波,小于濾波寬度的信號被濾除,不會觸發(fā)中斷或復(fù)位,如下圖所示:

poYBAGORfIqADizyAAAUCrccdZ0989.jpg

通過設(shè)置控制寄存器LVD_CR1的FLTEN位域為1,可使能數(shù)字濾波模塊。設(shè)置控制寄存器 LVD_CR1 的 FLTCLK 位域可以選擇數(shù)字濾波的時鐘:

? FLTCLK位為1,選擇HSIOSC作為濾波時鐘

? FLTCLK位為0,選擇內(nèi)置RC振蕩器時鐘作為濾波時鐘,其頻率約150kHz

相關(guān)的宏定義如下所示:

#define LVD_FilterClk_RC150K ((uint32_t)0x00000000)

#define LVD_FilterClk_HSI ((uint32_t)0x00000010)

控制寄存器LVD_CR1的FLTTIME位域用于選擇數(shù)字濾波的時鐘個數(shù),如下表所示:

poYBAGORfImAdALEAABYlXa0mBU740.jpg

從LVD狀態(tài)寄存器LVD_SR的FLTV位域,可以讀出經(jīng)LVD數(shù)字濾波后的信號電平;當(dāng) GPIO 的功能復(fù)用為LVD_OUT時,數(shù)字濾波后的信號就可以從GPIO輸出,以方便觀察測量。

LVD中斷

LVD支持在低功耗模式下工作,中斷輸出可將芯片從低功耗模式下喚醒。當(dāng)被監(jiān)測電壓與LVD閾值的比較結(jié)果滿足觸發(fā)條件時,可產(chǎn)生中斷或復(fù)位信號。產(chǎn)生中斷還是復(fù)位信號由控制寄存器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)

通過設(shè)置控制寄存器LVD_CR0的IE位域為1,使能LVD中斷,滿足觸發(fā)條件時將產(chǎn)生LVD中斷,中斷標(biāo)志位LVD_SR.INTF會被硬件置1,用戶可以向INTF位寫0,清除中斷標(biāo)志。設(shè)置控制寄存器LVD_CR1的LEVEL、FALL、RISE位域,可選擇不同的中斷或復(fù)位觸發(fā)方式,三者可組合使用:

? LEVEL為1,被監(jiān)測電壓低于閾值時觸發(fā)中斷或產(chǎn)生復(fù)位

? FALL為1,被監(jiān)測電壓跌落到閾值以下的下降沿觸發(fā)中斷或產(chǎn)生復(fù)位

? RISE為1,被監(jiān)測電壓回升到閾值以上的上升沿觸發(fā)中斷或產(chǎn)生復(fù)位

相關(guān)的寄存器具體位域可參考下表:

pYYBAGORfIqAER7RAAOHOD8IGzE857.jpgpoYBAGORfImARo6NAAULbX0Gxk0476.jpgpoYBAGORfImAG3ZQAAGiLz3P118924.jpg

根據(jù)上述內(nèi)容,簡單介紹配置電壓監(jiān)測例程。LVD的輸入通道設(shè)置為PA00,輸出端口為PA08,門限電壓為2.02V,利用LVD的中斷實現(xiàn)當(dāng)LVD輸入通道電壓低于或者高于門限電壓時刻(利用上升沿和下降沿),PC03輸出電平翻轉(zhuǎn)一次。

void LVD_PortInit(void)

{

GPIO_InitTypeDef GPIO_InitStructure = {0};

//打開GPIOA時鐘

__RCC_GPIOA_CLK_ENABLE();

//將PA08設(shè)置為LVD比較結(jié)果輸出

GPIO_InitStructure.Pins = GPIO_PIN_8;

GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_Init(CW_GPIOA, &GPIO_InitStructure);

//將PA08復(fù)用為LVD比較結(jié)果輸出

PA08_AFx_LVDOUT();

//將PA00設(shè)置為LVD的輸入口

PA00_ANALOG_ENABLE();

}

int main(void)

{

LVD_InitTypeDef LVD_InitStruct = {0};

//LED初始化

LED_Init();

//配置測試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濾波時鐘為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;

}

}

}

/** @brief LED I/O初始化**/

void LED_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure = {0};

//打開GPIOC時鐘

__RCC_GPIOC_CLK_ENABLE();

/* Configure the GPIO_LED pin */

GPIO_InitStructure.Pins = GPIO_PIN_2 | GPIO_PIN_3;

GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_Init(CW_GPIOC, &GPIO_InitStructure);

//LEDs are off.

PC02_SETLOW();

PC03_SETLOW();

}

//LVD中斷服務(wù)函數(shù)

void LVD_IRQHandler(void)

{

LVD_ClearIrq(); //清除中斷標(biāo)志

gFlagIrq = TRUE; //將gFlagIrq賦值為TURE,使main函數(shù)中的if判斷語句生效

}

上述例程中的LVD_PortInit()為前文LVD的IO口配置函數(shù),下面例程為通過寄存器配置LVD,具體功能與上述例程一樣。

void LVD_PortInit(void)

{

GPIO_InitTypeDef GPIO_InitStructure = {0};

//打開GPIOA時鐘

__RCC_GPIOA_CLK_ENABLE();

//將PA08設(shè)置為LVD比較結(jié)果輸出

GPIO_InitStructure.Pins = GPIO_PIN_8;

GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_Init(CW_GPIOA, &GPIO_InitStructure);

//將PA08復(fù)用為LVD比較結(jié)果輸出

PA08_AFx_LVDOUT();

//將PA00設(shè)置為LVD的輸入口

PA00_ANALOG_ENABLE();

}

int main(void)

{

//LED初始化

LED_Init();

//配置測試IO口

LVD_PortInit();

CW_LVD->CR0_f.SOURCE=1; //選擇待監(jiān)測的電壓來源為PA00

CW_LVD->CR0_f.VTH=0; //選擇閾值電壓為2.02V

CW_LVD->CR1_f.FLTTIME=7; //選擇 LVD 濾波寬度為4095個時鐘周期信號

CW_LVD->CR1_f.FLTCLK=0; //選擇濾波時鐘為150KHz的RC振蕩時鐘

CW_LVD->CR1_f.FLTEN=1; //使能 LVD 濾波

CW_LVD->CR1_f.RISE=1; //下降沿觸發(fā)

CW_LVD->CR1_f.FALL=1; //上升沿觸發(fā)

CW_LVD->CR0_f.ACTION=0; //選擇LVD觸發(fā)為中斷

CW_LVD->CR0_f.IE=1; //使能LVD中斷

NVIC_ClearPendingIRQ(LVD_IRQn); //使能NVIC中斷向量表中的LVD中斷

NVIC_SetPriority(LVD_IRQn, 3);

NVIC_EnableIRQ(LVD_IRQn);

FirmwareDelay(4800);

CW_LVD->CR0_f.EN=1; //使能LVD

CW_LVD->SR_f.INTF=0; //清除LVD中斷標(biāo)志

while (1)

{

if (gFlagIrq)

{

PC03_TOG();

gFlagIrq = FALSE;

}

}

}

/**@brief LED I/O初始化**/

void LED_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure = {0};

//打開GPIOC時鐘

__RCC_GPIOC_CLK_ENABLE();

/* Configure the GPIO_LED pin */

GPIO_InitStructure.Pins = GPIO_PIN_2 | GPIO_PIN_3;

GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_Init(CW_GPIOC, &GPIO_InitStructure);

//LEDs are off.

PC02_SETLOW();

PC03_SETLOW();

}

//LVD中斷服務(wù)函數(shù)

void LVD_IRQHandler(void)

{

LVD_ClearIrq(); //清除中斷標(biāo)志

gFlagIrq = TRUE; //將gFlagIrq賦值為TURE,使main函數(shù)中的if判斷語句生效

}

上述例程功能為在PA00的輸入電壓值低于2.02v或高于2.02v的時刻,LVD會產(chǎn)生中斷,PC03的輸出電平會產(chǎn)生翻轉(zhuǎn),可利用CW32L083的開發(fā)板和數(shù)字電源進(jìn)行測試,將PA00和數(shù)字電源連接,調(diào)節(jié)數(shù)字電源輸出電壓,在升高至門限電壓以上或者下降至門限電壓以下,LED1的狀態(tài)會發(fā)生翻轉(zhuǎn)。

LVD的相關(guān)函數(shù)及功能,可參考下述介紹。

1.void LVD_EnableNvic(uint8_t intPriority);

//使能NVIC中LVD中斷

2.void LVD_DisableNvic(void);

//禁止NVIC中LVD中斷

3.void LVD_TrigConfig(uint16_t LVD_TRIG, FunctionalState NewState);

//配置LVD中斷/系統(tǒng)復(fù)位觸發(fā)方式

4.void LVD_EnableIrq(uint8_t intPriority);

//使能LVD中斷

5.void LVD_DisableIrq(void);

//禁止LVD中斷

6.void LVD_ClearIrq(void);

//清除LVD中斷標(biāo)志

7.boolean_t LVD_GetIrqStatus(void);

//獲取LVD中斷標(biāo)志

8.FlagStatus LVD_GetFlagStatus(uint16_t LVD_FLAG);

//獲取LVD指定的狀態(tài)位

9.boolean_t LVD_GetFilterResult(void);

//獲取Filter結(jié)果

10.void LVD_Init(LVD_InitTypeDef* LVD_InitStruct);

//LVD初始化

11.void LVD_DeInit(void);

//LVD去初始化

12.void LVD_Enable(void);

//使能LVD

13.void LVD_Disable(void);

//停止LVD

CW32的LVD的使用介紹到此結(jié)束。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7953

    瀏覽量

    155054
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650473
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17984

    瀏覽量

    366921
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    如何使用新版本J-Flash編程CW32 MCU?

    CW32 MCU器件支持包JlinkDevices_WHXY.rar解壓到新建的JlinkDevices子目錄即可。 4、運行JFlash.exe,通過Jlink連接CW32 MCU測試板,進(jìn)行編程測試
    的頭像 發(fā)表于 07-01 15:05 ?144次閱讀
    如何使用新版本J-Flash編程<b class='flag-5'>CW32</b> MCU?

    武漢芯源半導(dǎo)體CW32L010在兩輪車儀表的應(yīng)用介紹

    主控MCU芯片CW32L010介紹 CW32L010 是基于 eFlash 的單芯片低功耗微控制,集成了主頻高達(dá) 48MHz 的 ARM? Cortex?-M0+ 內(nèi)核、高速嵌入式
    發(fā)表于 05-13 14:06

    TPS3701 高壓(36-V)窗口電壓檢測器數(shù)據(jù)手冊

    TPS3701 寬電源電壓窗口檢測器的工作電壓范圍為 1.8V 至 36V。該器件具有兩個精密比較,具有一個內(nèi)部 400mV 基準(zhǔn)和兩個額定電壓
    的頭像 發(fā)表于 04-11 09:20 ?503次閱讀
    TPS3701 高壓(36-V)窗口<b class='flag-5'>電壓</b><b class='flag-5'>檢測器</b>數(shù)據(jù)手冊

    TPS3702-Q1 用于過壓和欠壓監(jiān)控的汽車級高精度窗口電壓檢測器數(shù)據(jù)手冊

    TPS3702-Q1 是一款集成過壓和欠壓窗口電壓檢測器,采用小型 SOT-6 封裝。這款高精度電壓檢測器非常適合在低電壓電源軌上工作且電源
    的頭像 發(fā)表于 04-10 18:18 ?359次閱讀
    TPS3702-Q1 用于過壓和欠壓監(jiān)控的汽車級高精度窗口<b class='flag-5'>電壓</b><b class='flag-5'>檢測器</b>數(shù)據(jù)手冊

    代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開發(fā)實戰(zhàn)正式出版

    尊敬的各位電子工程師、嵌入式開發(fā)愛好者們:大家好!今天,我們懷著無比激動與自豪的心情,向大家宣布一個重大喜訊——武漢芯源半導(dǎo)體的單片機(jī)CW32正式出書啦!《基于ARMCortex-M0+的CW32
    的頭像 發(fā)表于 03-03 15:15 ?688次閱讀
    代碼+案例+生態(tài):武漢芯源半導(dǎo)體<b class='flag-5'>CW32</b>嵌入式開發(fā)實戰(zhàn)正式出版

    代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開發(fā)實戰(zhàn)正式出版

    關(guān)于 CW32 單片機(jī)的書籍。在這本書中,我們從最基礎(chǔ)的知識講起,詳細(xì)介紹CW32 單片機(jī)的硬件架構(gòu)、內(nèi)核特性、存儲系統(tǒng)以及各類外設(shè)功能。無論是剛剛踏入嵌入式開發(fā)領(lǐng)域的新手,還是經(jīng)驗豐富的專業(yè)人士
    發(fā)表于 03-03 15:14

    產(chǎn)品介紹#TPS3702 用于過壓和欠壓監(jiān)控的高精度窗口電壓檢測器

    TPS3702 是一款集成過壓和欠壓窗口電壓檢測器,采用小型 SOT-6 封裝。這款高精度電壓檢測器非常適合在低電壓電源軌上工作且電源容差裕
    的頭像 發(fā)表于 02-26 11:21 ?449次閱讀
    產(chǎn)品<b class='flag-5'>介紹</b>#TPS3702 用于過壓和欠壓監(jiān)控的高精度窗口<b class='flag-5'>電壓</b><b class='flag-5'>檢測器</b>

    CW32充電檢測儀#CW32

    檢測
    jf_61020569
    發(fā)布于 :2024年11月22日 09:05:30

    武漢芯源半導(dǎo)體CW32芯片重慶地區(qū)線下技術(shù)交流會成功舉辦

    2024年10月19日,武漢芯源半導(dǎo)體授權(quán)CW32生態(tài)社區(qū)主辦的“CW32芯片-重慶地區(qū)技術(shù)交流會”在重慶市科技工作者眾創(chuàng)之家成功舉辦。此次交流會匯聚重慶地區(qū)的嵌入式開發(fā)工程師和電子信息類企業(yè)代表,共同探討CW32芯片在儀器儀表
    的頭像 發(fā)表于 10-24 10:55 ?975次閱讀

    高效液相色譜儀的檢測器有哪些

    和定性分析。本文將介紹HPLC的檢測器類型、原理、特點及其應(yīng)用。 一、HPLC檢測器的分類 HPLC檢測器按照檢測原理的不同,可以分為以下幾
    的頭像 發(fā)表于 08-08 10:43 ?3107次閱讀

    熒光檢測器適用范圍有哪些

    熒光檢測器是一種利用熒光現(xiàn)象對物質(zhì)進(jìn)行檢測的儀器,廣泛應(yīng)用于生物、化學(xué)、醫(yī)學(xué)、環(huán)境等領(lǐng)域。本文將介紹熒光檢測器的適用范圍,包括生物分子檢測、
    的頭像 發(fā)表于 08-08 10:35 ?2373次閱讀

    熒光檢測器用來檢測什么物質(zhì)

    熒光檢測器是一種利用熒光現(xiàn)象進(jìn)行物質(zhì)檢測的儀器,廣泛應(yīng)用于化學(xué)、生物學(xué)、醫(yī)學(xué)、環(huán)境科學(xué)等領(lǐng)域。 一、熒光檢測器的工作原理 熒光檢測器的工作原理基于熒光現(xiàn)象。熒光是一種特殊的光致發(fā)光現(xiàn)象
    的頭像 發(fā)表于 08-08 10:34 ?1999次閱讀

    電路檢測器檢查電池是否有電怎么判斷

    了解如何使用電路檢測器檢查電池是否有電是一項重要的技能,尤其是在需要確保設(shè)備正常運行的情況下。本文將介紹電路檢測器的使用方法、電池的工作原理以及如何判斷電池是否有電。 第一部分:電路檢測器
    的頭像 發(fā)表于 07-19 17:14 ?2696次閱讀

    電流檢測器有什么和什么組成

    電流檢測器是一種用于檢測電流大小的電子設(shè)備,廣泛應(yīng)用于電力系統(tǒng)、工業(yè)自動化、家用電器等領(lǐng)域。 一、電流檢測器的組成 電流檢測器主要由以下幾個部分組成: 電流傳感
    的頭像 發(fā)表于 07-19 17:12 ?2016次閱讀

    電路檢測器和電流檢測器的區(qū)別

    1. 引言 電路檢測器和電流檢測器是電子工程中常用的工具,它們幫助工程師和技術(shù)人員診斷和監(jiān)測電子設(shè)備的性能。 2. 電路檢測器 定義和功能 :電路檢測器是一種用于
    的頭像 發(fā)表于 07-19 16:34 ?2114次閱讀