精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

串口通訊(Serial Communication) 簡介1

jf_78858299 ? 來源:匯極星科技 ? 作者:匯極星科技 ? 2023-04-23 11:25 ? 次閱讀

串口通訊協議簡介

串口通訊 (Serial Communication) 是一種設備間極為常用的串行通訊方式,目前多存在于工控機及部分通信設備中。

對于通訊協議,以分層的方式來理解,可以把它分為物理層和協議層。

物理層規定通訊系統中具有機械電子功能部分的特性,確保原始數據在物理媒體的傳輸。

協議層主要規定通訊邏輯,統一收發雙方的數據打包、解包標準。簡單來說物理層規定我們用嘴巴還是用肢體來交流,協議層則規定我們用中文還是英文來交流。

串口通訊的物理層

串口通訊的物理層有很多標準及變種,串口通訊的物理層的主要標準是RS-232標準,其規定了信號的用途、通訊接口及信號的電平標準,其通訊結構如下:

圖片

在上面的通訊方式中,兩個通訊設備的“DB9接口”之間通過串口信號線建立起連接,串口信號線中使用“RS-232標準”傳輸數據信號。由于RS-232電平標準的信號不能直接被控制器直接識別,所以這些信號會經過一個“電平轉換芯片”轉換成控制器能識別的“TTL 標準”的電平信號,才能實現通訊。

1、信號的電平標準

在設備內部信號是以TTL電平標準傳輸的,設備之間是通過RS-232電平標準傳輸的,而且TTL電平需要經過電平轉換芯片才能轉化為RS-232電平,RS-232電平轉TTL電平也是如此。如圖是TTL電平標準與RS-232電平標準。

電子電路中常使用 TTL 的電平標準,理想狀態下,使用 5V 表示二進制邏輯 1, 使用 0V 表示邏輯 0;

為了增加串口通訊的遠距離傳輸及抗干擾能力,所以RS-232信號線,理想狀態下,使用-15V 表示邏輯 1, +15V 表示邏輯 0。

2、RS-232 信號線

在最初的應用中,RS-232 串口標準常用于計算機、路由與調制調解器 (MODEN,俗稱“貓”) 之間的通訊,在這種通訊系統中,設備被分為數據終端設備 DTE(計算機、路由) 和數據通訊設備DCE(調制調解器)。在舊式的臺式計算機中一般會有 RS-232 標準的 COM 口 (也稱 DB9 接口),下圖就是電腦主板上的 COM 口及串口線 。

圖片

圖片

其中接線口以針式引出信號線的稱為公頭,以孔式引出信號線的稱為母頭。在計算機中一般引出公頭接口,而在調制調解器設備中引出的一般為母頭,使用上圖中的串口線即可把它與計算機連接起來。通訊時,串口線中傳輸的信號就是使用前面講解的 RS-232 標準調制的。

DB9 接口中的公頭及母頭的各個引腳的標準信號線接法如下圖。

圖片

圖片

上表中的是計算機端的 DB9 公頭標準接法,由于兩個通訊設備之間的收發信號 (RXD 與 TXD) 應交叉相連,所以調制調解器端的 DB9 母頭的收發信號接法一般與公頭的相反。

圖片

串口線中的 RTS、CTS、DSR、DTR 及 DCD 信號,使用邏輯 1 表示信號有效,邏輯 0 表示信號無效。

例如,當計算機端控制 DTR 信號線表示為邏輯 1 時,它是為了告知遠端的調制調解器,本機已準備好接收數據,0 則表示還沒準備就緒。

在目前的其它工業控制使用的串口通訊中,一般只使用 RXD、TXD 以及 GND 三條信號線,直接傳輸數據信號,而 RTS、CTS、DSR、DTR 及 DCD 信號都被裁剪掉了。

串口通訊的協議層

1、數據包

串口通訊的數據包由發送設備通過自身的 TXD 接口傳輸到接收設備的 RXD 接口。

在串口通訊的協議層中,規定了數據包的內容,它由啟始位、主體數據、校驗位以及停止位組成,通訊雙方的數據包格式要約定一致才能正常收發數據。

圖片

2、波特率

由于異步通信中沒有時鐘信號,所以接收雙方要約定好波特率,即每秒傳輸的碼元個數,以便對信號進行解碼,常見的波特率有4800、9600、115200等。STM32中波特率的設置通過串口初始化結構體來實現。

3、起始和停止信號

數據包的首尾分別是起始位和停止位,數據包的起始信號由一個邏輯0的數據位表示,停止位信號可由0.5、1、1.5、2個邏輯1的數據位表示,雙方需約定一致。STM32中起始和停止信號的設置也是通過串口初始化結構體來實現。

4、有效數據

在數據包的起始位之后緊接著的就是要傳輸的主體數據內容,也稱為有效數據,有效數據的長度常被約定為 5、6、7 或 8 位長。

5、數據校驗

在有效數據之后,有一個可選的數據校驗位。由于數據通信相對更容易受到外部干擾導致傳輸數據出現偏差,可以在傳輸過程加上校驗位來解決這個問題。

