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

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

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

UART串口通信協(xié)議詳解

我快閉嘴 ? 來源:全棧芯片工程師 ? 作者:Chiptist ? 2022-09-07 09:47 ? 次閱讀

通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UATR,是一種串行、異步、全雙工的收發(fā)器。全雙工的UART支持同時雙向通信,是嵌入式系統(tǒng)必不可少的debug接口

什么是全雙工?什么是半雙工?

全雙工:同一時刻,兩個設(shè)備都在收發(fā)數(shù)據(jù),比如SPI。注意QSPI是半雙工,因?yàn)?根線只能同時收或者發(fā)。

半雙工:兩設(shè)備間可以收發(fā)數(shù)據(jù),但只能收完再發(fā)或發(fā)完再收。

單工:任何時刻只能進(jìn)行一個方向的通訊,且固定一方為發(fā)送設(shè)備,一方為接收設(shè)備。

串口通信協(xié)議

dfcde42c-2de8-11ed-ba43-dac502259ad0.png

空閑位:不通信時,TX & RX是邏輯“1”狀態(tài),表示當(dāng)前線路無數(shù)據(jù)傳輸。

起始位:發(fā)送“0”,表示傳輸開始。

數(shù)據(jù)位:起始位之后,數(shù)據(jù)位的個數(shù)可以是5、6、7、8等,一般是8bit,采用ASCII碼。從最低位開始傳送,根據(jù)波特率在數(shù)據(jù)bit穩(wěn)定的中間位置采樣。

奇偶校驗(yàn)位:數(shù)據(jù)位加上這一位后,使得“1”的位數(shù)為偶數(shù),則為偶校驗(yàn),使得“1”的位數(shù)為奇數(shù)則為奇校驗(yàn),以次來校驗(yàn)數(shù)據(jù)傳送的正確性。

比如一個 8 位長的有效數(shù)據(jù)為:10100101,此時總共有 4 個“ 1”,

為達(dá)到奇校驗(yàn)效果,校驗(yàn)位應(yīng)為“ 1”,即有效數(shù)據(jù)和校驗(yàn)位中“ 1”的個數(shù)為奇數(shù)。

為達(dá)到偶校驗(yàn)效果,校驗(yàn)位應(yīng)為“ 0”,即有效數(shù)據(jù)和校驗(yàn)位中“ 1”的個數(shù)為偶數(shù)。

注意,UART校驗(yàn)方法有:奇校驗(yàn)(odd)、偶校驗(yàn)(even)、0校驗(yàn)(space)、0校驗(yàn)(mark)、無校驗(yàn)(noparity),為了提高實(shí)際帶寬,一般可省去校驗(yàn)位,即選擇無校驗(yàn),思考下為什么?

0 校驗(yàn)是不管有效數(shù)據(jù)是什么,校驗(yàn)位固定為“ 0”。1 校驗(yàn)是校驗(yàn)位固定為“ 1”。

無校驗(yàn)就是數(shù)據(jù)包中不包含校驗(yàn)位。

停止位:一個字符數(shù)據(jù)傳輸?shù)慕Y(jié)束標(biāo)志,可以是1位、1.5位、2位的高電平。停止位不僅表示傳輸?shù)慕Y(jié)束,并且可提供校正時鐘同步。停止位的位數(shù)越多,時鐘容忍程度越大,但有效帶寬就越小。

波特率

數(shù)據(jù)傳輸速率使用波特率來表示。單位bps(bits per second),常見的波特率9600bps、19200bps、115200bps等,如果串口波特率設(shè)置為9600bps,那么傳輸1bit數(shù)據(jù)需要的時間是1/9600≈104.2us。

帶上校驗(yàn)位,傳送一個字符數(shù)據(jù)實(shí)際是11個比特(1bit開始位、8bit數(shù)據(jù)位、1bit校驗(yàn)位、1bit停止位),有效的傳輸速率實(shí)際為9600*8/11= 6982bps。

不帶校驗(yàn)位,傳送一個字符數(shù)據(jù)實(shí)際是10個比特(1bit開始位、8bit數(shù)據(jù)位、1bit停止位),有效的傳輸速率實(shí)際為9600*8/10=7680bps。

這就是為何不傳校驗(yàn)位,可以提高一點(diǎn)帶寬,也就是所謂的開銷。

以小編設(shè)計的RISC-V SoC為例,仿真UART:

e0205e78-2de8-11ed-ba43-dac502259ad0.png

寫個簡單的測試程序:

e04bb5e6-2de8-11ed-ba43-dac502259ad0.png

配置波特率115200bps:

e0726074-2de8-11ed-ba43-dac502259ad0.png

觀察到1bit的傳輸時間為8.8us,1s/115200bps=8.68us, 基本符合預(yù)期。

e09dc796-2de8-11ed-ba43-dac502259ad0.png

仿真打印效果:

e0b71958-2de8-11ed-ba43-dac502259ad0.png

審核編輯:湯梓紅

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

    關(guān)注

    10

    文章

    3337

    瀏覽量

    105529
  • 通信協(xié)議
    +關(guān)注

    關(guān)注

    28

    文章

    810

    瀏覽量

    40119
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1199

    瀏覽量

    100823

