【STM32】USARTUART串口通信詳解【原理】_第1頁
【STM32】USARTUART串口通信詳解【原理】_第2頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、STM32USARTUART串通信詳解【原理】前注:本章主要講解【原理】【固件庫(標(biāo)準(zhǔn)庫)】【HAL庫】內(nèi)容為 _Snake_編寫,常學(xué)習(xí)總結(jié),內(nèi)容如有不、不妥之處請私信告知,謝謝!硬件原理、通信理論知識按數(shù)據(jù)傳送的式,通訊可分為串通訊與并通訊。串通訊就像單個車道的公路,同時刻只能傳輸 個數(shù)據(jù)位的數(shù)據(jù)。并通訊就像多個車道的公路,可以同時傳輸多個數(shù)據(jù)位的數(shù)據(jù)。特性對根據(jù)串通信數(shù)據(jù)傳輸?shù)南?,可將串通信式分為:單式、半雙式和全雙式。單式指數(shù)據(jù)傳輸僅能沿著個向,不能反向傳輸。半雙指的是數(shù)據(jù)傳輸可以沿著兩個向, 但是不能同時發(fā)送,這就表 發(fā)送/接收 是有先后順序的。全雙指的是可以同時進雙向傳輸。全雙和半

2、雙通信的本質(zhì)區(qū)別是半雙通信雙只共條線路實現(xiàn)雙向通信,但是全雙卻利兩條線路,條作發(fā)送數(shù)據(jù),另條作接收數(shù)據(jù)。同步通訊與異步通訊根據(jù)傳輸式的不同,可以分為同步通信和異步通信在同步通訊中,收發(fā)設(shè)備雙會使根信號線表時鐘信號,在時鐘信號的驅(qū)動下雙進協(xié)調(diào),同步數(shù)據(jù),通訊中通常 雙會統(tǒng)規(guī)定在時鐘信號的上升沿或下降沿對數(shù)據(jù)線進采樣(時鐘線)。在異步通訊中不使時鐘信號進數(shù)據(jù)同步,它們直接在數(shù)據(jù)信號中穿插些同步的信號位,或者把主體數(shù)據(jù)進打包,以數(shù)據(jù)幀的格式傳輸數(shù)據(jù),某些通訊中還 需要雙約定數(shù)據(jù)的傳輸速率(波特率),以便更好地同步。串電平串連接和時序波特率:般選波特率都會有9600,19200,115200等選項。其

3、實意思就是每秒傳輸這么多個特位數(shù) (bit);起始位:先發(fā)出個邏輯”0”的信號,表傳輸數(shù)據(jù)的開始;數(shù)據(jù)位:可以是58位邏輯”0”或”1”,先傳輸bit0,在傳輸bit 1,依次類推;校驗位:數(shù)據(jù)位加上這位后,使得“1”的位數(shù)應(yīng)為偶數(shù)(偶校驗)或奇數(shù)(奇校驗),以此來校驗數(shù)據(jù)傳送的正確性。校驗位是可選的,可以不傳輸;停位:它是個字符數(shù)據(jù)的結(jié)束標(biāo)志,數(shù)據(jù)線變回邏輯”1”;、串STM32F103 系列最多有3 個通同步異步收發(fā)器(usart),2個通異步收發(fā)器(uart)。USART和UART的主要區(qū)別在于,USART持同步通信,該模式有根時鐘線提供時鐘。串在嵌式中經(jīng)常使,般使UART就夠了,常見的

4、途如下:1.作為調(diào)試,打印程序運的狀態(tài)信息;2.連接串接的模塊(如GPS 模塊),傳輸數(shù)據(jù);3.通過電平轉(zhuǎn)換芯變?yōu)镽S232/RS485 電平,連接控設(shè)備;1.功能引腳TX:發(fā)送數(shù)據(jù)輸出引腳。RX:接收數(shù)據(jù)輸引腳。SW_RX:數(shù)據(jù)接收引腳,只于單線和智能卡模式,屬于內(nèi)部引腳,沒有具體外部引腳。nRTS:請求以發(fā)送(Request To Send),n 表低電平有效。如果使能 RTS 流控制,當(dāng)USART接收器準(zhǔn)備好接收新數(shù)據(jù)時就會將nRTS 變成低電平;當(dāng)接收寄存器已滿時, nRTS 將被設(shè)置為電平。該引腳只適于硬件流控制。nCTS:清除以發(fā)送(Clear To Send),n 表低電平有效。

5、如果使能 CTS 流控制,發(fā)送器在發(fā)送下幀數(shù)據(jù)之前會檢測 nCTS 引腳,如果為低電平,表可以發(fā)送數(shù)據(jù),如果為電平則在發(fā)送完當(dāng)前數(shù)據(jù)幀之后停發(fā)送。該引腳只適于硬件流控制。SCLK:發(fā)送器時鐘輸出引腳。這個引腳僅適于同步模式。USART1最頻率為 72MHz,其他四個最頻率為 36MHz。UART 只是異步傳輸功能,所以沒有 SCLK、nCTS 和 nRTS 功能引腳2.數(shù)據(jù)寄存器USART 數(shù)據(jù)寄存器(USART_DR)只有低 9 位有效,并且第 9 位數(shù)據(jù)是否有效要取決于USART 控制寄存器 1(USART_CR1)的 M 位設(shè)置,當(dāng) M 位為 0 時表 8 位數(shù)據(jù)字長,當(dāng) M位為 1 表

