色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > STM32 USART串口

STM32 USART串口 時間:2019-07-16      來源:重慶中心,王老師

什么是串口

串口是串行接口 (Serial Interface)的簡稱,它是指數據一位一位地順序傳送,其特點是通信線路簡單,只要一對傳輸線就可以實現雙向通信(可以直接利用電話線作為傳輸線),從而大大降低了成本,特別適用于遠距離通信,但傳送速度較慢。一條信息的各位數據被逐位按順序傳送的通訊方式稱為串行通訊。串行通訊的特點是:數據位的傳送,按位順序進行,最少只需一根傳輸線即可完成;成本低但傳送速度慢。串行通訊的距離可以從幾米到幾千米;根據信息的傳送方向,串行通訊可以進一步分為單工、半雙工和全雙工三種。

STM32的USART簡介

在STM32的參考手冊中,串口被描述成通用同步異步收發器(USART),它提供了一種靈活的方法與使用工業標準NRZ異步串行數據格式的外部設備之間進行全雙工數據交換。有別與USART,還有一個UART,它在USART基礎上裁剪掉了同步通信功能,只有異步通信。簡單區分同步和異步就是看通信時需不需要對外提供時鐘輸出,我們平時用的串口通信基本都是 UART。

串口通信一般是以幀格式傳輸數據,即一幀一幀傳輸,每幀包含有起始信號、數據信息、停止信息,可能還有校驗信息。USART 滿足外部設備對工業標準 NRZ 異步串行數據格式的要求,并且使用了小數波特率發生器,可以提供多種波特率,使得它的應用更加廣泛。USART 支持同步單向通信和半雙工單線通信;還支持局域互連網絡 LIN、智能卡(SmartCard)協議與 lrDA(紅外線數據協會) SIR ENDEC規范。USART支持使用 DMA,可實現高速數據通信。

硬件連接

USART通過3個引腳與其他設備連接在一起,任何USART雙向通信至少需要2個引腳:接受數據輸入(RX)和發送數據輸出(TX)。  

RX: 接受數據串行輸入。通過過采樣技術來區別數據和噪音,從而恢復數據。 

TX: 發送數據輸出。當發送器被禁止時,輸出引腳恢復到它的I/O端口配置。當發送器被激活,并且不發送數據時,TX引腳處處于高電平。在單線和智能卡模式里,此I/O口被同時用于數據的發送和接收。

USART功能框圖剖析

1、功能引腳

TX:發送數據輸出引腳。

RX:接收。

SW_RX:數據接收引腳,屬于內部引腳。

nRTS:請求以發送,n表示低電平有效。如果使能 RTS 流控制,當USART接收器準備好接收新數據時就會將nRTS變成低電平;當接收寄存器已滿時,nRTS將被設置為高電平。該引腳只適用于硬件流控制。

nCTS:清除以發送(Clear To Send),n表示低電平有效。如果使能 CTS流控制,發送器在發送下一幀數據之前會檢測 nCTS 引腳,如果為低電平,表示可以發送數據,如果為高電平則在發送完當前數據幀之后停止發送。該引腳只適用于硬件流控制。

SCLK:發送器時鐘輸出引腳。這個引腳僅適用于同步模式。

以STM32F103RC系列為例,USART1的時鐘來源于APB2總線時鐘,最大頻率為72MHZ,其他4個時鐘來源于APB1總線時鐘,最大頻率36MHZ。UART只有異步傳輸功能,沒有SCLK、nCTS和nRTS功能引腳。

2.數據寄存器

USART說數據寄存器(USART_DR)只有低 9 位有效,并且第 9 位數據是否有效要取決于USART 控制寄存器 1(USART_CR1)的 M 位設置,當 M 位為 0 時表示 8 位數據字長,當 M位為 1 表示 9 位數據字長,我們一般使用 8位數據字長。

USART_DR包含了已發送的數據或者接收到的數據。USART_DR實際是包含了兩個寄存器,一個專門用于發送的可寫 TDR,一個專門用于接收的可讀 RDR。當進行發送操作時,往 USART_DR寫入數據會自動存儲在 TDR內;當進行讀取操作時,向 USART_DR讀取數據會自動提取 RDR 數據。

TDR和RDR都是介于系統總線和移位寄存器之間。串行通信是一個位一個位傳輸的,發送時把 TDR 內容轉移到發送移位寄存器,然后把移位寄存器數據每一位發送出去,接時把接收到的每一位順序保存在接收移位寄存器內然后才轉移到 RDR。

USART 支持 DMA 傳輸,可以實現高速數據傳輸。

3.控制器

USART有專門控制發送的發送器、控制接收的接收器,還有喚醒單元、中斷控制等。

使用USART之前需要向USART_CR1寄存器的UE位置1使能USART,UE位用于開啟供給串口的時鐘。發送或者接收數據字長可選8或9位,由USARTT_CR1的M位控制。

1)發送器

當USART_CR1寄存器的發送使能位TE置1時,啟動數據發送,發送移位寄存器的數據會在TX引腳輸出,低位在前,高位在后。如果是同步模式SCLK也輸出時鐘信號。

一個字符幀發送需要3部分:起始位、數據幀、停止位。起始位是一個位周期的低電平,位周期就是每一位占用的時間 ;數據幀就是我們要發送的8或9位數據,數據是最低位開始傳輸的;停止位是一定時間周期的高電平。