校驗方法有奇校驗 (odd)、偶校驗 (even)、0 校驗 (space)、1 校驗 (mark) 以及無校驗 (noparity)。

奇校驗要求有效數據和校驗位中“1”之和的個數為奇數,比如一個 8 位長的有效數據為:01101001, 此時總共有 4 個“1”,為達到奇校驗效果,校驗位為“1”,最后傳輸的數據將是 8 位的有效數據加上 1 位的校驗位總共 9 位。

偶校驗與奇校驗要求剛好相反,要求幀數據和校驗位中“1”之和的個數為偶數,比如數據幀:11001010, 此時數據幀“1”的個數為 4 個,所以偶校驗位為“0”。

0 校驗是不管有效數據中的內容是什么,校驗位總為“0”。

1 校驗是不管有效數據中的內容是什么,校驗位總為“1”。

STM32 的 USART 簡介

通用同步異步收發器 (Universal Synchronous Asynchronous Receiver and Transmitter) 是一個串行通信設備,可以靈活地與外部設備進行全雙工數據交換。

UART(Universal Asynchronous Receiver and Transmitter)跟 USART不一樣的是:它是在 USART 基礎上裁剪掉了同步通信功能,只有異步通信。簡單區分同步和異步就是看通信時需不需要對外提供時鐘輸出,我們平時用的串口通信基本都是UART。

串行通信一般是以幀格式傳輸數據,即是一幀一幀的傳輸,每幀包含有起始信號、數據信息、停止信號,可能還有校驗信息。USART 就是對這些傳輸參數有具體規定,當然也不是只有唯一一 個參數值,很多參數值都可以自定義設置,只是增強它的兼容性。

USART 滿足外部設備對工業標準 NRZ 異步串行數據格式的要求,并且使用了小數波特率發生器,可以提供多種波特率,使得它的應用更加廣泛。

USART不僅支持同步單向通信和半雙工單線通信,也支持LIN(局部互連網),智能卡協議和IrDA(紅外數據組織)SIR ENDEC規范,以及調制解調器(CTS/RTS)操作。它還允許多處理器通信。USART 支持使用 DMA,可實現高速數據通信。

STM32在硬件設計時一般都會預留一個 USART 通信接口連接電腦,用于在調試程序是可以把一些調試信息“打印”在電腦端的串口調試助手工具上,從而來用串口調試助手來驗證自己的程序是否出了問題。

USART功能概述

接口通過三個引腳與其他設備連接在一起USART框圖。任何USART雙向通信至少需要兩個腳:接收數據輸入(RX)和發送數據輸出(TX)。

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

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

● 總線在發送或接收前應處于空閑狀態

● 一個起始位

● 一個數據字(8或9位),最低有效位在前

● 0.5,1.5,2個的停止位,由此表明數據幀的結束

● 使用分數波特率發生器 —— 12位整數和4位小數的表示方法。

● 一個狀態寄存器(USART_SR)

● 數據寄存器(USART_DR)

● 一個波特率寄存器(USART_BRR),12位的整數和4位小數

● 一個智能卡模式下的保護時間寄存器(USART_GTPR)

USART框圖

圖片

功能引腳

TX:發送數據輸出引腳。

RX:接收數據輸入引腳。

SW_RX:數據接收引腳,只用于單線和智能卡模式,屬于內部引腳,沒有具體外部引腳。

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

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

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

圖片

STM32F103ZET6 系統控制器有三個 USART 和兩個 UART,其中 USART1 和時鐘來源于 APB2 總線時鐘,其最大頻率為 72MHz,其他四個的時鐘來源于 APB1 總線時鐘,其最大頻率為 36MHz。UART 只是異步傳輸功能,所以沒有 SCLK、nCTS 和 nRTS 功能引腳。

與USART有關的寄存器

USART寄存器地址映像

圖片

USART寄存器描述

1、USART狀態控制器(USART_SR)

圖片

圖片

2、數據寄存器(USART_DR)

圖片

圖片

3、波特比率寄存器(USART_BRR)

圖片

4、控制寄存器 1(USART_CR1)

圖片

圖片圖片

5、控制寄存器 2(USART_CR2)

圖片圖片

6、控制寄存器 3(USART_CR3)

圖片

圖片

使用寄存器來配置USART

數據寄存器

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 傳輸,可以實現高速數據傳輸。

控制器

USART 有專門控制發送的發送器、控制接收的接收器,還有喚醒單元、中斷控制等等。使用 USART 之前需要向 USART_CR1 寄存器的 UE 位置 1 使能 USART,UE 位用來開啟供給給串口 的時鐘。發送或者接收數據字長可選 8 位或 9 位,由 USART_CR1 的 M 位控制。

發送器

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

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

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

例如:當選擇 8 位字長,使用 1 個停止位時,具體發送字符時序圖見圖字符發送時序圖 。

圖片

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

在發送數據時,編程的時候有幾個比較重要的標志位我們來總結下。

圖片

接收器

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

