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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

5、如果使能 CTS 流控制,發(fā)送器在發(fā)送下幀數(shù)據(jù)之前會(huì)檢測(cè) nCTS 引腳,如果為低電平,表可以發(fā)送數(shù)據(jù),如果為電平則在發(fā)送完當(dāng)前數(shù)據(jù)幀之后停發(fā)送。該引腳只適于硬件流控制。SCLK:發(fā)送器時(shí)鐘輸出引腳。這個(gè)引腳僅適于同步模式。USART1最頻率為 72MHz,其他四個(gè)最頻率為 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 時(shí)表 8 位數(shù)據(jù)字長(zhǎng),當(dāng) M位為 1 表

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

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

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

9、器開始會(huì)先發(fā)送個(gè)空閑幀(個(gè)數(shù)據(jù)幀長(zhǎng)度的電平),接下來(lái)就可以往 USART_DR 寄存器寫要發(fā)送的數(shù)據(jù)。在寫最后個(gè)數(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 位置 ,同時(shí)如果USART_CR1 寄存器的R

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

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

12、 USART_CR1 寄存器的 M 位需要設(shè)置為1 ,即 9 數(shù)據(jù)位。將 USART_CR1 寄存器的 PCE 位置 1 就可以啟動(dòng)奇偶校驗(yàn)控制,奇偶校驗(yàn)由硬件動(dòng)完成。啟動(dòng)了奇偶校驗(yàn)控制之后,在發(fā)送數(shù)據(jù)幀時(shí)會(huì)動(dòng)添加校驗(yàn)位,接收數(shù)據(jù)時(shí)動(dòng)驗(yàn)證校驗(yàn)位。接收數(shù)據(jù)時(shí)如果出現(xiàn)奇偶校驗(yàn)位驗(yàn)證失敗,會(huì)見 USART_SR 寄存器的PE 位置 1,并可以產(chǎn)奇偶校驗(yàn)中斷。使能了奇偶校驗(yàn)控制后,每個(gè)字符幀的格式將變成:起始位+數(shù)據(jù)幀+ 校驗(yàn)位+ 停位。6.中斷控制固件庫(kù)結(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; /保護(hù)時(shí)間和預(yù)分頻寄存器uint16_t RESERVED6; /6 USART_TypeDef; 1 typedef struct / 停位/ 校驗(yàn)位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)庫(kù)函數(shù)會(huì)根據(jù)設(shè)定值計(jì)算得到 USARTD

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論