6、 9 位數(shù)據(jù)字長,我們般使 8 位數(shù)據(jù)字長。USART_DR 包含了已發(fā)送的數(shù)據(jù)或者接收到的數(shù)據(jù)。USART_DR實際是包含了兩個寄存器,個專門于發(fā)送的可寫 TDR,個專門于接收的可讀 RDR。當(dāng)進發(fā)送操作時,往USART_DR 寫數(shù)據(jù)會動存儲在 TDR 內(nèi);當(dāng)進讀取操作時,向 USART_DR 讀取數(shù)據(jù)會動提取 RDR 數(shù)據(jù)。TDR 和 RDR 都是介于系統(tǒng)總線和移位寄存器之間。串通信是個位個位傳輸?shù)模l(fā)送時把 TDR 內(nèi)容轉(zhuǎn)移到發(fā)送移位寄存器,然后把移位寄存器數(shù)據(jù)每位發(fā)送出去,接收時把接收到的每位順序保存在接收移位寄存器內(nèi)然后才轉(zhuǎn)移到 RDR。USART_DR寄存器包含了個內(nèi)部總線和發(fā)送移

7、位寄存器之間的緩沖器。3.控制器USART 有專門控制發(fā)送的發(fā)送器、控制接收的接收器,還有喚醒單元、中斷控制等等。使 USART 之前需要向USART_CR1 寄存器的 UE 位置 1 使能 USART,UE 位來開啟供給給串的時鐘。發(fā)送或者接收數(shù)據(jù)字長可選 8 位或 9 位,由 USART_CR1 的 M 位控制。發(fā)送器(搭配冊發(fā)送器篇起看 效果更佳)當(dāng) USART_CR1 寄存器的發(fā)送使能位 TE 置 1 時,啟動數(shù)據(jù)發(fā)送,發(fā)送移位寄存器的數(shù)據(jù)會在 TX 引腳輸出,低位在前,位在后。如果是同步模式 SCLK 也輸出時鐘信號。1位,否則將破壞TX腳上的數(shù)據(jù),因為波特率計數(shù)器停計數(shù)。 正在傳輸

8、的當(dāng)前數(shù)據(jù)將丟失。2TE位被激活后將發(fā)送個空閑幀。個字符幀發(fā)送需要三個部分:起始位+數(shù)據(jù)幀+ 停位。起始位是個位周期的低電平,位周期就是每位占的時間;數(shù)據(jù)幀就是我們要發(fā)送的 8 位或 9 位數(shù)據(jù),數(shù)據(jù)是從最低位開始傳輸?shù)?;停位是定時間周期的電平。停位時間長短是可以通過 USART 控制寄存器 2(USART_CR2)的 STOP1:0 位控制, 可選 0.5 個、1 個、1.5 個和 2 個停位。停位位數(shù)的默認(rèn)值可于常規(guī)USART 模式、單線模式以及調(diào)制解調(diào)器模式。0.5 個停位 在智能卡模式下接收數(shù)據(jù)時使。1.5個停位 在智能卡模式下發(fā)送和接收數(shù)據(jù)時使。當(dāng)發(fā)送使能位 TE 置 1 之后,發(fā)送

9、器開始會先發(fā)送個空閑幀(個數(shù)據(jù)幀長度的電平),接下來就可以往 USART_DR 寄存器寫要發(fā)送的數(shù)據(jù)。在寫最后個數(shù)據(jù)后,需要等待 USART 狀態(tài)寄存器(USART_SR) 的 TC 位為 1,表數(shù)據(jù)傳輸完成,如果USART_CR1 寄存器的TCIE 位置 1,將產(chǎn)中斷。接收器如果將 USART_CR1 寄存器的RE 位置 1,使能 USART 接收,使得接收器在 RX 線開始搜索起始位。在確定到起始位后就根據(jù) RX 線電平狀態(tài)把數(shù)據(jù)存放在接收移位寄存器內(nèi)。接收完成后就把接收移位寄存器數(shù)據(jù)移到 RDR 內(nèi),并把 SART_SR 寄存器的 RXNE 位置 ,同時如果USART_CR1 寄存器的R

10、XNEIE 置 1 的話可以產(chǎn)中斷。4.數(shù)波特率成接收器和發(fā)送器的波特率在USARTDIV的整數(shù)和數(shù)寄存器中的值應(yīng)設(shè)置成相同。其中,f PLCK 為 USART 時鐘, USARTDIV 是個存放在波特率寄存器(USART_BRR)的 個 符號定點數(shù)。 其中 DIV_Mantissa11:0 位 定義 USARTDIV 的 整數(shù) 部分 ,DIV_Fraction3:0位定義 USARTDIV 的數(shù)部分。假設(shè)所需波特率為115200 ,當(dāng)前USART時鐘為72MHz ,則USARTDIV=72000000/(115200*16)=39.0625 。USART_BRR寄存器使12 位15:4 存放