在接收數據時,編程的時候有幾個比較重要的標志位我們來總結下。

圖片

USARTDIV的計算

波特率指數據信號對載波的調制速率,它用單位時間內載波調制狀態改變次數來表示,單位為比特。比特率指單位時間內傳輸的比特數,單位 bit/s(bps)。對于 USART 波特率與比特率相等,所以可以將波特率和比特率作為同一個概念。波特率越大,傳輸速率越快。 USART 的發送器和接收器需要使用相同的波特率。

計算公式如下:

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

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

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

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

我們知道 USART1 使用 APB2 總線時鐘,最高可達 72MHz,其他 USART 的最高頻率為 36MHz。

我們選取 USART1 作為實例講解,即fPLCK=72MHz。為得到 115200bps 的波特率,此時:

115200=72000000/16*USARTDIV

解得USARTDIV=39.0625,可算得 DIV_Fraction=0.0625*16=1=0x01,DIV_Mantissa=39=0x27,即應該設置 USART_BRR 的值為 0x271。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 物理層
    +關注

    關注

    1

    文章

    148

    瀏覽量

    34288
  • 串口通訊
    +關注

    關注

    1

    文章

    258

    瀏覽量

    24857
  • 串行通訊
    +關注

    關注

    2

    文章

    77

    瀏覽量

    16356
收藏 人收藏

    評論

    相關推薦

    串口通訊是什么

    串口通訊目錄物理層協議層USART簡介代碼講解串口通訊(Serial
    發表于 08-05 06:47

    串口通訊協議簡介

    1 串口通訊協議簡介串口通訊(Serial
    發表于 08-12 06:30

    串口通訊簡介

    串口通訊簡介串口通訊(Serial Communicati
    發表于 11-30 06:56

    串口通訊基本知識簡介

    基本知識串口通訊 (Serial Communication)串口中斷其實也是依靠判斷寄存器的狀態進行中斷服務的通信的速率Bitrate—比
    發表于 12-08 08:30

    串口通信Serial簡介

    簡介按一次按鈕在串口監視器輸出當前狀態以及一共按下按鈕多少次我現在就缺一個 默認單刀雙擲按鈕。。按下是A狀態,不安默認就是B狀態代碼void setup() {//開啟串口通信,波特率9600
    發表于 01-11 06:08

    串口通訊協議與RS-232標準簡介

    文章目錄一、串口通訊協議1.簡介2.物理層(1)RS-232 標準一、串口
    發表于 02-15 06:03

    串口通訊串口通信協議簡介

    目錄一、串口二、STM32系統給上位機(win10)連續發送“hello windows!”1、接線:2、代碼實現3、燒錄4、串口調試一、串口串口
    發表于 02-15 07:21

    Serial Communication (COM) Dev

    the software to configure a ZigBee ZIC2410 for a Serial Communication application. In this application, when the device receives the da
    發表于 11-04 14:15 ?4次下載

    什么是串口通訊/同軸電纜

    什么是串口通訊/同軸電纜 串口通訊    Serial communic
    發表于 03-26 09:21 ?2815次閱讀

    matlab中的串口軟件serial_1

    電子發燒友網站提供《matlab中的串口軟件serial_1.zip》資料免費下載
    發表于 07-07 16:32 ?1次下載

    Proteus在MCS&ARM中的應用之Serial_Communication

    【好程序系列】Proteus在MCS&ARM中的應用之Serial Communication
    發表于 01-20 15:03 ?4次下載

    STM32的串口通訊協議

    本文主要講解串口協議和RS-232標準,以及RS232電平與TTL電平的區別;介紹"USB/TTL轉232"模塊(以CH340芯片模塊為例)的工作原理。一、串口協議1.1 串口通信協議簡介
    發表于 12-24 18:37 ?8次下載
    STM32的<b class='flag-5'>串口</b><b class='flag-5'>通訊</b>協議

    串口通訊(Serial Communication) 簡介2

    串口通訊 (Serial Communication) 是一種設備間極為常用的串行通訊方式,目前多存在于工控機及部分通信設備中。
    的頭像 發表于 04-23 11:29 ?1095次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>通訊</b>(<b class='flag-5'>Serial</b> <b class='flag-5'>Communication</b>) <b class='flag-5'>簡介</b>2

    串口通訊(Serial Communication) 簡介3

    串口通訊 (Serial Communication) 是一種設備間極為常用的串行通訊方式,目前多存在于工控機及部分通信設備中。
    的頭像 發表于 04-23 11:30 ?2372次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>通訊</b>(<b class='flag-5'>Serial</b> <b class='flag-5'>Communication</b>) <b class='flag-5'>簡介</b>3

    串口通訊(Serial Communication) 簡介4

    串口通訊 (Serial Communication) 是一種設備間極為常用的串行通訊方式,目前多存在于工控機及部分通信設備中。
    的頭像 發表于 04-23 11:30 ?1048次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>通訊</b>(<b class='flag-5'>Serial</b> <b class='flag-5'>Communication</b>) <b class='flag-5'>簡介</b>4