精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CW32 低電壓檢測器介紹

武漢芯源半導體有限公司 ? 2022-12-08 14:05 ? 次閱讀

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

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

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

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

3. 3種觸發條件,可以組合使用

電平觸發:電壓低于閾值

下降沿觸發:電壓跌落到閾值以下的下降沿

上升沿觸發:電壓回升到閾值以上的上升沿

4. 可觸發產生中斷或復位信號,二者不能同時產生

5. 8階濾波可配置

6. 支持遲滯功能

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

pYYBAGORfImAegxGAABA_d05W_E662.jpg

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

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

//LVD I/O口初始化

void LVD_PortInit(void)

{

GPIO_InitTypeDef GPIO_InitStructure = {0};

//打開GPIOA時鐘

__RCC_GPIOA_CLK_ENABLE();

//將PA08設置為LVD比較結果輸出

GPIO_InitStructure.Pins = GPIO_PIN_8;

GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_Init(CW_GPIOA, &GPIO_InitStructure);

//將PA08復用為LVD比較結果輸出

PA08_AFx_LVDOUT();

//將PA00設置為LVD的輸入口

PA00_ANALOG_ENABLE();

}

遲滯功能

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

pYYBAGORfIqAQx8UAAA8Znz2QEc664.jpg

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

poYBAGORfIqALUXtAADCN_mLJ5M121.jpg

數字濾波功能

CW32L083的LVD支持數字濾波功能,以增強系統的魯棒性,可將LVD電壓比較的輸出結果信號進行數字濾波,小于濾波寬度的信號被濾除,不會觸發中斷或復位,如下圖所示:

poYBAGORfIqADizyAAAUCrccdZ0989.jpg

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

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

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

相關的宏定義如下所示:

#define LVD_FilterClk_RC150K ((uint32_t)0x00000000)

#define LVD_FilterClk_HSI ((uint32_t)0x00000010)

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

poYBAGORfImAdALEAABYlXa0mBU740.jpg

從LVD狀態寄存器LVD_SR的FLTV位域,可以讀出經LVD數字濾波后的信號電平;當 GPIO 的功能復用為LVD_OUT時,數字濾波后的信號就可以從GPIO輸出,以方便觀察測量。

LVD中斷

LVD支持在低功耗模式下工作,中斷輸出可將芯片從低功耗模式下喚醒。當被監測電壓與LVD閾值的比較結果滿足觸發條件時,可產生中斷或復位信號。產生中斷還是復位信號由控制寄存器LVD_CR0的ACTION位域控制:

? ACTION為1,LVD觸發產生復位 #define LVD_Action_Reset ((uint32_t)0x00000002)

? ACTION為0,LVD觸發產生中斷 #define LVD_Action_Irq ((uint32_t)0x00000000)

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

? LEVEL為1,被監測電壓低于閾值時觸發中斷或產生復位

? FALL為1,被監測電壓跌落到閾值以下的下降沿觸發中斷或產生復位

? RISE為1,被監測電壓回升到閾值以上的上升沿觸發中斷或產生復位

相關的寄存器具體位域可參考下表:

pYYBAGORfIqAER7RAAOHOD8IGzE857.jpgpoYBAGORfImARo6NAAULbX0Gxk0476.jpgpoYBAGORfImAG3ZQAAGiLz3P118924.jpg

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

void LVD_PortInit(void)

