最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

CW32單片機UART低功耗模式介紹

2023-05-22 16:03 作者:武漢芯源半導體  | 我要投稿

在嵌入式系統(tǒng)的設計中,低功耗設計(Low-Power Design)是許多設計人員必須面對的問題,其原因在于嵌入式系統(tǒng)被廣泛應用于便攜式和移動性較強的產(chǎn)品中去,而這些產(chǎn)品不是一直都有充足的電源供應,往往是靠電池來供電,所以設計人員從每一個細節(jié)來考慮降低功率消耗,從而盡可能地延長電池使用時間。因此,大部分芯片都會有低功耗模式,以CW32L083為例,它就是一個32位低功耗微控制器。


一、芯片模式介紹

1.CW32L083工作模式

CW32L083 支持三種工作模式,由內(nèi)嵌的電源管理模塊自動完成電源的統(tǒng)一管理。三種工作模式是:?

? 運行模式(Active mode)?

? 休眠模式(Sleep mode)?

? 深度休眠模式(DeepSleep mode)?

電源上電后,系統(tǒng)自動進入運行模式。用戶可通過軟件程序,進入休眠或深度休眠兩種低功耗運行狀態(tài);在低功耗運行狀態(tài)時,可通過硬件中斷觸發(fā)喚醒機制,使系統(tǒng)返回到運行模式。


2.進入休眠模式或深度休眠模式

使用 M0+ 內(nèi)核的 ARM 等待中斷專用指令,WFI(Wait for Interrupt),配合 M0+ 內(nèi)核的系統(tǒng)控制寄存器(SCR, System Control Register)的 SLEEPONEXIT 和 SLEEPDEEP 位域,可實現(xiàn)立即進入或退出(中斷服務程序)時進 入休眠模式或深度休眠模式。?

? 立即進入?

執(zhí)行 WFI 指令,MCU 將立即進入休眠模式(SLEEPDEEP 為 0 時)或深度休眠模式(SLEEPDEEP 為 1 時)?

? 退出時進入?

將 SLEEPONEXIT 位置 1,當退出最低優(yōu)先級的中斷服務程序后,MCU 會進入休眠模式(SLEEPDEEP 為 0 時) 或深度休眠模式(SLEEPDEEP 為 1 時),而不需執(zhí)行 WFI 指令 。


在深度休眠模式下,系統(tǒng)將自動關閉高速時鐘。如用戶需要在深度休眠模式下使部分外設仍保持運行,則須在進入深度休眠模式前,啟動相應的低速時鐘并將該外設時鐘設置為此低速時鐘。


3.退出休眠模式或深度休眠模式

在休眠模式或深度休眠模式下,均可通過中斷來喚醒 CPU,返回到運行模式。但是,值得注意的是,如果用戶在中斷服務程序中執(zhí)行 WFI 命令進入休眠(包括深度休眠),則需要比此中斷更高優(yōu)先級的中斷才能喚醒 CPU,因此,我們強烈建議用戶在準備進入休眠前,應先處理完所有中斷服務程序,并且清除所有中斷請求和中斷標志。

使用中斷退出休眠模式,用戶必須在進入休眠(包括深度休眠)前使能此中斷的允許位。

中斷喚醒退出深度休眠模式時,CPU 運行狀態(tài)與退出休眠模式相同。


4.UART控制深度休眠模式

UART控制器工作在雙時鐘域下,支持在深度休眠模式下進行正常的數(shù)據(jù)收發(fā),并通過接收完成中斷喚醒 MCU回到運行模式。

如果設置了傳輸時鐘 UCLK來源為低速時鐘,當系統(tǒng)進入深度休眠模式后,高速時鐘將停止,低速時鐘保持運行,UART仍可以進行正常的數(shù)據(jù)收發(fā)(波特率僅支持 2400 bps、4800 bps 和 9600 bps)。要實現(xiàn)深度休眠模式下使用 UART 喚醒功能,需在進入深度休眠模式之前使能 UART 接收完成中斷(即設置 UARTx_IER.RC 為 1),數(shù)據(jù)接收完成時,接收完成中斷將喚醒MCU恢復到運行模式。

如果設置了傳輸時鐘 UCLK 來源為高速時鐘,當系統(tǒng)進入深度休眠模式后,高速時鐘會停止運行,UAR不會接收數(shù)據(jù)。此時,仍可通過GPIO中斷喚醒 MCU,實現(xiàn)在深度休眠模式下接收數(shù)據(jù),參考配置步驟如下:?

步驟 1:使能 UARTx_RXD 對應引腳的 GPIO 下降沿中斷;?

步驟 2:設置 UARTx_CR1.START 為 1,選擇 RXD 信號起始位判定方式為低電平;?

步驟 3:使能 UART 接收(即設置 UARTx_CR1.RXEN 為 1);?

步驟 4:進入深度休眠模式;?

步驟 5:等待主機發(fā)送數(shù)據(jù),產(chǎn)生 GPIO 下降沿中斷,喚醒 MCU;?

步驟 6:關閉 RXD 對應引腳的 GPIO 中斷功能,等待 RXD 接收完成。


二、實例演示:UART深度休眠模式示例(傳輸時鐘為LSI)

程序運行一段時間后進入深度休眠模式,PC發(fā)送數(shù)據(jù)可喚醒MCU,喚醒后UART輪詢接收數(shù)據(jù),并存儲到TxRxBuffer緩沖區(qū),UART接收到'\n'后不再接收數(shù)據(jù),然后將TxRxBuffer緩沖區(qū)中的數(shù)據(jù)回傳至PC。傳輸結束后,LED1閃爍5s,并再次進入深度休眠模式。


1.外設時鐘使能



2.配置GPIO



3.配置UART

4.配置低功耗模式

5.配置NVIC中斷

6.發(fā)送8位數(shù)組



7.接收8位數(shù)組



8.主程序



9.測試結果

結果顯示,通過PC發(fā)送123456后喚醒MCU, 喚醒后UART輪詢接收數(shù)據(jù),并存儲到TxRxBuffer緩沖區(qū),UART接收到'\n'后不再接收數(shù)據(jù),然后將TxRxBuffer緩沖區(qū)中的數(shù)據(jù)回傳至PC收到123456。傳輸結束后,LED1閃爍5s,并再次進入深度休眠模式。

圖片



CW32單片機UART低功耗模式介紹的評論 (共 條)

分享到微博請遵守國家法律
盘山县| 余干县| 宜昌市| 淮南市| 沽源县| 武威市| 太和县| 荣成市| 赫章县| 常熟市| 伊吾县| 建昌县| 黎平县| 民和| 乌审旗| 柘荣县| 桐梓县| 漠河县| 沧源| 军事| 东光县| 娄烦县| 黑水县| 察雅县| 抚顺市| 宁化县| 时尚| 秦皇岛市| 杭锦旗| 曲靖市| 洛隆县| 铜梁县| 海口市| 博罗县| 宜昌市| 维西| 东阿县| 六安市| 泸溪县| 安福县| 开江县|