哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

基于MM32L0130的LPUART應(yīng)用(1)

靈動(dòng)MM32MCU ? 來源:靈動(dòng)MM32MCU ? 作者:靈動(dòng)MM32MCU ? 2022-11-18 10:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

LPUART(Low power universal asynchronous receiver transmitter,低功耗通用異步收發(fā)器),相比標(biāo)準(zhǔn)的UART,其功耗極低,支持在低功耗模式下運(yùn)行,并且可以將MCU從低功耗模式喚醒。

本文介紹MM32全新低功耗系列MM32L0130的LPUART外設(shè),實(shí)現(xiàn)基本UART收發(fā)通信、通過UART中斷使MCU從低功耗模式中喚醒。

1LPUART 簡介

1.1 LPUART功能框圖

c8b7b75e-665f-11ed-8abf-dac502259ad0.jpg ? ?

1.2 LPUART功能特征

支持UART幀格式的全雙工異步數(shù)據(jù)收發(fā)。

支持輸入任意頻率的時(shí)鐘源,可配置為LSE/LSI/PCLK。

支持可編程的波特率數(shù)據(jù)傳輸,發(fā)送和接收時(shí)可采用3、4分頻交替,防止累計(jì)誤差。

可配置奇偶校驗(yàn)位、停止位。

可配置收發(fā)數(shù)據(jù)信號(hào)取反。

2LPUART時(shí)鐘配置

LPUART時(shí)鐘源配置寄存器在RCC_CFGR2中的位0和位1,可配置LSE、LSI、PCLK作為時(shí)鐘源。

c8d54abc-665f-11ed-8abf-dac502259ad0.png

3LPUART中斷與喚醒

支持的中斷源:

接收緩沖溢出

幀錯(cuò)誤

奇偶校驗(yàn)錯(cuò)誤

接收器檢測(cè)到起始位

接收器檢測(cè)到下降沿

接收器完整接收 1byte 數(shù)據(jù)

接收器完整接收數(shù)據(jù)且與預(yù)設(shè)數(shù)據(jù)匹配

發(fā)送器數(shù)據(jù)完成發(fā)送

發(fā)送器緩沖空

支持低功耗模式下的喚醒源:

接收器檢測(cè)到下降沿喚醒

接收器檢測(cè)到起始位喚醒

接收器1字節(jié)接收完成喚醒

接收器1字節(jié)數(shù)據(jù)接收并匹配喚醒

4接收和發(fā)送時(shí)序

由于LPUART工作時(shí)鐘不是波特率的整數(shù)倍,采用固定分頻系數(shù)的話會(huì)引入累計(jì)誤差,所以在接收和發(fā)送的時(shí)候采用3、4分頻交替進(jìn)行接收和發(fā)送,每個(gè)bit采樣一次,每個(gè)bit采用3分頻還是4分頻由MCTL寄存器控制,接收和發(fā)送時(shí)序圖如下:

c8eb5032-665f-11ed-8abf-dac502259ad0.png

當(dāng)LPUART工作時(shí)鐘配置為標(biāo)準(zhǔn)的32.768KHz時(shí),軟件可配置BREN為0,然后根據(jù)通信波特率調(diào)整調(diào)制寄存器MCTL,建議配置參數(shù)如下表:

c900eaaa-665f-11ed-8abf-dac502259ad0.png

5LPUART寄存器概覽

c91b0278-665f-11ed-8abf-dac502259ad0.png

6LPUART實(shí)現(xiàn)普通UART功能配置步驟

1開啟LPUART所選時(shí)鐘源

2配置RCC_CFGR2寄存器選擇LPUART時(shí)鐘

3配置 LPUBAUD 寄存器決定波特率

4根據(jù)波特率選擇合適的調(diào)制參數(shù),配置 MCTL 寄存器

5配置 LPUCON 寄存器,選擇幀格式、極性、中斷參數(shù)等

6配置 LPUEN 寄存器打開發(fā)送、接收使能

7發(fā)送和接收數(shù)據(jù)

發(fā)送數(shù)據(jù):

