1??項目背景
(源碼下載?技術交流群:544453837)
串行接口簡稱串口,也稱串行通信接口或串行通訊接口(通常指COM接口),是采用串行通信方式的擴展接口。串行接口?(Serial Interface)?是指數據一位一位地順序傳送,其特點是通信線路簡單,只要一對傳輸線就可以實現雙向通信(可以直接利用電話線作為傳輸線),從而大大降低了成本,特別適用于遠距離通信,但傳送速度較慢。一條信息的各位數據被逐位按順序傳送的通訊方式稱為串行通訊。
? ? ? 串口的出現是在1980年前后,數據傳輸率是115kbps~230kbps。串口出現的初期是為了實現連接計算機外設的目的,初期串口一般用來連接鼠標和外置Modem以及老式攝像頭和寫字板等設備。串口也可以應用于兩臺計算機(或設備)之間的互聯及數據傳輸。
? ? ? 接口劃分標準
? ? ? 串口可分成同步串行接口和異步串行接口。
? ? ? 同步串行接口(英文:SynchronousSerialInterface,SSI)是一種常用的工業用通信接口。
? ? ? 異步串行是指UART(Universal AsynchronousReceiver/Transmitter),通用異步接收/發送。
?
? ? ? 串行接口按電氣標準及協議來分包括RS-232-C、RS-422、RS485等。RS-232-C、RS-422與RS-485標準只對接口的電氣特性做出規定,不涉及接插件、電纜或協議。
? ? ? RS-232
? ? ? 也稱標準串口,最常用的一種串行通訊接口。它是在1970年由美國電子工業協會(EIA)聯合貝爾系統、調制解調器廠家及計算機終端生產廠家共同制定的用于串行通訊的標準。它的全名是“數據終端設備(DTE)和數據通訊設備(DCE)之間串行二進制數據交換接口技術標準”。傳統的RS-232-C接口標準有22根線,采用標準25芯D型插頭座(DB25),后來使用簡化為9芯D型插座(DB9),現在應用中25芯插頭座已很少采用。
? ? ? RS-232采取不平衡傳輸方式,即所謂單端通訊。由于其發送電平與接收電平的差僅為2V至3V左右,所以其共模抑制能力差,再加上雙絞線上的分布電容,其傳送距離最大為約15米,最高速率為20kb/s。RS-232是為點對點(即只用一對收、發設備)通訊而設計的,其驅動器負載為3~7kΩ。所以RS-232適合本地設備之間的通信。
? ? ? RS-422
? ? ? 標準全稱是“平衡電壓數字接口電路的電氣特性”,它定義了接口電路的特性。典型的RS-422是四線接口。實際上還有一根信號地線,共5根線。其DB9連接器引腳定義。由于接收器采用高輸入阻抗和發送驅動器比RS232更強的驅動能力,故允許在相同傳輸線上連接多個接收節點,最多可接10個節點。即一個主設備(Master),其余為從設備(Slave),從設備之間不能通信,所以RS-422支持點對多的雙向通信。接收器輸入阻抗為4k,故發端最大負載能力是10×4k+100Ω(終接電阻)。RS-422四線接口由于采用單獨的發送和接收通道,因此不必控制數據方向,各裝置之間任何必須的信號交換均可以按軟件方式(XON/XOFF握手)或硬件方式(一對單獨的雙絞線)實現。
? ? ? RS-422的最大傳輸距離為1219米,最大傳輸速率為10Mb/s。其平衡雙絞線的長度與傳輸速率成反比,在100kb/s速率以下,才可能達到最大傳輸距離。只有在很短的距離下才能獲得最高速率傳輸。一般100米長的雙絞線上所能獲得的最大傳輸速率僅為1Mb/s。
? ? ? RS-485
? ? ? 是從RS-422基礎上發展而來的,所以RS-485許多電氣規定與RS-422相仿。如都采用平衡傳輸方式、都需要在傳輸線上接終接電阻等。RS-485可以采用二線與四線方式,二線制可實現真正的多點雙向通信,而采用四線連接時,與RS-422一樣只能實現點對多的通信,即只能有一個主(Master)設備,其余為從設備,但它比RS-422有改進,無論四線還是二線連接方式總線上可多接到32個設備。
? ? ? RS-485與RS-422的不同還在于其共模輸出電壓是不同的,RS-485是-7V至+12V之間,而RS-422在-7V至+7V之間,RS-485接收器最小輸入阻抗為12kΩ、RS-422是4kΩ;由于RS-485滿足所有RS-422的規范,所以RS-485的驅動器可以在RS-422網絡中應用。
? ? ? RS-485與RS-422一樣,其最大傳輸距離約為1219米,最大傳輸速率為10Mb/s。平衡雙絞線的長度與傳輸速率成反比,在100kb/s速率以下,才可能使用規定最長的電纜長度。只有在很短的距離下才能獲得最高速率傳輸。一般100米長雙絞線最大傳輸速率僅為1Mb/s。
? ? ? CH340
? ? ? 由于串口(COM)不支持熱插拔及傳輸速率較低,目前大部分新主板和便攜電腦已開始取消該接口,只有工控和測量設備以及部分通信設備中還保留有串口。
? ? ? 現在的電腦大部分都有USB接口而沒有串口,為了使用串口,我們需要一個USB轉串口的芯片,它的功能是讓電腦把USB當串口來使用。這種類型的芯片很多,明德揚教學板使用的是CH340芯片。
? ? ? CH340是一個USB總線的轉接芯片,實現USB轉串口、USB轉IrDA紅外或者USB轉打印口。
? ? ? 在串口方式下,CH340提供常用的MODE聯絡信號,用于為計算機擴展異步串口中,或者將普通的串口設備直接升級到USB總線。
?
? ? ? 明德揚教學板的串口功能原理如下圖所示。電腦通過USB線,連接到教學板上的USB接口,USB接口連接到CH340芯片,CH340芯片與FPGA相連。在FPGA看來,串口其實就是兩根線:輸入線USB_RXD和輸出線USB_TXD,其他電氣特性、電平轉換的工作,都由CH340搞好了。FPGA通過USB_RXD接收來自電腦過來的串口數據;通過USB_TXD發數據給電腦。
串口時序
? ? ? USB_RXD和USB_TXD傳輸數據時,是將傳輸數據的每個字符一位接一位地傳輸。下面是USB_RXD和USB_TXD的時序。USB_RXD的時序由CH340芯片產生,FPGA根據時序來接收數據;USB_TXD的時序由FPGA芯片產生,FPGA要按規范來產生時序,使得CH340可以正確地接收。我們可以把產生時序的叫MASTER(主),接收數據叫SLAVE(從)。
串口時序主要包括:空閑、起始位、數據拉、校驗位和停止位。
? ? ? 空閑:空閑狀態下,數據線一直處于高電平狀態。
? ? ? 起始位:當MASTER要發送數據時,首先會將數據線拉低“一段時間”,從而告知SLAVE有數據要傳輸了,要做好準備。
? ? ? 數據位:起始位之后是數據位,數據位的位數由雙方約定,支持4、5、6、7、8位等。雙方約定后才能正確地傳輸。每個數據位傳輸時都會占用“一段時間”,并且是從低位開始傳輸。圖中LSB是低位的意思,MSB是高位的意思。例如要傳輸數據8’b00000001,傳輸時是先送最低位的“1”。
? ? ? 檢驗位:奇偶校驗是一種非常簡單常用的數據校驗方式,分為奇校驗和偶校驗。奇校驗需要保證傳輸的數據總共有奇數個邏輯高電平,若是偶校驗則要保證傳輸的數據有偶數個邏輯高電平。即“奇偶”的意思就是數據中(包括該校驗位)中1的個數。例如:傳輸的數據位是0100_0011。如果是奇校驗,校驗位是0,偶校驗校驗位是1。校驗位不是必須項,雙方可以約定不需要校驗位,或者用奇校驗,或者使用偶校驗。
? ? ? 停止位:最后一個是停止位,MASTER必須保證有停止位,即把數據線變高“一段時間”。由于數據是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,并且提供計算機校正時鐘同步的機會。讓SLAVE可以正確地識別下一輪數據的起始位。假如沒有停止位,校驗碼剛好是0,數據連續發送,那么SLAVE就沒法判斷下一輪的起始位。對于SLAVE來說,接收完數據位或校驗位后就表示接收完成,在停止位不需要做什么,只是等待下一輪起始就夠了。
? ? ? 在時序圖中,每個數據都會傳輸“一段時間”,這個一段時間非常重要,傳輸雙方都要做好約定,否則就不能正確地通信。那么這個“一段時間”是多長時間呢?這跟波特率有關。在串口通信中,波特率是一個非常重要的概念。串口通信中常用的波特率是9600、19200、38400、57600、115200。波特率是每個碼元傳輸的速率,在二進制數據傳輸中,和比特率相同,都是每個比特數據傳輸的速率,其倒數為1bit數據的位寬,也就是1bit數據持續的時間。有了這一時間段,就可用FPGA構造計數器實現比特周期的延時,從而實現特定的數據傳輸波特率。
? ? ? 例如,假設波特率為9600,數據位為8位,沒有校驗位,電腦要發數據8’b00110001給FPGA。考慮到波特率為9600,即每位占用時間為1s/9600=104166ns。那么FPGA的USB_RXD(圖中的rx_uart)這根線將如下圖變化。
在使用教學板的串口前,需要安裝CH340的驅動程序。下載后直接解壓安裝就可以了。
? ? ? 當用USB線接上電腦和教學板,并且教學板上電后,打開電腦的“設備管理器”,將會看到如下顯示。當出現該顯示時,表示驅程安裝成功并且已經被電腦正確地識別。
? ? ?我們可以從“設備管理器”中查看串口號,如下圖所示。圖中表示該串口號為XX。我們可以修改串口號,方法是:XXXXXX。
串口:可以選擇串口號,支持串口號1~4。如果連接的串口號不在此范圍,則需要從設備管理器中修改串口號,詳細見本章前面的描述。
? ? ? ?波特率:選擇串口的波特率,支持9600、19200、38400、57600、115200。該選項影響了每一位碼元占用的時間。
? ? ? 校驗位:可選擇沒有檢驗位、奇校驗和偶校驗。
? ? ?數據位:可以設置數據位的位數,可選擇4~8位的數據拉。
? ? ? 停止位:可以設置停止位的時間長度。有1位、1.5位和2位可供選擇。
? ? ? 打開/關閉串口:用來打開和關閉串口。打開軟件時,串口默認是關閉狀態。注意,一定要設置好參數后,才能打開串口;一定要關閉串口后,才能關掉教學板電源和撥掉USB線。
? ? ? ?十六進制顯示:本軟件支持ASCII顯示和十六進制顯示。勾選后,用十六進制顯示。例如FPGA發送8’b00110001,本軟件收到后會顯示31。如果不勾選,則是用ASCII碼顯示。下圖就是ASCII表。FPGA發送8’b00110001,即下表中十六進制的31,它所對應的圖形為1,所以軟件只會顯示1。假設FPGA發送的是8’h00100011,即下表中十六進制的23,它所對應的是圖形是#,所示軟件會顯示#。
評論