加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 串口硬件原理
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-串口通訊編程示例之串口硬件原理

18小時前
64
閱讀需 5 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

通用異步收發(fā)器(通常稱為串口)是嵌入式設(shè)備中常用的通訊接口。它具有連接線少,通訊簡單的特點(diǎn),得以廣泛使用。串口將數(shù)據(jù)通過串列通訊進(jìn)行傳輸,它的通訊速度、報文格式等參數(shù)都是可以配置的。

UART是通用異步收發(fā)器的英文縮寫(Universal Asynchronous Receiver/Transmitter),它包括RS232、RS485、RS422、TTL等接口標(biāo)準(zhǔn)規(guī)范和總線標(biāo)準(zhǔn)規(guī)范,它規(guī)定了通信接口的電氣特性、傳輸速率、連接特性和接口的機(jī)械特性等內(nèi)容。這些其實(shí)是屬于通信網(wǎng)絡(luò)中的物理層(Physical Layer)的概念,而對于我們本節(jié)要介紹的應(yīng)用層來說,將它們統(tǒng)一作為UART處理。

Linux操作系統(tǒng)從一開始就對串行口提供了很好的支持,本文就Linux下的串行口通訊編程進(jìn)行簡單的介紹,如果要非常深入了解,建議看看本文所參考的《Serial Programming Guide for POSIX Operating Systems》。

本次測試以ELF?1開發(fā)板上P6位置的485接口為例。

串口硬件原理

詳細(xì)的串口硬件原理參考《05-0?PDF原理圖》。

引腳說明

串口

設(shè)備節(jié)點(diǎn)

接口

板子絲印

UART2

ttymxc1

RS485_1

A1 B1

UART3

ttymxc2

RS485_2

A2 B2

對于RS485測試,使用RS485_1和RS485_2進(jìn)行互測,硬件連接方式:A1-A2和B1-B2。

重要參數(shù)

波特率

串口通信最重要的是波特率,它實(shí)現(xiàn)了通信雙方的時序同步。

波特(Baud)即調(diào)制速率,指的是有效數(shù)據(jù)訊號調(diào)制載波的速率,即單位時間內(nèi)載波調(diào)制狀態(tài)變化的次數(shù)。

波特率表示每秒鐘傳送的碼元符號的個數(shù),它是對符號傳輸速率的一種度量,它用單位時間內(nèi)載波調(diào)制狀態(tài)改變的次數(shù)來表示,1波特即指每秒傳輸1個符號。常用的波特率為:115200、9600。

報文格式

串口的報文數(shù)據(jù)由:起始位(1bit)+數(shù)據(jù)位(5~8bit)+奇偶校驗(yàn)位(1bit)+停止位(1~1.5bit)組成。

起始位

在發(fā)送有效數(shù)據(jù)前,無需配置,會自動產(chǎn)生1bit 邏輯“0”的低電平的起始位,表示串口數(shù)據(jù)傳輸開始,之后開始發(fā)送有效數(shù)據(jù)。

數(shù)據(jù)位

數(shù)據(jù)位,決定了通信過程中傳輸?shù)挠行?shù)據(jù)位數(shù),數(shù)據(jù)位通常有5、6、7 、8 bit,根據(jù)需要進(jìn)行相應(yīng)的配置,這里選擇8位字長。還需要注意的是有效數(shù)據(jù)在報文中的存放順序是LSB還是MSB。

奇偶校驗(yàn)位

奇偶校驗(yàn)位,因?yàn)樵谕ㄐ胚^程中易受到外部干擾而導(dǎo)致數(shù)據(jù)出現(xiàn)偏差,所以在有效數(shù)據(jù)之后增加了校驗(yàn)位來解決這個問題,校驗(yàn)方式需要配置,校驗(yàn)方式有奇校驗(yàn)、偶校驗(yàn)、0校驗(yàn)和1校驗(yàn):

奇校驗(yàn)要求有效數(shù)據(jù)和校驗(yàn)位中“1”的個數(shù)為奇數(shù);

偶校驗(yàn)則要求有效數(shù)據(jù)和校驗(yàn)位中“1”的個數(shù)為偶數(shù);

0校驗(yàn)位則是校驗(yàn)位始終為0,在收到報文后,檢測校驗(yàn)位是否為0;

1校驗(yàn)則是校驗(yàn)位始終為1,在收到報文后,檢測校驗(yàn)位是否為1;

0校驗(yàn)和1校驗(yàn)過于簡陋,不建議使用,這里選擇不使用奇偶校驗(yàn)。

停止位

停止位,停止位是一幀數(shù)據(jù)結(jié)束的標(biāo)志,可以是1bit、1.5bit或者2bit邏輯“1” 高電平,需要根據(jù)自己需求配置,每一個設(shè)備都有自己的時鐘,在傳輸過程中可能出現(xiàn)了小小的不同步,停止位不僅僅表示傳輸?shù)慕Y(jié)束,并且提供了校正時鐘同步的機(jī)會。這里選擇1bit停止位。

空閑位

空閑位不算是串口報文內(nèi)的數(shù)據(jù), 它是發(fā)送完一組報文后,總線會自動將電平拉高,產(chǎn)生1bit邏輯“1”的空閑位。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