RM新时代网站-首页

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

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

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

CW32單片機UART基本數(shù)據(jù)收發(fā)功能介紹

jf_pJlTbmA9 ? 來源:武漢芯源半導(dǎo)體 ? 作者:武漢芯源半導(dǎo)體 ? 2023-10-24 16:50 ? 次閱讀

通用異步收發(fā)器(Universal Asynchronous Receiver/Transmitter:UART),是一種通用串行數(shù)據(jù)總線,常用于系統(tǒng)內(nèi)各子模塊間的數(shù)據(jù)交換。

以CW32L083為例,CW32L083 內(nèi)部集成 6 個通用異步收發(fā)器 (UART),支持異步全雙工、同步半雙工和單線半雙工模式,支持硬件數(shù)據(jù)流控和多機通信;可編程數(shù)據(jù)幀結(jié)構(gòu),可以通過小數(shù)波特率發(fā)生器提供寬范圍的波特率選擇。UART 控制器工作在雙時鐘域下,允許在深度休眠模式下進行數(shù)據(jù)的接收,接收完成中斷可以喚醒 MCU 回到運行模式。

一、主要功能

? 支持雙時鐘域驅(qū)動:配置時鐘 PCLK;傳輸時鐘 UCLK。

? 可編程數(shù)據(jù)幀結(jié)構(gòu):數(shù)據(jù)字長:8、9 位,LSB 在前;校驗位:無校驗、奇校驗、偶校驗;停止位長度:1、1.5、2 位 。

? 16 位整數(shù)、4 位小數(shù)波特率發(fā)生器 。

? 支持異步全雙工、同步半雙工、單線半雙工 。

? 支持硬件流控 RTS、CTS。

? 支持直接內(nèi)存訪問 (DMA) 。

? 支持多機通信,自動地址識別 。

? 6 個帶中斷標(biāo)志的中斷源 。

? 錯誤檢測:奇偶校驗錯誤、幀結(jié)構(gòu)錯誤 。

? 低功耗模式下收發(fā)數(shù)據(jù),中斷喚醒 MCU。

1.功能框圖

UART 控制器掛載到 APB 總線上,配置時鐘域 PCLK,固定為 APB 總線時鐘 PCLK,用于寄存器配置邏輯工作;傳輸時鐘域 UCLK,用于數(shù)據(jù)收發(fā)邏輯工作,其來源可選擇 PCLK 時鐘、外部低速時鐘(LSE)以及內(nèi)部低速時鐘 (LSI)。雙時鐘域的設(shè)計更便于波特率的設(shè)置,支持從深度休眠模式下喚醒控制器。

wKgaomQ_T2KAOESiAAEBhJTPmIk861.jpg

2.UART中斷

UART 控制器支持 6 個中斷源,當(dāng) UART 中斷觸發(fā)事件發(fā)生時,中斷標(biāo)志位會被硬件置位,如果設(shè)置了對應(yīng)的中斷使能控制位,將產(chǎn)生中斷請求。CW32L083 的一個 UART 模塊使用一個系統(tǒng) UART 中斷,UART 中斷是否產(chǎn)生中斷跳轉(zhuǎn)由嵌套向量中斷控 制器 (NVIC) 的中斷使能設(shè)置寄存器 NVIC_ISER 的相應(yīng)位控制。系統(tǒng) UART 中斷示意圖如下圖所示:

wKgZomQ_Tx2AS4EXAABc1ZocmV4559.jpg

在用戶 UART 中斷服務(wù)程序中,應(yīng)查詢相關(guān) UART 中斷標(biāo)志位,以進行相應(yīng)的處理,在退出中斷服務(wù)程序之前, 要清除該中斷標(biāo)志位,避免重復(fù)進入中斷程序。各 UART 中斷源的標(biāo)志位、中斷使能位、中斷標(biāo)志清除位或清除方法,如下表所示:

wKgZomQ_TxyAfVASAACzCkM0v08188.jpg

3.CH340介紹

