在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

UART是什么?串口工作過程分析

wFVr_Hardware_1 ? 來源:未知 ? 作者:李倩 ? 2018-10-17 15:10 ? 次閱讀

一、UART是什么

UART是通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種異步收發(fā)傳輸器,是設(shè)備間進行異步通信的關(guān)鍵模塊。UART負責處理數(shù)據(jù)總線和串行口之間的串/并、并/串轉(zhuǎn)換,并規(guī)定了幀格式;通信雙方只要采用相同的幀格式和波特率,就能在未共享時鐘信號的情況下,僅用兩根信號線(Rx 和Tx)就可以完成通信過程,因此也稱為異步串行通信。

若加入一個合適的電平轉(zhuǎn)換器,如SP3232E、SP3485,UART 還能用于RS-232、RS-485 通信,或與計算機的端口連接。UART 應(yīng)用非常廣泛,手機工業(yè)控制、PC 等應(yīng)用中都要用到UART。

UART使用的是 異步,串行通信。 串行通信是指利用一條傳輸線將資料一位位地順序傳送。特點是通信線路簡單,利用簡單的線纜就可實現(xiàn)通信,降低成本,適用于遠距離通信,但傳輸速度慢的應(yīng)用場合。 異步通信以一個字符為傳輸單位,通信中兩個字符間的時間間隔多少是不固定的,然而在同一個字符中的兩個相鄰位間的時間間隔是固定的。 數(shù)據(jù)傳送速率用波特率來表示,即每秒鐘傳送的二進制位數(shù)。例如數(shù)據(jù)傳送速率為120字符/秒,而每一個字符為10位(1個起始位,7個數(shù)據(jù)位,1個校驗位,1個結(jié)束位),則其傳送的波特率為10×120=1200字符/秒=1200波特。 數(shù)據(jù)通信格式如下圖:

其中各位的意義如下:起始位:先發(fā)出一個邏輯”0”信號,表示傳輸字符的開始。數(shù)據(jù)位:可以是5~8位邏輯”0”或”1”。如ASCII碼(7位),擴展BCD碼(8位)。小端傳輸校驗位:數(shù)據(jù)位加上這一位后,使得“1”的位數(shù)應(yīng)為偶數(shù)(偶校驗)或奇數(shù)(奇校驗)停止位:它是一個字符數(shù)據(jù)的結(jié)束標志。可以是1位、1.5位、2位的高電平。空閑位:處于邏輯“1”狀態(tài),表示當前線路上沒有資料傳送。 注:異步通信是按字符傳輸?shù)模邮赵O(shè)備在收到起始信號之后只要在一個字符的傳輸時間內(nèi)能和發(fā)送設(shè)備保持同步就能正確接收。下一個字符起始位的到來又使同步重新校準(依靠檢測起始位來實現(xiàn)發(fā)送與接收方的時鐘自同步的)

總結(jié)起來,如果我們要配置串口通信,至少要設(shè)置一下幾個參數(shù):字長(即一次傳輸數(shù)據(jù)的長度)、波特率(即每秒傳輸?shù)臄?shù)據(jù)位數(shù))、奇偶校驗位及停止位。

二、串口工作過程分析

USART是通用同步/異步收發(fā)器

UART是通用異步收發(fā)器

由于常用的是異步模式,所以在此我們都是只需要使用UART。

我們先介紹串口發(fā)送的過程,我們先來看一下串口架構(gòu)圖:

可以看出,串口外設(shè)的架構(gòu)圖乍一看略微復雜,這里我們分開進行分析:

我們直接從發(fā)送(TX)和接收(RX)開始講起。

RX和TX此處不做過多介紹。

根據(jù)下圖紅色箭頭標記可以看出:對于接收來說,它經(jīng)過編解碼模塊,然后直接進入到了接收移位寄存器,接收移位寄存器一位一位的接收數(shù)據(jù),然后再將接收到的數(shù)據(jù)一次性寫到接收數(shù)據(jù)寄存器(RDR)中,這樣,CPU就可以通過讀取接收數(shù)據(jù)寄存器(RDR)來讀到接收的數(shù)據(jù)。

同樣,對于發(fā)送來說,CPU將數(shù)據(jù)寫入到發(fā)送數(shù)據(jù)寄存器(TDR),發(fā)送數(shù)據(jù)寄存器(TDR)將數(shù)據(jù)一次性的發(fā)送給發(fā)送移位寄存器,然后再根據(jù)波特率將數(shù)據(jù)一位一位的移出。如下圖:

我們知道,發(fā)送和接收事先要確定好波特率,那么波特率是怎么配置的呢?我們順著箭頭繼續(xù)往下找:

根據(jù)上圖所示,我們不難看出:波特率是通過發(fā)送控制器和接收控制器分別控制發(fā)送器時鐘和接收器時鐘,然后傳輸?shù)桨l(fā)送移位寄存器和接收移位寄存器中的。

通過上圖我們還可以看出:發(fā)送器時鐘和接收器時鐘來自同一單元。我們現(xiàn)在就來分析一下這兩個時鐘是怎么產(chǎn)生的。

上文中已經(jīng)介紹過,波特率實際上就是每秒傳輸?shù)亩M制位數(shù),通過對時鐘的控制可以改變波特率。我們向波特比率寄存器(即上圖中的USART_BRR)寫入?yún)?shù),修改了串口時鐘的分頻值USARTDIV。

USART_BRR寄存器包括兩個部分:DIV_Mantissa(即USARTDIV的整數(shù)部分)和DIV_Fraction(即USARTDIV的小數(shù)部分)。計算公式為:USARTDIV=DIV_Mantissa+(DIV_Fraction/16)。

波特率計算公式如下:

我們只要知道了USARTDIV的值,就可以知道串口波特率寄存器的值。

舉一個簡單的例子:假設(shè)我們串口1要設(shè)置的波特率為115200,PLCK2的時鐘頻率為72MHz,根據(jù)上面的公式,我們可以得出:

USARTDIV=72000000/(16*115200)=39.0625

由此 我們就可以得到DIV_Fraction=16*0.0625=1=0x01;

DIV_Mantissa=39=0x27。由于USARTDIV是對串口外設(shè)的時鐘源進行分頻,不同的USART掛載的總線并不相同,所以它們的時鐘源fPCLK也不相同。USART1掛載在APB2總線上,其時鐘源為fPCLK2;USART2、3、4、5掛載在APB1上,其時鐘源為fPCLK1。串口的時鐘源經(jīng)過USARTDIV分頻后,分別輸出作為發(fā)送器時鐘及接收器時鐘,來控制發(fā)送和接收的時序。

三、程序分析

首先,我們打開iBox開發(fā)板的例程USART_DEMO,在左側(cè)的工程目錄中找到USER工程文件夾點擊前方的“+”,找到main.c文件并打開。

我們可以看到,在主函數(shù)上面有一個fputc(intch, FILE *f)函數(shù)。

這個函數(shù)的功能是將一個字符寫入到文件中。其參數(shù)包括:Ch要寫入的字符; *f指向FILE結(jié)構(gòu)的指針。

接下來我們來看一下主函數(shù):

上圖中的兩行代碼分別為定義GPIO結(jié)構(gòu)體和定義USART結(jié)構(gòu)體。

上面的函數(shù)是使能APB2總線上的串口時鐘,同時啟動GPIOA端口。

上圖中的代碼是對GPIO端口的配置。其配置方法在第三講中有提及到,我們可以看出其配置的是PA9端口。因為PA9端口同時也是USART1_TX,即串口的發(fā)送數(shù)據(jù)端口。

上圖中的代碼是對PA10端口的配置。因為PA10端口同時也是USART1_RX,即串口的接收數(shù)據(jù)端口。

我們看一下GPIO的工作模式:GPIO_Pin_9的工作模式為復用推挽輸出;GPIO_Pin_10的工作模式為浮空輸入。我們可以在STM32參考手冊中找到GPIO配置中關(guān)于USART的配置,如下表:

我們工作模式為全雙工,所以根據(jù)表格,配置好相應(yīng)的GPIO端口工作模式,分別為復用推挽輸出和浮空輸入。

接下來就是對串口的初始化和配置。如上圖所示。我們逐行分析。

在此之前,我們可以在工程目錄種先找到stm32f10x_usart.h(可以在main.c下面找到,因為我們的main函數(shù)包含了此庫函數(shù)),即USART庫函數(shù)。

我們可以在最下面找到許多函數(shù)聲明。我們可以在用戶手冊種找到這些函數(shù)的描述,大家可以簡單了解一下。

我們繼續(xù)瀏覽stm32f10x_usart.h庫函數(shù),可以找到typedef struct,如下圖(為方便截圖,在此已將注釋隱藏):

我們可以發(fā)現(xiàn) 我們程序種需要配置的USART相關(guān)參數(shù)都在這里有所聲明。不僅如此,繼續(xù)向下翻閱還可以找到所需配置的相關(guān)參數(shù)(由于代碼略多,在此不做截圖,讀者可自己查閱)。

uint32_t USART_BaudRate:該成員設(shè)置了USART傳輸?shù)牟ㄌ芈省?

uint16_t USART_WordLength:提示了在一個幀中傳輸或者接收到的數(shù)據(jù)位數(shù)。可取值為:USART_WoedLength_8b(8位數(shù)據(jù))和USART_WoedLength_9b(9位數(shù)據(jù))。