將待發(fā)送的數(shù)據(jù)寫入LPUTXD,當(dāng)發(fā)送完成時(shí),LPUSTA的TXE標(biāo)志位會(huì)被硬件置起,表示數(shù)據(jù)已傳入移位寄存器,發(fā)送 buffer為空。此時(shí)可往LPUTXD寫入下一個(gè)數(shù)據(jù)。軟件向發(fā)送buffer寫數(shù)據(jù)時(shí)TXE標(biāo)志位自動(dòng)清零。

接收數(shù)據(jù):

當(dāng)接收一個(gè)完整幀時(shí),LPUSTA的RXF標(biāo)志位置起,表示已完整接收數(shù)據(jù),此時(shí)軟件可讀取LPURXD讀出接收到的數(shù)據(jù)。軟件讀LPUDATA寄存器時(shí),RXF標(biāo)志位自動(dòng)清零。

8LPUART功能實(shí)現(xiàn)代碼

首先編寫基礎(chǔ)UART的代碼,通過輪詢的方式發(fā)送和接收數(shù)據(jù)。然后添加中斷代碼,實(shí)現(xiàn)通過LPUART將MCU從低功耗模式喚醒。

8.1 基于LSE時(shí)鐘的基礎(chǔ)UART功能實(shí)現(xiàn)代碼

a.開啟BKP、LSE時(shí)鐘,待LSE時(shí)鐘穩(wěn)定,使能LPUART時(shí)鐘:

RCC_APB1PeriphClockCmd(RCC_APB1ENR_BKP,ENABLE);
PWR_BackupAccessCmd(ENABLE);
RCC_LSEConfig(RCC_LSE_ON);
DELAY_Ms(100);
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET){;}
RCC_APB2PeriphClockCmd(RCC_APB2ENR_LPUART1,ENABLE);

b.配置LPUART的LPUART_InitTypeDef結(jié)構(gòu)體參數(shù):

LPUART_InitTypeDefinit_struct;
init_struct.LPUART_Clock_Source=0;//時(shí)鐘源選擇
init_struct.LPUART_BaudRate=LPUART_Baudrate_9600;//波特率選擇9600
init_struct.LPUART_WordLength=LPUART_WordLength_8b;//8位數(shù)據(jù)位
init_struct.LPUART_StopBits=LPUART_StopBits_1;//1位停止位
init_struct.LPUART_Parity=LPUART_Parity_No;//沒有校驗(yàn)位
init_struct.LPUART_MDU_Value=0x952;//波特率調(diào)制控制寄存器
init_struct.LPUART_NEDET_Source=LPUART_NegativeDectect_Source2;//下降沿采樣使能
init_struct.LPUART_RecvEventCfg=LPUART_RecvEvent_Start_Bit;//中斷檢測(cè)模式
LPUART_Init(LPUART1,&init_struct);
LPUART_Cmd(LPUART1,ENABLE);

c.設(shè)置LPUART引腳復(fù)用,例程復(fù)用到PA4、PA5:

GPIO_InitTypeDefGPIO_InitStruct;
RCC_GPIO_ClockCmd(GPIOA,ENABLE);

GPIO_PinAFConfig(GPIOA,GPIO_PinSource4,GPIO_AF_3);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_3);

//LPUART1_TXGPIOA.4
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);

//LPUART1_RXGPIOA.5
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOA,&GPIO_InitStruct);

d.編寫發(fā)送函數(shù):

voidOutput_Byte(LPUART_TypeDef*lpuart,uint8_tdat)
{
LPUART_SendData(lpuart,dat);
while(!LPUART_GetFlagStatus(lpuart,LPUART_LPUSTA_TXE));
}

e.編寫輪詢接收函數(shù):

uint8_tInput_Byte(LPUART_TypeDef*lpuart)
{
uint8_ttemp;
while(1){
if(LPUART_GetFlagStatus(lpuart,LPUART_LPUSTA_RXF)){
//readLPUART_LPUSTA_RXFbitandclear
temp=(uint8_t)LPUART_ReceiveData(lpuart);
break;
}
}
if(temp==0xd){
return0;
}
returntemp;
}

