異步串行通信協議的設計與實現

2020-12-08 電子產品世界

引言
     在單片機控制系統中,CPU和外部通信主要有兩種方 式:並行通信和串行通信。並行通信,即數據的各位同時傳 送;串行通信,即數據按位次序傳送。串行通信能夠節省傳 輸線,特別是數據位數很多和傳輸距離較遠時,這一優點更 為突出。現在流行的高級語言一般都支持對串口直接操作, 常用的單片機也把串行通訊口作為一個標準接口集成在單片 機內,串行通訊接口的開發具有開發周期短、開發簡單等特 點。目前異步串行通信已廣泛用於微機之間的通信、工業控 制系統中的數據採集與控制、遠程數據的傳送等領域。

1 串口通信的基本原理
在嵌入式系統中,串口是一種重要的數據通信接口, 其本質功能是,在CPU和串行設備間進行編碼轉換。當CPU 通過串行埠發送數據時,字節數據轉換為串行的位串;接 收數據時,串行的位串被轉換為字節數據。應用程式使用串 口進行通信,必須在使用之前向作業系統提出資源申請要求 (打開串口),通信完成後必須釋放資源(關閉串口)。
典型地,串口用於ASCII碼字符的傳輸。通信使用3根線完成:(1)地線;(2)發送數據線;(3)接收數據線。串口通

本文引用地址:http://www.eepw.com.cn/article/201702/344503.htm

圖1  通信命令格式  

圖2  通信時序
信最重要的參數是波特率、數據位、停止位和奇偶校驗。對於兩個互相通信的埠,這些參數必須一致:波特率衡量通 信速度,表示每秒鐘傳送的bit的個數;數據位衡量通信中 實際數據位寬,標準值是5、7和8位。如何設置取決於具體 需求;停止位用於表示單個包的最後一位,典型值為1,1.5 和2位,停止位不僅僅表示傳輸的結束,還能提供計算機校 正時鐘同步的機會;奇偶校驗位是串口通信中一種簡單的檢 錯方式,有四種檢錯方式——偶、奇、高和低,也可以沒有 校驗位。

2 異步串行通信協議的設計
通信協議是通信雙方共同遵守的約定,對同步方式、 傳送速度、傳送步驟及檢糾錯方式定義等問題做出統一規 定。
在 控 制 系 統 中 , 單 片 機 間 通 信 一 般 採 用 異 步 串 行 通 信,傳統的異步串行通信協議一般採用如圖1所示的命令格 式,命令消息括幀頭(命令碼)、 數 據 場 、 校 驗 場 ;響應消息為ACK信號 ( A C K 取 不 同 的 值 , 例 如 : 正 確 響應 ACK = 0x55; 錯 誤 響 應 A C K =0 x A A ) 。 由 於 串 口 通信存在很多不可靠因素,例如由

表1  通信命令
電磁幹擾造成幀字節丟失、 傳輸誤碼, 以及因主從單片機處理繁忙而造成響應延遲等。傳統的通信協議難以克服由單片機處理
繁忙造成的響應延遲現象。如圖2所示,當主晶片發送[命令1]後,當超過響應等待時間而沒有得到ACK時,主晶片發送[命令2],在下一個響應等待時間內將收到兩次[ACK],這種


圖4  響應處理程序  

圖5  整體軟體設計
現象將導致主晶片做出錯誤判斷,調用錯誤的程序分支,嚴 重影響系統的正常運行。因此,本文在通信協議的設計中, 採用響應消息加權的方法,提高了通信的可靠性,保證系統 正常運行。
本 文 設 計 的 響 應 消 息 加 權 式 通 信 協 議 , 實 現 方 式 如 下:通信協議採用如圖3所示的格式,命令消息和響應消息 採用相同的幀格式,包括幀頭(命令碼)、數據場、校驗場; 其中響應消息幀頭 = 命令消息幀頭的加權(RPS = CMD | 0x80 或RPS = CMD | 0xC0),主控晶片通過對響應消息的處理, 識別出響應的類型。通信協議各數據場的定義如表1所示, 本協議由nByte(n是用戶自定義的任意正整數)構成,D1[7:6]為通信類型,D1[5:0]為指令碼,D2~Dn-1為數據場,Dn為校驗場。
程序處理過程如圖4所示,當接收到響應時,響應處理 程序對響應消息幀頭進行0xC0位與運算,還原並判斷響應 類型;同時對幀頭進行0x3F位與運算,還原出當前響應對應 的命令消息,然後調用相應的應用程式執行。例如,主芯