uint16_t USART_StopBits:在幀尾傳輸?shù)耐V刮弧F涠x為USART_StopBits_0.5(0.5個停止位)、USART_StopBits_1(1個停止位)、USART_StopBits_1.5(1.5個停止位)、USART_StopBits_2(2個停止位)。

uint16_t USART_Parity:奇偶校驗位。其定義為USART_Parity_No(不使用)、USART_Parity_Even(偶模式)、USART_Parity_Odd(奇模式)。

uint16_t USART_Mode:指定了使能或者失能發(fā)送和接收模式。其定義為:USART_Mode_Rx(接收使能)、USART_Mode_Tx(發(fā)送使能)。uint16_t USART_HardwareFlowControl:制定了硬件流控制模式是使能還是失能。其定義為:USART_HardwareFlowControl_RTS(發(fā)送請求RTS使能)、USART_HardwareFlowControl_CTS(清除發(fā)送CTS使能)、USART_HardwareFlowControl_RTS_CTS(RTS和CTS使能)。

USART_Clock、USART_CPOL、USART_CPHA和USART_LastBit在同步模式下才需要配置,在此暫時不做解釋。

了解了這些,對串口的初始化和配置分析就非常容易了。我們回到主函數(shù),觀察串口初始化和配置的幾行代碼:

上圖代碼是將波特率設(shè)置為115200。

上圖代碼定義了數(shù)據(jù)位數(shù)為8位數(shù)據(jù)。

上圖代碼設(shè)定了在幀尾傳輸一個停止位。

上圖代碼設(shè)定了不使用奇偶校驗。

上圖代碼設(shè)定了不使用硬件流控制模式。

上圖代碼定義了發(fā)送和接收模式:使能發(fā)送和使能接收。

上圖種兩行代碼第一行為串口初始化,第二行為使能串口。

最后,我們循環(huán)打印“USART Printf Example: retarget the C library printf function to the USART”。

接下來,我們觀察實驗現(xiàn)象:首先將程序燒錄到iBox中,然后我們使用USB轉(zhuǎn)TTL串口工具將iBox與電腦連接,如下圖所示:

iBox的J12接口從左到右依次為:TX、RX和GND(注意:我們沒有為iBox接電源,iBox需要單獨供電)。

接下來,我們打開串口助手。

如上圖:首先我們需要根據(jù)我們的程序配置串口(不同助手界面可能有所不同)。

設(shè)置好參數(shù)后,我們將程序燒錄到iBox中,觀察串口助手。

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

    關(guān)注

    18

    文章

    6185

    瀏覽量

    137476
  • 傳輸器
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    13187
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1271

    瀏覽量

    103440

原文標題:從原理圖PCB到移植RTOS【細說STM32】【四】UART