11、整數(shù)部分,低4 位3:0 存放數(shù)部分,數(shù)部分每位對應(yīng) 1/2的4次=0.0625(0.625*2的4次=1) 。因此,整數(shù)39 對應(yīng)16 進制為0 x27 ,左移4 位為0 x270 ,數(shù)0.0625 ,對應(yīng)0 x1 ,USART_BRR=0 x271 即可。只有USART1的波特率計算中的能取最系統(tǒng)時鐘72MHz,其它的USART/UART只能取36MHz 。波特率的常值有 2400、9600、19200、115200。數(shù)x16就是寄存器的值5.校驗控制STM32F103 系列控制器 USART 持奇偶校驗。當(dāng)使校驗位時,串傳輸?shù)拈L度將是 8 位的數(shù)據(jù)幀加上 1 位的校驗位總共 9 位,此時

12、 USART_CR1 寄存器的 M 位需要設(shè)置為1 ,即 9 數(shù)據(jù)位。將 USART_CR1 寄存器的 PCE 位置 1 就可以啟動奇偶校驗控制,奇偶校驗由硬件動完成。啟動了奇偶校驗控制之后,在發(fā)送數(shù)據(jù)幀時會動添加校驗位,接收數(shù)據(jù)時動驗證校驗位。接收數(shù)據(jù)時如果出現(xiàn)奇偶校驗位驗證失敗,會見 USART_SR 寄存器的PE 位置 1,并可以產(chǎn)奇偶校驗中斷。使能了奇偶校驗控制后,每個字符幀的格式將變成:起始位+數(shù)據(jù)幀+ 校驗位+ 停位。6.中斷控制固件庫結(jié)構(gòu)體涉及件stm32f10 x_usart.h,stm32f10 x_usart.c,stm32f10 x.h typedef struct/狀態(tài)

13、寄存器/1/2/3uint16_t RESERVED5; /5_IO uint16_t GTPR; /保護時間和預(yù)分頻寄存器uint16_t RESERVED6; /6 USART_TypeDef; 1 typedef struct / 停位/ 校驗位6 uint16_t USART_Mode;/ USART 模式7 uint16_t USART_HardwareFlowControl; / 硬件流控制8 USART_InitTypeDef;1) USART_BaudRate:波特率設(shè)置。般設(shè)置為 2400、9600 、19200 、115200 。標(biāo)準(zhǔn)庫函數(shù)會根據(jù)設(shè)定值計算得到 USARTD

14、IV 值,從設(shè)置 USART_BRR 寄存器值。2) USART_WordLength:數(shù)據(jù)幀字長,可選 8 位或 9 位。它設(shè)定 USART_CR1 寄存器的 M 位的值。如果沒有使能奇偶校驗控制,般使 8 數(shù)據(jù)位;如果使能了奇偶校驗則般設(shè)置為 9 數(shù)據(jù)位。3) USART_StopBits:停位設(shè)置,可選 0.5 個、1 個、1.5 個和 2 個停位,它設(shè)定USART_CR2 寄存器的 STOP1:0 位的值,般我們選擇 1 個停位。4) USART_Parity : 奇 偶 校 驗 控 制 選 擇 , 可 選 USART_Parity_No( 校驗 ) 、USART_Parity_Eve

15、n( 偶校驗 ) 以 及 USART_Parity_Odd( 奇 校 驗 ) , 它 設(shè) 定USART_CR1 寄存器的 PCE 位和 PS 位的值。5) USART_Mode:USART 模式選擇,有 USART_Mode_Rx 和 USART_Mode_Tx,允許使邏輯或運算選擇兩個,它設(shè)定 USART_CR1 寄存器的 RE 位和 TE 位。6) USART_HardwareFlowControl:硬件流控制選擇,只有在硬件流控制模式才有效,可選有使能 RTS、使能 CTS、同時使能 RTS 和 CTS、不使能硬件流。 5 uint16_t USART_LastBit; / 最尾位時鐘脈

16、沖6 USART_ClockInitTypeDef;1. USART_Clock:同步模式下 SCLK 引腳上時鐘輸出使能控制,可選禁時鐘輸出(USART_Clock_Disable)或開啟時鐘輸出(USART_Clock_Enable);如果使同步模式發(fā)送,般都需要開啟時鐘。它設(shè)定 USART_CR2 寄存器的 CLKEN 位的值。2. USART_CPOL:同步模式下 SCLK 引腳上輸出時鐘極性設(shè)置,可設(shè)置在空閑時SCLK 引腳為低電平(USART_CPOL_Low)或電平(USART_CPOL_High)。它設(shè)定 USART_CR2 寄存器的 CPOL 位的值。3. USART_CPHA:同步模式下 SCLK 引腳上輸出時鐘相位設(shè)置,可設(shè)置在時鐘第個變化沿捕獲

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論