CH340是一個USB總線的轉(zhuǎn)接芯片,實現(xiàn)USB協(xié)議和UART協(xié)議的自動轉(zhuǎn)換。

wKgZomQ_TxyAaCo1AACYC5dproU972.jpg

RTS#:MODEM聯(lián)絡(luò)輸出信號,請求發(fā)送

UD+:直接連接USB總線的D+數(shù)據(jù)線

UD-:直接連接USB總線的D-數(shù)據(jù)線

V3:在3.3V電源電壓時鏈接VCC輸入外部電源,在5V電源電壓時外接容量為100nF的退耦電容。

VCC:正電源輸入端,需要接100nF電源退耦電容

TXD:串行電路輸出

RXD:串行數(shù)據(jù)輸入,內(nèi)置可控上拉和下拉電阻

CH340內(nèi)置了獨立的收發(fā)緩沖區(qū),支持單工、半雙工或者全雙工異步串行通訊。串行數(shù)據(jù)包括1個低電平起始位、5、6、7或8個數(shù)據(jù)位、1個或2個高電平停止位,支持奇校驗/偶校驗/標(biāo)志校驗/空白校驗。CH340支持常用通訊波特率:50、75、100、110、134.5、150、300、600、900、1200、1800、2400、3600、4800、9600、14400、19200、28800、33600、38400、56000、57600、76800、115200、128000、153600、230400、460800、921600、1500000、2000000等。串口發(fā)送信號的波特率誤差小于0.3%,串口接收信號的允許波特率誤差不小于2%。

二、實例演示

本實例采用CW32L083V8T6的StartKit單板,MCU的串口引腳(PA08/ PA09)和CH340對接,CH340通過USB接口和PC機對接,實現(xiàn)PC機軟件和MCU通過UART雙向通信功能。

單板啟動后,處于等待數(shù)據(jù)接收狀態(tài),當(dāng)有數(shù)據(jù)接收到后,產(chǎn)生UART接收中斷,在中斷中讀取接收到的數(shù)據(jù),然后將數(shù)據(jù)通過UART再發(fā)送回來,并清除中斷標(biāo)志位,然后等待接收下一個數(shù)據(jù)。

1.配置RCC系統(tǒng)時鐘