{

GPIO_InitTypeDef GPIO_InitStructure = {0};

//打開GPIOA時鐘

__RCC_GPIOA_CLK_ENABLE();

//將PA08設置為LVD比較結果輸出

GPIO_InitStructure.Pins = GPIO_PIN_8;

GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_Init(CW_GPIOA, &GPIO_InitStructure);

//將PA08復用為LVD比較結果輸出

PA08_AFx_LVDOUT();

//將PA00設置為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基準電壓為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中斷為上升沿和下降沿觸發

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中斷服務函數

void LVD_IRQHandler(void)

{

LVD_ClearIrq(); //清除中斷標志

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

}

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

void LVD_PortInit(void)

{

GPIO_InitTypeDef GPIO_InitStructure = {0};

//打開GPIOA時鐘

__RCC_GPIOA_CLK_ENABLE();

//將PA08設置為LVD比較結果輸出

GPIO_InitStructure.Pins = GPIO_PIN_8;

GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_Init(CW_GPIOA, &GPIO_InitStructure);

//將PA08復用為LVD比較結果輸出

PA08_AFx_LVDOUT();

//將PA00設置為LVD的輸入口

PA00_ANALOG_ENABLE();

}

int main(void)

{

//LED初始化

LED_Init();

//配置測試IO口

LVD_PortInit();

CW_LVD->CR0_f.SOURCE=1; //選擇待監測的電壓來源為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; //下降沿觸發

CW_LVD->CR1_f.FALL=1; //上升沿觸發

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

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中斷標志

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中斷服務函數

void LVD_IRQHandler(void)

{

LVD_ClearIrq(); //清除中斷標志

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

}

上述例程功能為在PA00的輸入電壓值低于2.02v或高于2.02v的時刻,LVD會產生中斷,PC03的輸出電平會產生翻轉,可利用CW32L083的開發板和數字電源進行測試,將PA00和數字電源連接,調節數字電源輸出電壓,在升高至門限電壓以上或者下降至門限電壓以下,LED1的狀態會發生翻轉。

LVD的相關函數及功能,可參考下述介紹。

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中斷/系統復位觸發方式

4.void LVD_EnableIrq(uint8_t intPriority);

//使能LVD中斷

5.void LVD_DisableIrq(void);

//禁止LVD中斷

6.void LVD_ClearIrq(void);

//清除LVD中斷標志

7.boolean_t LVD_GetIrqStatus(void);

//獲取LVD中斷標志

8.FlagStatus LVD_GetFlagStatus(uint16_t LVD_FLAG);

//獲取LVD指定的狀態位

9.boolean_t LVD_GetFilterResult(void);

//獲取Filter結果

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的使用介紹到此結束。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7492

    瀏覽量

    151076
  • 單片機
    +關注

    關注

    6032

    文章

    44522

    瀏覽量

    633182
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17008

    瀏覽量

    350349
收藏 人收藏

    評論

    相關推薦

    電路檢測器和電流檢測器的區別

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

    【項目展示】基于CW32的遙控循跡小車

    CW32循跡小車.zip_免費高速下載|百度網盤-分享無限制? 一、概述 CW32循跡、遙控小車具有循跡和遙控兩種功能,小車的硬件模塊由CW32F030C8T6小藍板、智能小車控制底板、BT04-E
    的頭像 發表于 05-31 17:33 ?1229次閱讀
    【項目展示】基于<b class='flag-5'>CW32</b>的遙控循跡小車

    CW32數字電壓電流表軟件進階教程-1.電壓電流同時顯示

    基于[CW32數字電壓電流表軟件教程-實驗七:基本數據處理算法(均值濾波)],可以對電壓電流進行同時采集顯示。 電流檢測電路如下: 本項目設計的采樣電流為3A,選擇的采樣電阻為100m
    的頭像 發表于 05-31 15:50 ?641次閱讀
    <b class='flag-5'>CW32</b>數字<b class='flag-5'>電壓</b>電流表軟件進階教程-1.<b class='flag-5'>電壓</b>電流同時顯示

    CW32數字電壓電流表軟件教程-實驗五:ADC采樣及顯示

    的數字信號。由于數字信號本身不具有實際意義,僅僅表示一個相對大小。故任何一個模數轉換都需要一個參考模擬量作為轉換的標準,比較常見的參考標準為最大的可轉換信號大小。而輸出的數字量則表示輸入信號相對于參考信號的大小。 6.1.2. CW32的ADC
    的頭像 發表于 05-31 15:28 ?511次閱讀
    <b class='flag-5'>CW32</b>數字<b class='flag-5'>電壓</b>電流表軟件教程-實驗五:ADC采樣及顯示

    CW32數字電壓電流表軟件教程-實驗四:數碼管動態顯示

    顯示不同的值需要用到CW32的定時功能,在定時的中斷服務程序里面執行顯示刷新的動作。有關CW32的定時和中斷的相關知識請查看鏈接:【
    的頭像 發表于 05-31 15:23 ?465次閱讀
    <b class='flag-5'>CW32</b>數字<b class='flag-5'>電壓</b>電流表軟件教程-實驗四:數碼管動態顯示

    微波檢測器的原理是什么 微波檢測器的工作原理和用途

    微波檢測器是一種利用微波技術進行檢測的設備,廣泛應用于通信、雷達、遙感、醫療等領域。本文將詳細介紹微波檢測器的原理、工作原理和用途。 一、微波檢測器
    的頭像 發表于 05-27 16:09 ?1459次閱讀

    微波檢測器優缺點 微波檢測器的功能和作用

    微波檢測器是一種利用微波技術對物體進行檢測的設備。它廣泛應用于軍事、工業、醫療、交通等領域。本文將詳細介紹微波檢測器的優缺點、功能和作用。 一、微波
    的頭像 發表于 05-27 15:42 ?1410次閱讀

    CW32量產燒錄工具

    本節主要介紹CW32微控制的燒錄CW-Writer,以及與之配合的軟件CW-Programm
    的頭像 發表于 04-25 15:22 ?1325次閱讀
    <b class='flag-5'>CW32</b>量產燒錄工具

    CW32快速開發入門

    CW32快速開發入門
    的頭像 發表于 04-24 18:56 ?1882次閱讀
    <b class='flag-5'>CW32</b>快速開發入門

    電壓檢測器芯片IC FS61C25MR介紹

    FS61C25MR電壓檢測器芯片IC是泛海微公司生產的一款高性能、高精度的電壓檢測器。該芯片采用CMOS工藝,具有N溝道特性,適用于各種需要電壓
    的頭像 發表于 03-17 22:51 ?1553次閱讀
    <b class='flag-5'>電壓</b><b class='flag-5'>檢測器</b>芯片IC FS61C25MR<b class='flag-5'>介紹</b>

    全面梳理電壓檢測器的定義、使用技巧和工作原理知識點

    電壓檢測器是用于監控電源線的電壓,當低于或高于設定電壓時輸出檢測信號的IC。還可把電壓
    的頭像 發表于 01-02 15:09 ?4041次閱讀
    全面梳理<b class='flag-5'>電壓</b><b class='flag-5'>檢測器</b>的定義、使用技巧和工作原理知識點

    基于CW32的門禁綜合系統

    基于CW32單片機的門禁綜合系統是一款功能強大的智能門禁解決方案,它提供了三種開鎖方式:密碼開鎖、指紋開鎖和刷卡開鎖,為用戶提供方便、安全的門禁控制。該系統的核心控制采用了CW32單片機,具備
    的頭像 發表于 12-28 11:43 ?1670次閱讀
    基于<b class='flag-5'>CW32</b>的門禁綜合系統

    CW32單片機在智能馬桶的應用介紹

    和調節。本文將介紹CW32單片機在智能馬桶的詳細應用。圖:CW32的智能馬桶控制板CW32單片機在智能馬桶的應用介紹1.溫度感應與控制智能馬
    的頭像 發表于 12-20 10:09 ?583次閱讀
    <b class='flag-5'>CW32</b>單片機在智能馬桶的應用<b class='flag-5'>介紹</b>

    CW32單片機在智能馬桶的應用介紹

    和調節。本文將介紹CW32單片機在智能馬桶的詳細應用。 圖:CW32的智能馬桶控制板 CW32單片機在智能馬桶的應用介紹 1.溫度感應與控
    發表于 12-20 10:06

    CW32單片機在智能馬桶的應用介紹

    智能科技的迅速發展使得我們的日常生活變得更加便捷和舒適。智能馬桶作為其中一種智能家居產品,通過單片機接受和處理來自傳感的數據,然后通過控制模塊對智能馬桶的各項功能進行控制,實現對智能馬桶的全面控制和調節。本文將介紹CW32單片
    的頭像 發表于 12-20 10:02 ?737次閱讀
    <b class='flag-5'>CW32</b>單片機在智能馬桶的應用<b class='flag-5'>介紹</b>