文章出處:【微信號:Hardware_10W,微信公眾號:硬件十萬個為什么】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

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

    TDD協(xié)議的工作過程

    TDD協(xié)議的工作過程在TDD協(xié)議工作過程中,接收機要經(jīng)過幾個階段。當正確接收捕獲突發(fā)幀中的4個特字UW后,接收機的LOCK輸出信號有效;當正確接收空閑突發(fā)幀后,接收機的RLOCK輸出信號有效。隨后
    發(fā)表于 07-15 14:42

    POE供電的特性參數(shù)及工作過程

    POE供電的特性參數(shù)POE供電的工作過程瞬態(tài)抑制的要求是什么?POE以太網(wǎng)供電工作過程
    發(fā)表于 01-27 07:24

    DMA工作過程及功能特性

    寫在前面:本文章旨在總結(jié)備份、方便以后查詢,由于是個人總結(jié),如有不對,歡迎指正;另外,內(nèi)容大部分來自網(wǎng)絡(luò)、書籍、和各類手冊,如若侵權(quán)請告知,馬上刪帖致歉。目錄一、DMA介紹二、工作過程三、功能特性四
    發(fā)表于 08-20 06:13

    STM32串口通信的工作過程是怎樣的?

    STM32串口通信的工作過程是怎樣的?
    發(fā)表于 12-06 08:03

    DMA工作過程分析

    )文章目錄【實驗?zāi)康摹俊緦嶒炘怼恳弧MA功能簡介:二、DMA工作過程分析三、DMA庫函數(shù)分析【實驗環(huán)境】硬件設(shè)備:操作系統(tǒng):軟件環(huán)境:【實驗步驟】一、 配置工程環(huán)境二、 完成DMA配置,并開啟時...
    發(fā)表于 12-16 08:04

    STM32 PWM工作過程

    目錄一、STM32 PWM工作過程二、PWM模式1 & PWM模式2三、STM32 PWM工作過程四、PWM輸出庫函數(shù)概述1、PWM輸出庫函數(shù)2、設(shè)置比較值函數(shù)3、使能輸出比較預(yù)裝載:4、使
    發(fā)表于 01-06 08:26

    數(shù)控機床的工作過程

    數(shù)控機床的工作過程 數(shù)控機床的工作原理             圖1 數(shù)控機
    發(fā)表于 05-06 21:52 ?4970次閱讀
    數(shù)控機床的<b class='flag-5'>工作過程</b>

    IPOA的工作過程是怎樣的?

    IPOA的工作過程是怎樣的? 整個系統(tǒng)的工作過程如下:首先是Client端的IPOA初始化過程,即Client加入LIS的過程,由Client端的IPOA高層發(fā)出初
    發(fā)表于 04-07 15:45 ?639次閱讀

    如何通過Multisim仿真分析數(shù)據(jù)選擇器的工作過程

    用Mult isim 仿真軟件進行數(shù)據(jù)選擇器工作過程波形仿真分析, 用虛擬儀器中的字組產(chǎn)生器做實驗中的信號源產(chǎn)生所需的各個數(shù)據(jù)輸入變量信號, 用邏輯分析儀顯示輸入變量信號、輸出函數(shù)信號波形, 可直觀描述數(shù)據(jù)選擇器的
    的頭像 發(fā)表于 10-07 11:19 ?2w次閱讀

    UART串口WiFi模塊的工作原理及應(yīng)用

    隨著物聯(lián)網(wǎng)智能家居應(yīng)用的日漸豐富,越來越多的 WiFi 工程師開始更多的關(guān)注 UART 串口 WiFi 模塊,為讓新手工程師更快的將 UART 串口 WiFi 模塊應(yīng)用于各類智能家居應(yīng)
    發(fā)表于 01-08 08:00 ?23次下載
    <b class='flag-5'>UART</b><b class='flag-5'>串口</b>WiFi模塊的<b class='flag-5'>工作</b>原理及應(yīng)用

    PLC的工作過程說明

    當PLC處于正常運行時,其工作過程包括“輸入采樣”、“程序執(zhí)行”和“輸出刷新”三個階段,如圖所示。
    發(fā)表于 07-13 10:19 ?8717次閱讀
    PLC的<b class='flag-5'>工作過程</b>說明

    西門子的PLC工作過程

    如果我們在程序中寫的是||-MOVW VW0 VW10 .||為i0.0的常開點。那么我們來結(jié)合PLC的工作過程分析下這個程序。
    發(fā)表于 10-28 10:17 ?1309次閱讀

    UART接收的工作過程

    UART 全稱為 Universal Asynchronous Receiver/Transmitter,譯為通用異步收發(fā)傳輸器。它是一種通用串行數(shù)據(jù)總線,將數(shù)據(jù)在串行通信與并行通信之間進行轉(zhuǎn)換,用于異步通信。
    發(fā)表于 05-29 16:20 ?2024次閱讀
    <b class='flag-5'>UART</b>接收的<b class='flag-5'>工作過程</b>

    Zeta拓撲電源原理及工作過程解析

    Zeta拓撲電源原理及工作過程解析
    的頭像 發(fā)表于 11-24 17:18 ?5788次閱讀
    Zeta拓撲電源原理及<b class='flag-5'>工作過程</b>解析

    Cuk 拓撲電源原理及工作過程解析

    Cuk 拓撲電源原理及工作過程解析
    的頭像 發(fā)表于 11-24 17:32 ?1969次閱讀
    Cuk 拓撲電源原理及<b class='flag-5'>工作過程</b>解析
    主站蜘蛛池模板: 免费在线你懂的 | 久操视频在线观看 | 久久久精品免费观看 | 国产成人精品高清在线 | 天天视频在线观看免费 | 久久精品综合网 | 久久综合狠狠综合狠狠 | 欧美黄又粗暴一进一出抽搐 | 久久国产乱子伦精品免 | 国产精品青草久久 | 男女交性永久免费视频播放 | 在线观看黄日本高清视频 | 色多多在线看 | 五月天久久婷婷 | 伊人成年综合网 | 天天色天天干天天 | 在线视频午夜 | 999av视频 | 特级一级毛片免费看 | 午夜欧美精品久久久久久久 | 福利在线看片 | 欧美激情 自拍 | 成人精品视频在线观看播放 | 在线免费看影视网站 | 天天做夜夜操 | 日本高清加勒比 | 免费黄色大片网站 | 222aaa免费| 六月丁香色婷婷 | 午夜视频免费在线 | 日韩xx00 | 在线 你懂| www日本高清| 日本免费一区二区视频 | 超级香蕉97视频在线观看一区 | 免费黄色国产视频 | 国产手机在线国内精品 | 日本媚薬痉挛在线观看免费 | 欧美综合一区二区三区 | 国产a三级三级三级 | 波多野结衣一级特黄毛片 |