原文標(biāo)題:UART通信協(xié)議及SoC仿真

文章出處:【微信號:全棧芯片工程師,微信公眾號:全棧芯片工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    通用異步收發(fā)傳輸器UART串口通信協(xié)議有哪些特性呢

    什么是通用異步收發(fā)傳輸器UART呢?通用異步收發(fā)傳輸器UART串口通信協(xié)議有哪些特性呢?
    發(fā)表于 11-01 07:03

    UART串口通信協(xié)議的相關(guān)資料分享

    #今天也是咸魚的一天~UART是一個很基礎(chǔ)的串口通信協(xié)議,有人打趣說只要有單片機(jī)的地方,就一定有uart。這話不假,不僅很多模塊和單片機(jī)的通信
    發(fā)表于 01-18 09:42

    UART通信協(xié)議的相關(guān)資料推薦

    開發(fā)板來舉例講解(其他STM32系列芯片大多數(shù)都可以按照這些步驟來操作的),如有不足請多多指教。2、UART簡介  嵌入式開發(fā)中,UART串口通信協(xié)議是我們常用的
    發(fā)表于 01-25 06:40

    串口通信協(xié)議的相關(guān)資料分享

    目錄一、串口通信協(xié)議1、UART簡介2、 UART通信協(xié)議(1)起始位(2)數(shù)據(jù)幀(3)奇偶校驗(yàn)位(4)停止位(5)下個起始位(6)波特率二
    發(fā)表于 02-22 07:16

    Modbus通信協(xié)議詳解

    關(guān)于Modbus通信協(xié)議詳解和應(yīng)用分析
    發(fā)表于 10-12 16:54 ?150次下載
    Modbus<b class='flag-5'>通信協(xié)議</b><b class='flag-5'>詳解</b>

    串口通信協(xié)議詳解

    串口是計算機(jī)上一種非常通用設(shè)備通信協(xié)議。大多數(shù)計算機(jī)包含兩個基于RS232的串口串口同時也是儀器儀表設(shè)備通用的
    發(fā)表于 11-09 14:51 ?8622次閱讀

    基于狀態(tài)機(jī)的串口通信協(xié)議的設(shè)計與實(shí)現(xiàn)

    設(shè)計并實(shí)現(xiàn)了一種基于狀態(tài)機(jī)的串口通信協(xié)議,并將此協(xié)議應(yīng)用到稱重儀表的上位機(jī)通信中。本文介紹了串口通信協(xié)議
    發(fā)表于 05-08 15:22 ?169次下載
    基于狀態(tài)機(jī)的<b class='flag-5'>串口</b><b class='flag-5'>通信協(xié)議</b>的設(shè)計與實(shí)現(xiàn)

    PC與單片機(jī)串口通信協(xié)議

    PC與單片機(jī)串口通信協(xié)議
    發(fā)表于 12-26 22:12 ?0次下載

    科爾摩根伺服驅(qū)動器串口通信協(xié)議

    科爾摩根伺服驅(qū)動器串口通信協(xié)議
    發(fā)表于 09-03 09:30 ?24次下載
    科爾摩根伺服驅(qū)動器<b class='flag-5'>串口</b><b class='flag-5'>通信協(xié)議</b>

    基于51單片機(jī)的UART串口通信

    基于51單片機(jī)的UART串口通信詳解。
    發(fā)表于 11-21 10:14 ?6.3w次閱讀
    基于51單片機(jī)的<b class='flag-5'>UART</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    基于STM32之UART串口通信協(xié)議(一)詳解

    開發(fā)板來舉例講解(其他STM32系列芯片大多數(shù)都可以按照這些步驟來操作的),如有不足請多多指教。2、UART簡介  嵌入式開發(fā)中,UART串口通信協(xié)議是我們常用的
    發(fā)表于 11-30 14:36 ?22次下載
    基于STM32之<b class='flag-5'>UART</b><b class='flag-5'>串口</b><b class='flag-5'>通信協(xié)議</b>(一)<b class='flag-5'>詳解</b>

    討論使用UART通信協(xié)議的基本原則

    UART,即通用異步接收器/發(fā)送器,是最常用的設(shè)備間通信協(xié)議之一,正確配置后,UART可以配合許多不同類型的涉及發(fā)送和接收串行數(shù)據(jù)的串行協(xié)議工作。
    的頭像 發(fā)表于 02-01 17:54 ?903次閱讀

    UART串口通信協(xié)議是什么?

    UART (Universal Asynchronous Receiver/Transmitter) 是一種通信接口協(xié)議,用于實(shí)現(xiàn)串口通信。
    的頭像 發(fā)表于 03-19 17:26 ?955次閱讀

    簡單認(rèn)識UART串行通信協(xié)議

    在電子通信領(lǐng)域,UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)是一種非常常見的串行通信協(xié)議。它被廣泛應(yīng)用于各種設(shè)備之間
    的頭像 發(fā)表于 05-27 16:09 ?1400次閱讀

    簡單認(rèn)識UART通信協(xié)議

    UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)通信協(xié)議是一種常見的串行通信協(xié)議,廣泛應(yīng)用于計算機(jī)、嵌入式系統(tǒng)、傳感器、無線
    的頭像 發(fā)表于 07-25 18:07 ?978次閱讀