voidRCC_Configuration(void) { //SYSCLK=HSI=8MHz=HCLK=PCLK RCC_HSI_Enable(RCC_HSIOSC_DIV6); //外設(shè)時鐘使能 RCC_AHBPeriphClk_Enable(DEBUG_UART_GPIO_CLK,ENABLE); DEBUG_UART_APBClkENx(DEBUG_UART_CLK,ENABLE); }

2.GPIO配置

voidGPIO_Configuration(void) { GPIO_InitTypeDefGPIO_InitStructure={0}; //UARTTXRX復(fù)用 DEBUG_UART_AFTX; DEBUG_UART_AFRX; GPIO_InitStructure.Pins=DEBUG_UART_TX_GPIO_PIN; GPIO_InitStructure.Mode=GPIO_MODE_OUTPUT_PP; GPIO_Init(DEBUG_UART_TX_GPIO_PORT, GPIO_InitStructure); GPIO_InitStructure.Pins=DEBUG_UART_RX_GPIO_PIN; GPIO_InitStructure.Mode=GPIO_MODE_INPUT_PULLUP; GPIO_Init(DEBUG_UART_RX_GPIO_PORT, GPIO_InitStructure); }

3.UART配置

voidUART_Configuration(void) { UART_InitTypeDefUART_InitStructure={0}; UART_InitStructure.UART_BaudRate=DEBUG_UART_BaudRate; UART_InitStructure.UART_Over=UART_Over_16; UART_InitStructure.UART_Source=UART_Source_PCLK; UART_InitStructure.UART_UclkFreq=DEBUG_UART_UclkFreq; UART_InitStructure.UART_StartBit=UART_StartBit_FE; UART_InitStructure.UART_StopBits=UART_StopBits_1; UART_InitStructure.UART_Parity=UART_Parity_No; UART_InitStructure.UART_HardwareFlowControl=UART_HardwareFlowControl_None; UART_InitStructure.UART_Mode=UART_Mode_Rx|UART_Mode_Tx; UART_Init(DEBUG_UARTx, UART_InitStructure); }

4.配置NVIC

voidNVIC_Configuration(void) { //優(yōu)先級,無優(yōu)先級分組 NVIC_SetPriority(DEBUG_UART_IRQ,0); //UARTx中斷使能 NVIC_EnableIRQ(DEBUG_UART_IRQ); }

5.中斷函數(shù)處理UART2/UART5

voidUART2_UART5_IRQHandler(void) { /*USERCODEBEGIN*/ uint8_tTxRxBuffer; if(UART_GetITStatus(CW_UART5UART_IT_RC)!=RESET)//獲取UARTx中斷標(biāo)志位 { TxRxBuffer=UART_ReceiveData_8bit(CW_UART5;//通過UARTx接收一個數(shù)據(jù)(8bit) UART_SendData_8bit(CW_UART5TxRxBuffer);//通過UARTx發(fā)送一個數(shù)據(jù)(8bit) UART_ClearITPendingBit(CW_UART5UART_IT_RC);//清除UARTx中斷標(biāo)志位 } /*USERCODEEND*/ }

6.定義常量define

//UARTx #defineDEBUG_UARTxCW_UART5 #defineDEBUG_UART_CLKRCC_APB1_PERIPH_UART5 #defineDEBUG_UART_APBClkENxRCC_APBPeriphClk_Enable1 #defineDEBUG_UART_BaudRate9600 #defineDEBUG_UART_UclkFreq8000000 //UARTxGPIO #defineDEBUG_UART_GPIO_CLKRCC_AHB_PERIPH_GPIOB #defineDEBUG_UART_TX_GPIO_PORTCW_GPIOB #defineDEBUG_UART_TX_GPIO_PINGPIO_PIN_8 #defineDEBUG_UART_RX_GPIO_PORTCW_GPIOB #defineDEBUG_UART_RX_GPIO_PINGPIO_PIN_9 //GPIOAF #defineDEBUG_UART_AFTXPB08_AFx_UART5TXD() #defineDEBUG_UART_AFRXPB09_AFx_UART5RXD() //中斷 #defineDEBUG_UART_IRQUART2_UART5_IRQn

7.UART中斷方式接收數(shù)據(jù)

int32_tmain(void) { //配置RCC RCC_Configuration(); //配置GPIO GPIO_Configuration(); //配置UART UART_Configuration(); //配置NVIC NVIC_Configuration(); //使能UARTxRC中斷 UART_ITConfig(DEBUG_UARTx,UART_IT_RC,ENABLE); UART_SendString(DEBUG_UARTx,"rnCW32L083UARTInterruptrn"); while(1) { //中斷收發(fā) } }

8、測試結(jié)果如下:當(dāng)MCU收到上位機發(fā)送的數(shù)據(jù)后,再回傳到上位機,UART功能正常。

wKgaomQ_TxyAF6d9AAEdQp8F0Rw192.jpg

來源:武漢芯源半導(dǎo)體

免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理

審核編輯 黃宇

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

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634614
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2878

    瀏覽量

    88051
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1235

    瀏覽量

    101353
  • 數(shù)據(jù)收發(fā)

    關(guān)注

    0

    文章

    8

    瀏覽量

    7750
收藏 人收藏

    評論

    相關(guān)推薦

    基于CW32的門禁綜合系統(tǒng)

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

    使用CW32單片機通過ESP8266連接OneNET物聯(lián)網(wǎng)平臺

    這期視頻向大家介紹如何使用CW32單片機通過ESP8266連接OneNET物聯(lián)網(wǎng)平臺,發(fā)送溫濕度數(shù)據(jù)到平臺,并接受平臺的云控制。
    的頭像 發(fā)表于 11-09 14:32 ?1506次閱讀

    單片機定時器的用法

    本章以CW32通用定時器為例介紹單片機定時器的用法。
    的頭像 發(fā)表于 01-04 10:37 ?1389次閱讀
    <b class='flag-5'>單片機</b>定時器的用法

    CW32單片機UART本數(shù)據(jù)收發(fā)功能介紹

    ,CW32L083 內(nèi)部集成 6 個通用異步收發(fā)器 (UART),支持異步全雙工、同步半雙工和單線半雙工模式,支持硬件數(shù)據(jù)流控和多通信;可
    發(fā)表于 04-19 10:18

    CW32單片機在智能馬桶的應(yīng)用介紹

    和調(diào)節(jié)。本文將介紹CW32單片機在智能馬桶的詳細(xì)應(yīng)用。 圖:CW32的智能馬桶控制板 CW32單片機
    發(fā)表于 12-20 10:06

    cw32和stm32的區(qū)別

    cw32和stm32的區(qū)別 CW32和STM32是兩種常見的單片機,被廣泛應(yīng)用于各種電子設(shè)備中。在本文中,我們將深入探討CW32和STM32之間的區(qū)別和優(yōu)劣勢。 1. 硬件性能 硬件性
    的頭像 發(fā)表于 08-16 11:15 ?4173次閱讀

    CW32單片機低電壓檢測器的使用介紹

    CW32單片機低電壓檢測器的使用介紹
    的頭像 發(fā)表于 09-18 10:56 ?1076次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>單片機</b>低電壓檢測器的使用<b class='flag-5'>介紹</b>

    CW32單片機UART波特率設(shè)置介紹

    CW32單片機UART波特率設(shè)置介紹
    的頭像 發(fā)表于 10-24 17:35 ?915次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>單片機</b><b class='flag-5'>UART</b>波特率設(shè)置<b class='flag-5'>介紹</b>

    CW32單片機I2C接口讀寫EEPROM芯片介紹

    CW32單片機I2C接口讀寫EEPROM芯片介紹
    的頭像 發(fā)表于 11-09 17:42 ?1048次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>單片機</b>I2C接口讀寫EEPROM芯片<b class='flag-5'>介紹</b>

    CW32 PWM輸出功能介紹

    CW32 PWM輸出功能介紹
    的頭像 發(fā)表于 09-27 16:12 ?823次閱讀
    <b class='flag-5'>CW32</b> PWM輸出<b class='flag-5'>功能</b><b class='flag-5'>介紹</b>

    CW32實時時鐘(RTC)介紹

    CW32實時時鐘(RTC)介紹
    的頭像 發(fā)表于 10-24 15:36 ?1136次閱讀
    <b class='flag-5'>CW32</b>實時時鐘(RTC)<b class='flag-5'>介紹</b>

    基于CW32單片機做的軟硬件開源項目

    今天就再給大家分享一個基于CW32單片機做的軟硬件開源項目,其中包括RTOS、GUI、藍牙、電源管理等眾多常用功能
    的頭像 發(fā)表于 10-19 10:17 ?1099次閱讀
    基于<b class='flag-5'>CW32</b><b class='flag-5'>單片機</b>做的軟硬件開源項目

    基于CW32的物聯(lián)網(wǎng)應(yīng)用

    CW32】基于CW32的物聯(lián)網(wǎng)應(yīng)用
    的頭像 發(fā)表于 11-02 15:55 ?782次閱讀
    基于<b class='flag-5'>CW32</b>的物聯(lián)網(wǎng)應(yīng)用

    CW32單片機在智能馬桶的應(yīng)用介紹

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

    CW32單片機在智能馬桶的應(yīng)用介紹

    和調(diào)節(jié)。本文將介紹CW32單片機在智能馬桶的詳細(xì)應(yīng)用。圖:CW32的智能馬桶控制板CW32單片機
    的頭像 發(fā)表于 12-20 10:09 ?605次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>單片機</b>在智能馬桶的應(yīng)用<b class='flag-5'>介紹</b>
    RM新时代网站-首页