停止位的時間長短可以通過USART控制寄存器2(USART_CR2)的STOP[1:0]位控制,可選0.5個、1個、1.5個、2個停止位。默認使用1個停止位。2個停止位適用于正常USART模式、單線模式和調制解調器模式。0.5和1.5個停止位用于智能卡模式。

當發使能位TE置1之后,發送器開始會發送一個空閑幀(一個數據幀長度的高電平),接下來就可以往USART_DR寄存器寫入要發送的數據。在寫入最后一個數據后,需等待USART狀態寄存器(USART_SR)的TC位為1,表示數據傳輸完成。USART_CR1寄存器的TCIE位置1,則產生中斷。

發送數據時,幾個重要的標志位如下:

TE:發送使能。

TXE:發送寄存器為空,發送單個字節時使用。

TC:發送完成,發送多個字節數據時候使用。

TXIE:發送完成中斷使能。

2)接收器

將CR1寄存器的RE位置1,使能USART接收,使得接收器在RX線開始搜索起始位。在確定起始位后,就根據RX線電平狀態把數據存放在接收移位寄存器內。接收完成后就把接收移位寄存器的數據移到PDR內,并把USART_SR寄存器的RXNE位置。如果USART_CR2寄存器的RXNEIE置1可以產生中斷。

接收數據時,幾個重要的標志位如下:

RE: 接收使能。

RXNE:讀數據寄存器非空。

RXNEIE:發送完成中斷使能。

4.小數波特率生成

USART 的發送器和接收器使用相同的波特率。計算公式如下:

其中,f PLCK 為 USART 時鐘, USARTp 是一個存放在波特率寄存器(USART_BRR)的一個無符號定點數。其中 p_Mantissa[11:0]位定義 USARTp 的整數部分,p_Fraction[3:0]位定義 USARTp 的小數部分。

例如:p_Mantissa=24(0x18),p_Fraction=10(0x0A),此時 USART_BRR 值為0x18A;那么USARTp的小數位10/16=0.625;整數位24,最終USARTp的值為24.625。

如果知道 USARTp 值為 27.68,那么 p_Fraction=16*0.68=10.88,最接近的正整數為 11,所以 p_Fraction[3:0]為 0xB;p_Mantissa=整數(27.68)=27,即為 0x1B。

波特率的常用值有 2400、9600、19200、115200。下面以實例講解如何設定寄存器值得到波特率的值。

我們知道 USART1 使用 APB2 總線時鐘,最高可達 72MHz,其他 USART 的最高頻率為 36MHz。我們選取 USART1 作為實例講解,即 f PLCK =72MHz。為得到 115200bps 的波特率,此時:

115200 =72000000/(16 ∗ USARTp)

解 得 USARTp=39.0625,可 算 得 p_Fraction=0.0625*16=1=0x01 ,p_Mantissa=39=0x27,即應該設置 USART_BRR 的值為 0x171。

5.校驗控制

STM32F103系列控制器USART支持奇偶校驗。使用校驗位時,串口傳輸的長度將在8位數據幀上加上1位的校驗位,總共9位,此時USART_CR1寄存器的M位需要設置位1,即9數據位。將USART_CR1寄存器的PCE位置1就可以啟動奇偶校驗控制,奇偶校驗由硬件自動完成。啟動了奇偶校驗控制之后,發送數據幀時會自動添加校驗位,接收數據自動驗證校驗位。接收數據時如果出現奇偶校驗位驗證失敗,會將USART_SR寄存器的PE置1,并可以產生奇偶校驗中斷。

使用了奇偶校驗控制位后,每個字符幀的格式變成了:起始位+數據幀+校驗位+停止位。

根據M位定義的幀長度,可能的USART幀格式列在下表中。

6.中斷請求

上一篇:STM32F407之SD卡讀數據介紹

下一篇:Shell命令

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5,京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 女18一级大黄毛片免费女人 | 亚洲成AV人片在线观看天堂无 | 久久人搡人人玩人妻精品首页 | 18school第一次破苞摘花 | 久久久精品人妻一区二区三区蜜桃 | 黄色免看 | 亚洲AV无码一区东京热久久 | 九九久久精品国产AV片国产 | 各种高潮videos抽搐合集免费 | 免费1级a做爰片在线观看 | 久久亚洲私人国产精品VA | 国产白袜男gaychina霸道太子 | 国产精品精华液网站 | 午夜精品久久久久久久无码 | 国产精品久久香蕉免费播放 | 久久久久亚洲AV无码专区体验 | 国产欧美亚洲一级激情在线观看 | 欧美另类精品XXXX人妖 | 欧美成人在线播放视频 | 午夜神器成在线人成在线人 | 无线乱码一二三区免费看 | 国产精品女A片爽爽波多野结衣 | 亚洲av狠狠爱一区二区三区 | 欧美两根一起进3p做受视频 | 人妻丰满熟妇岳av无码区hd | 亚洲日韩精品国产一区二区三区 | BT天堂新版中文在线 | 欧美白丰满老太aaa片 | 国产精品久久无码不卡黑寡妇 | 涩涩爱97 | 亚洲成av人片在线观看高清 | 亚一区 | 国产精品久久久久久户外露出 | 丰满熟女高潮毛茸茸欧洲视频 | 中文字幕一二三区在线观看 | 亚洲成av人片天堂网无码】 | 国产精品亚洲а∨天堂免 | 国产精品亚洲色婷婷99久久精品 | 欧美日产国产精品日产 | 最近免费中文字幕大全免费 | 免费无码a片一区二区三区 国产精品青青在线观看爽 久久久久久亚洲AV无码蜜芽 |