圖6  硬體原理框圖
片發送命令消息,命令消息幀頭D1=0x02,從晶片正常接收 並進行加權響應,響應消息幀頭D1=0x82,主晶片再經過位 與運算判斷響應類型並還原出與之相對應的命令消息幀頭
0x02。然後調用相應的程序執行,完成一次通信周期。

3 程序設計
在設計通信程序時充分考慮了主從單片機在通信過程 中的不確定因素,因此通信協議採用加權響應式通信協議, 克服主從單片機處理繁忙而造成的響應延遲;對於通信過程 中因幹擾而導致通信數據丟失、傳輸誤碼等現象,可以在程 序設計時採用超時定時、計數重發等方法,保證通信的準確 性。軟體程序設計中,主控晶片採用晶片內部的串口2,通信波特率為9600 bit /s,8 位數據,1位停止位。軟體編寫嚴格按照異步通信的時序進行,其響應處理程序流程如圖4。

4 系統的實現及應用
本協議的設計初衷是用於一款內嵌DTMB接收功能的便 攜式DVD產品的操作控制晶片與DTV解碼晶片間的通信服 務。該產品為商業性產品,質量是產品的生命。為保證產品 質量,提高通信的可靠性,在設計異步串行通信時採用本文 的響應加權式通信協議。系統通信控制實現如圖5。
硬體系統由主控晶片和DTV解碼晶片構成,原理框圖如圖6所示。主控晶片內部串口2的收發引腳與DTV解碼晶片 的收發引腳相連接。主控晶片在整個通信過程中起主導作用,用於發起通信與判斷DTV解碼晶片的響應。DTV解碼晶片接收主控晶片發送的命令,解析後進行相關的動作。

5 結束語
本協議的設計初衷是為了克服主從單片機處理繁忙而 造成的響應延遲現象,同時又具有可擴展性,其中數據場的 字節長度可以由用戶自行定義。將本協議應用到DVD產品的通信控制時,經過測試,在波特率9600bit/s下可以成功通信;並且本協議能保證主控 端正確識別響應類型以及還原出當前響應相對應的命令消 息,保證主控晶片做出正確的處理,從而保證整個系統的正 確運行。