f.編寫實(shí)驗(yàn)樣例:

voidLPUART_TxRx_Test(void)
{
uint8_ttemp,i;
charstring[]="LPUARTpollingtest!
";

for(i=0;i

g.在main函數(shù)中配置好LPUART后,調(diào)用LPUART_TxRx_Test函數(shù),可得到如下實(shí)驗(yàn)結(jié)果:

cad0236e-665f-11ed-8abf-dac502259ad0.png

8.2 在上述基本LPUART配置的基礎(chǔ)上增加中斷配置代碼,實(shí)現(xiàn)喚醒低功耗模式中的MCU

a.開啟SYSCFG、PWR時(shí)鐘:

RCC_APB2PeriphClockCmd(RCC_APB2ENR_SYSCFG,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1ENR_PWR,ENABLE);

b.EXTI模塊可以產(chǎn)生中斷請(qǐng)求,用來喚醒低功耗模式中的MCU,LPUART連接到EXTI22,使能EXTI22:

EXTI_InitTypeDefEXTI_InitStruct;
EXTI_StructInit(&EXTI_InitStruct);
EXTI_InitStruct.EXTI_Line=EXTI_Line22;
EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Rising;
EXTI_InitStruct.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStruct);

c.配置NVIC:

NVIC_InitTypeDefNVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel=LPUART1_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPriority=1;
NVIC_Init(&NVIC_InitStruct);

d.清除接收標(biāo)志并打開接收中斷:

LPUART_ClearITPendingBit(LPUART1,LPUART_LPUIF_RXIF);
LPUART_ITConfig(LPUART1,LPUART_LPUCON_RXIE,ENABLE);

e.定義RX緩存,然后編寫中斷服務(wù)函數(shù):

charrxDataBuf[10],cnt=0;
uint8_tcnt_flag=0;
voidLPUART1_IRQHandler()
{
if(LPUART_GetFlagStatus(LPUART1,LPUART_LPUSTA_START))
{
LPUART_ClearFlagStatus(LPUART1,LPUART_LPUSTA_START);

}
if(LPUART_GetITStatus(LPUART1,LPUART_LPUIF_RXIF)==SET)
{
LPUART_ClearITPendingBit(LPUART1,LPUART_LPUIF_RXIF);
rxDataBuf[cnt]=LPUART_ReceiveData(LPUART1);
if(++cnt>=10)
{
cnt_flag=1;
cnt=0;
}
}
}

f.編寫實(shí)驗(yàn)樣例:

voidLPUART_Wakeup_Test(void)
{
uint8_ttemp,i;
charstring1[]="LPUARTwakeupmcutest!
";
charstring2[]="mcustop!
";
charstring3[]="mcuwakeup!
";

for(i=0;i

g.在main函數(shù)中配置好LPUART后,調(diào)用實(shí)驗(yàn)函數(shù)LPUART_Wakeup_Test,可以的到如下結(jié)果:

cae8d170-665f-11ed-8abf-dac502259ad0.png

審核編輯:湯梓紅

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

    關(guān)注

    147

    文章

    19103

    瀏覽量

    402969
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5617

    瀏覽量

    130369
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1319

    瀏覽量

    106941
  • 異步收發(fā)器
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    11168
  • MM32
    +關(guān)注

    關(guān)注

    1

    文章

    108

    瀏覽量

    1427

原文標(biāo)題:靈動(dòng)微課堂 (第236講)|基于MM32L0130的LPUART應(yīng)用(1)

文章出處:【微信號(hào):MindMotion-MMCU,微信公眾號(hào):靈動(dòng)MM32MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    S32K344 DMAMUX1 LPUART14總線故障怎么解決?

    ;lt;&埃德瑪0 17 47>; 通道 16,17 應(yīng)位于DMAMUX1范圍內(nèi),其中 LPUART14 位于插槽 46 和 47 上。 遺憾的是,當(dāng) ASYNC API
    發(fā)表于 04-16 07:31

    液晶拼接屏0mm、0.88mm、1.7mm、1.8mm、3.5mm、11mm物理拼縫選擇丨OBOO鷗柏

    、0.88mm、1.7mm、3.5mm、和11mm拼縫液晶拼接屏單元的具體區(qū)別:1.拼縫寬度0mm
    的頭像 發(fā)表于 02-02 12:40 ?426次閱讀
    液晶拼接屏0<b class='flag-5'>mm</b>、0.88<b class='flag-5'>mm</b>、1.7<b class='flag-5'>mm</b>、1.8<b class='flag-5'>mm</b>、3.5<b class='flag-5'>mm</b>、11<b class='flag-5'>mm</b>物理拼縫選擇丨OBOO鷗柏

    基于靈動(dòng)MM32F0130微控制器的電子貨架標(biāo)簽系統(tǒng)

    產(chǎn)生的誤差,也確保了貨架與收銀端價(jià)格的一致。英尚基于靈動(dòng)MM32F0130微控制器提供的電子貨架標(biāo)簽系統(tǒng)方案,因其高效能與低功耗特性,成為許多電子標(biāo)簽設(shè)計(jì)的優(yōu)選。
    的頭像 發(fā)表于 12-11 16:38 ?504次閱讀

    ANT-GNL1-nSP 嵌入式GNSS天線技術(shù)解析與應(yīng)用指南

    TE Connectivity/Linx Technologies ANT-GNL1-nSP嵌入式L1 GNSS天線P是一款表面貼裝全球衛(wèi)星導(dǎo)航系統(tǒng) (GNSS) 天線,支持L1/E1
    的頭像 發(fā)表于 11-07 14:17 ?1273次閱讀

    ?TE Connectivity L1/L5微型Splatch GNSS芯片天線技術(shù)解析

    TE Connectivity(TE)/Linx Technologies L1/L5 Splatch GNSS芯片天線支持L1/E1/B1
    的頭像 發(fā)表于 11-04 11:34 ?872次閱讀
    ?TE Connectivity <b class='flag-5'>L1</b>/<b class='flag-5'>L</b>5微型Splatch GNSS芯片天線技術(shù)解析

    基于VL53L4CD的高精度ToF接近傳感器擴(kuò)展板:X-NUCLEO-53L4A1 技術(shù)解析

    、學(xué)習(xí)和開發(fā)應(yīng)用。VL53L4CD專門設(shè)計(jì)用于接近和短程測(cè)量,提供非常精確的距離測(cè)量(1mm至1300mm)。具有18° FoV的新一代激光發(fā)射器提高了環(huán)境光下的性能,測(cè)距速度高達(dá)100Hz。
    的頭像 發(fā)表于 10-29 11:36 ?846次閱讀
    基于VL53<b class='flag-5'>L</b>4CD的高精度ToF接近傳感器擴(kuò)展板:X-NUCLEO-53<b class='flag-5'>L4A1</b> 技術(shù)解析

    ST VL53L7CX飛行時(shí)間傳感器與X-NUCLEO-53L7A1擴(kuò)展板技術(shù)解析

    。 STMicroelectronics 推出的這款評(píng)估套件,旨在幫助用戶了解、評(píng)測(cè)和開發(fā)基于VL53L7CX飛行時(shí)間8x8多區(qū)90° 視場(chǎng)角測(cè)距傳感器的應(yīng)用程序。該款擴(kuò)展板配有蓋玻片托架,在蓋玻片下方可適配0.25mm 、 0.5m
    的頭像 發(fā)表于 10-28 11:34 ?949次閱讀
    ST VL53<b class='flag-5'>L</b>7CX飛行時(shí)間傳感器與X-NUCLEO-53<b class='flag-5'>L7A1</b>擴(kuò)展板技術(shù)解析

    RT Studio 創(chuàng)建 STM32G4xx的板子,LPUART1的初始化存在錯(cuò)誤怎么解決?

    我是一個(gè)新手,剛開始探索RT-Thread+STM32 在用RT Studio創(chuàng)建工程后順利把板子跑起來了,不是開發(fā)板,是自己的板子;但是發(fā)現(xiàn)LPUART1不能使用,后面有折騰了下Studio鏈接
    發(fā)表于 10-11 08:34

    rtt串口驅(qū)動(dòng)對(duì)低功耗串口lpuart1不兼容怎么解決?

    記錄一下開啟低功耗串口lpuart1的問題點(diǎn)和臨時(shí)解決辦法,希望官方早日修復(fù) 問題現(xiàn)象: 使用rtt studio基于芯片創(chuàng)建了stm32h750的基礎(chǔ)工程,log串口選用的LPUART1(tx
    發(fā)表于 09-28 08:51

    H743的LPUART1接收數(shù)據(jù)有時(shí)候出錯(cuò)怎么解決?

    MODBUS協(xié)議,從機(jī)回復(fù)的都是正確的。LPUART1接收到就有時(shí)不正確。 波特率9600,時(shí)鐘用的是內(nèi)部CSI。 同一塊兒板子有時(shí)出現(xiàn),有時(shí)正常。有的板子出現(xiàn),有的板子不出現(xiàn)。
    發(fā)表于 09-22 06:58

    【概念產(chǎn)品CP155】5.9mm/8.01mm轉(zhuǎn) 9.5mm E1.S 硬盤轉(zhuǎn)換適配器

    ICYDOCKCP155是一款全金屬結(jié)構(gòu)設(shè)計(jì)的E1.S硬盤形態(tài)轉(zhuǎn)換器,可將厚度為5.9mm或8.01mm的E1.SNVMe硬盤轉(zhuǎn)換為標(biāo)準(zhǔn)9.5mmE
    的頭像 發(fā)表于 06-19 17:33 ?1179次閱讀
    【概念產(chǎn)品CP155】5.9<b class='flag-5'>mm</b>/8.01<b class='flag-5'>mm</b>轉(zhuǎn) 9.5<b class='flag-5'>mm</b> E<b class='flag-5'>1</b>.S 硬盤轉(zhuǎn)換適配器

    PCB走線寬度1mm1A電流的依據(jù)是什么

    在做PCB設(shè)計(jì)時(shí),如果有大電流,就需要針對(duì)不同的電流值設(shè)計(jì)對(duì)應(yīng)的線寬,以前老師傅給的建議是1mm線寬過1A電流,按這個(gè)估算就可以。
    的頭像 發(fā)表于 05-07 10:15 ?3860次閱讀
    PCB走線寬度<b class='flag-5'>1mm</b>過<b class='flag-5'>1</b>A電流的依據(jù)是什么

    RA4L1_SENSOR-V1原理圖

    RA4L1_SENSOR-V1開發(fā)板原理圖
    發(fā)表于 04-30 09:41 ?11次下載

    RA4L1數(shù)據(jù)手冊(cè)

    瑞薩電子 RA4L1 MCU 產(chǎn)品組,低功耗 32 位微控制器 (MCU),基于支持 TrustZone? 的 Arm? Cortex?-M33 (CM33) 內(nèi)核,實(shí)現(xiàn)了低工作電壓、低功耗與高性能
    發(fā)表于 04-30 09:38 ?6次下載

    RA4L1硬件手冊(cè)

    瑞薩電子 RA4L1 MCU 產(chǎn)品組,低功耗 32 位微控制器 (MCU),基于支持 TrustZone? 的 Arm? Cortex?-M33 (CM33) 內(nèi)核,實(shí)現(xiàn)了低工作電壓、低功耗與高性能
    發(fā)表于 04-30 09:37 ?10次下載
    富顺县| 丰宁| 遵义县| 寿阳县| 德化县| 西乡县| 陇西县| 横山县| 定结县| 泸州市| 商河县| 周宁县| 大洼县| 哈密市| 广宁县| 温州市| 额济纳旗| 盐山县| 临泽县| 四川省| 松阳县| 西青区| 个旧市| 云霄县| 忻州市| 眉山市| 抚顺市| 华蓥市| 广宗县| 广宁县| 丰台区| 博罗县| 大埔区| 永城市| 景宁| 云梦县| 湾仔区| 信丰县| 黎平县| 海兴县| 扬州市|