相關焦點

  • 一種高效的串行通信協議的制定及實現
    ,實現計算機與計算機或計算機與外部設備之間的通信(數據交換)。EIA-RS232是全雙工的通信模式,可保證短距離點對點的高速傳輸,EIA-RS485實現了較長距離下的多點互聯通信。CAN屬於現場總線的範疇,採用了多主機制,改善了在集散控制系統下的主從通信模式[2]。隨著應用需求的複雜化,對串行通信的性能、通信效率的提升需求越來越明顯。
  • 兩種MCU間的串行通信協議設計
    目前,越來越多的嵌入式系統同時使用了上述兩種MCU,因此如何使Cortex-M3與8051之間可以高效地進行信息交互,是實現設計目標的關鍵。1 方案設計 要進行信息交互,離不開物理接口。在嵌入式應用中,目前常用的接口有UART、SPI和I2C等串行接口。
  • 串行通信與協議(RS232、RS485)
    串行通信是PLC網絡常用的通信方式,正確選擇接口類型和協議標準,對保證通信可靠性具有重要意義。1.RS232接口一種標準的串行物理接口,232是標識號。RS485接口優點:不僅可以方便地實現兩點間數據傳輸,而且可以方便地用於多站之間的互連。接口轉換器可以實現RS232與RS485之間互相轉換,一般電腦只帶有RS232接口,要實現RS485數據讀取就需要一個轉換器。
  • RS-485串行數據通信協議
    概述 串行數據通信的協議從RS-232到千兆位乙太網,雖然每種協議都有特定的應用領域,但任何情況下我們都必須考慮成本和物理層(PHY)性能。
  • 通信接口協議介紹
    一、串行通信協議 計算機與外設或計算機之間的通信通常有兩種方式:並行通信和串行通信。並行通信指數據的各位同時傳送。並行方式傳輸數據速度快,但佔用的通信線多,傳輸數據的可靠性隨距離的增加而下降,只適用於近距離的數據傳送。 串行通信是指在單根數據線上將數據一位一位地依次傳送。
  • 淺析六種常用的單片機通信協議
    在單片機的應用中,通信協議是必不可少的一部分,上位機與下位機,單片機與單片機,單片機與外設模塊之間的通信都需要通信協議實現信息交換和資源共享。由於設備之間不同的傳輸速率、電氣特性、可靠性要求的不同,產生了許多類型的適用於不同情況的通信協議,並被廣泛接受和使用。
  • 嵌入式硬體通信接口協議-UART(一)協議基礎
    from 百度百科串行接口  每當口中提到「串口」,很容易讓人想到的名詞有UART、USART、COM口、TTL/CMOS、RS-232、RS-422、RS-485。其中:  UART,「串口」時序協議的名稱,定義了各個信號時序協議;  USART,相比UART增加了同步信號,可實現ISO-7816智慧卡接口;  COM口,在PC等作業系統上,區別於USB、SATA接口的串行接口,定義了在作業系統中的規範;  TTL/CMOS,嵌入式硬體系統的信號電平;  RS-232,在UART
  • 嵌入式硬體通信接口協議中的串行通信接口-SPI
    本節繼續講嵌入式硬體通信接口協議中的另外一個串行通信接口-SPI。相比於UART串口協議,SPI又有著其獨特之處。本文引用地址:http://www.eepw.com.cn/article/201812/396060.htm  簡介  SPI(全稱SerialPeripheral Interface),串行外設接口。  SPI是串行外設接口(SerialPeripheral Interface)的縮寫。
  • 多種工業應用串行總線特性及比較
    由於在消費類電子產品、計算機外設、汽車和工業應用中增加了嵌入式功能,對低成本、高速和高可靠通信介質的要求也不斷增長以滿足這些應用,其結果是越來越多的處理器和控制器用不同類型的總線集成在一起,實現與PC軟體、開發系統(如仿真器)或網絡中的其它設備進行通信。目前流行的通信一般採用串行或並行模式,而串行模式應用更廣泛。
  • 【E課堂】紅外通信協議及原理精講
    常用的有通過脈衝寬度來實現信號調製的脈寬調製(PWM)和通過脈衝串之間的時間間隔來實現信號調製的脈時調製(PPM)兩種方法。 簡而言之,紅外通信的實質就是對二進位數位訊號進行調製與解調,以便利用紅外信道進行傳輸;紅外通信接口就是針對紅外信道的數據機。
  • 關於RS232 RS422 RS485三種異步通信
    RS-232、RS-422與RS-485標準只對接口的電氣特性做出規定,而不涉及接插件、電纜或協議,在此基礎上用戶可以建立自己的高層通信協議。例如:視頻伺服器都帶有多個RS422串行通訊接口,每個接口均可通過RS422通訊線由外部計算機控制實現記錄與播放。
  • 基於FINS協議的OMRON PLC與上位機乙太網通信的實現
    過去,在工程項目開發中,PLC和上位機間的通信常採用RS-232C或者RS-485串行方式,這種方法很難滿足數據量大、通信距離遠、實時性要求高的控制系統。 FINS(factory interface network service)通信協議是歐姆龍公司開發的用於工業自動化控制網絡的指令/響應系統。使用FINS指令可實現各種網絡間的無縫通信,包括用於信息網絡的Etherne(乙太網),用於控制網絡的Controller Link和SYSMAC LINK。
  • 基於Linux系統的多種串行總線統一接口的實現
    文中給出了一種多種串行總線統一接口的實現方法,並以ARM9為平臺,以I2C、1-Wire、SPI為例,驗證了新方法的可行性。關鍵詞:統一接口;嵌入式系統:Linux;設備驅動;串行總線0 引言在Linux內核中單獨實現TTY、I2C、SPI、ISA、USB等多種總線驅動時,每一種總線的實現都有各自的特點,如參數設置不同,實現的結構不同等。
  • 雷尼紹領先的RESOLUTE™光柵產品系列現在可與Yaskawa串行通信...
    【原創】雷尼紹領先的RESOLUTE™光柵產品系列現在可與Yaskawa串行通信協議兼容
  • GPS探空儀通信系統的設計與實現
    GPS探空儀的通信系統設計就是將GPS探空儀實時探測的溫度、溼度、壓力和GPS定位數據經過編碼和數字調製,經功率放大器放大為數字射頻信號後從空中傳回接收機,接收機對收到的信號進行解調和解碼處理後再傳送至計算機進行數據處理。
  • 串行通信層MIPI D『PHY RX詳細解讀
    隨著計算機網絡化和微機分級分布式應用系統的發展,通信的功能越來越重要。通信是指計算機與外界的信息傳輸,既包括計算機與計算機之間的傳輸,也包括計算機與外部設備,如終端、印表機和磁碟等設備之間的傳輸。在通信領域內,數據通信中按每次傳送的數據位數,通信方式可分為:並行通信和串行通信。
  • 一種RS-485總線自定義通信協議及其應用
    它具有穩定可靠、編程簡單、組網快速、價格低廉的優點,但在協議設計實現方面並沒有一個統一的規範,導致不同的控制系統常常採用不同的通信協議。因此,有必要結合我們的工作實踐,設計一種有通用性的高效可靠的協議,從而簡化基於RS-485的分布式測試系統通信部分的設計,既能夠保證通信的穩定可靠,又能夠把精力集中到測控系統算法的設計上。
  • 基於單片機和CPLD的PLC背板總線協議接口晶片設計(一)
    詳細介紹了通過Verilog HDL語言設計狀態機、協議幀控制器、FIFO控制器的過程,25MHz下背板總線工作穩定的試驗結果驗證了協議晶片設計的可行性。  可編程邏輯控制器(PLC)主機是通過背板總線支持擴展模塊的連接, 背板總線是PLC 主機同I/O擴展模塊之間的高速數據通路,支持主機和擴展模塊之間的I/O 數據刷新。
  • Profibus-DP主站通信平臺的設計方案
    目前國內業界對於Profibus-DP的研究和相關產品的開發都是基於國外提供的專用協議晶片(主站多數採用西門子推出的ASPC2,從站多採用SPC3等智能通信晶片),而沒有協議晶片樣機開發的相關報導。對於主站的開發,國內一些科研院所(北航706教研室、中科院、浙大等)也曾利用可編程邏輯器件配合MCU設計出簡單主站的試驗產品,但是這些產品僅能實現單主站的功能,對於組成強大的Profibu-DP網絡還望塵莫及。為了打破國外晶片的壟斷,推動國內相關晶片及產品的開發,本文提出了一種FPGA與ARM相結合的方式解決Profibu-DP 1類主站的主主通信及主從通信問題,實現了比較完整的主站研製方案。
  • I2C/SPI/UART/1-Wire/並行接口這幾種常用嵌入式通信協議,你都了解嗎
    下面將逐一說明常用的板上通信接口。  1. I2C總線  I2C總線是一種同步、雙向、半雙工的兩線式串行接口總線。這裡,半雙工的含義是指在任意給定的時刻,只有一個方向上是可以通信的。I2C總線最早由Philips半導體公司於20世紀80年代研發麵市。I2C最初的設計目標是為微處理器/微控制器系統與電視機外圍晶片之間的連接提供簡單的方法。