linux下串列埠程式設計要知道的那些事
本篇文章主要講了與串列埠程式設計相關的幾個知識點,以及在linux
上編寫串列埠程式所要遵循的思想和要考慮的方面,以及它和我們之前在uc/os
作業系統上編寫串列埠程式有什麼區別。
一.串列埠相關的幾個基本概念
可以結合《串列埠程式設計之前奏篇》中的知識點會對串列埠的一些基本概念有更深的了解,為後面的繼續深入做鋪墊。
1.波特率
1>
表示每秒傳輸的位元數。
2>
說明:若波特率為115200,它表示什麼呢?
ø對於傳送斷,即每秒鐘傳送115200bit。
ø對於接收端,115200波特率意味著串列埠通訊在資料線上的取樣率為115200hz.
注:波特率和距離之間成反比,距離相隔很近的裝置之間可以實現高波特率通訊。
2.資料位
1>
表示通訊中實際資料位的引數。在計算機傳送的資料報中,實際的資料往往不會是8位。
2>
說明:在串列埠通訊中,可以選擇5,6,7,8位。設定資料位時,主要考慮所要傳輸的資料內容。
3>
事例:如果要傳輸的是標準的ascii碼。那麼又該如何設定資料位呢?
ø由於ascii碼的範圍是0~127,因此設定資料位為7就ok了。
ø若為擴充套件ascii碼,其範圍是0~255,必須使用8位。
注:7位或8位資料中不僅僅是資料,還包括開始/停止位,資料位以及奇偶校驗位等。
3.奇偶校驗位
1>
作用:該位用於串列埠通訊中的簡單檢驗錯。
2>
型別:主要有偶校驗,奇校驗,標記,空格的方式
在arm7(lpc2200)中,只有偶校驗,奇校驗兩種方式。
3>
方法:如何進行校驗?
ø奇偶校驗是通過統計資料中高位或低位的個數來實現校驗的。
ø標記,空格並不是真正校驗錯誤的,只是通過簡單的置位來實現對資料的檢測。通過置位方式,可以判斷出是否存在雜訊干擾資料通訊或資料傳輸,以及是否存在不同步的現象
4.停止位
1>
作用:停止位用於標誌該資料報資料結束,可以取1位,1.5位或2位。
在arm7(lpc2200中)停止位可以取1位,2位或不取
2>
說明:
ø停止位不僅僅用於資料報的傳輸結束標誌,還提供了計算機之間校正同步時鐘的機會。
ø用於停止位的位數越多,不同時鐘同步的容忍程式越大。
ø但是由於停止位占用了資料空間,過多的停止位將導致資料傳輸速度的下降。
5.資料流控制
1>
通過串列埠傳輸資料時,由於計算機之間處理速度或其他因素的影響,會造成丟失資料的現象。
2>
作用:資料流控制用於解決上面的問題,通過控制傳送資料的速度,確保資料不會出現丟失。
3>
型別:資料流控制可以分為軟體流控制(xon/xoff)和硬體流控制,當然你可以選擇不使用資料流控制。
ø軟體流控制使用特殊的字元作為啟動或停止的標誌
ø硬體流控制通過使用硬體訊號(ctr/rts)來實現。
注:使用硬體流控制時,在接收端準備好接收資料後,設為cts為1,否則cts為0。同樣,如果傳送端準備好要傳送資料時,則設定rts為1;如果還未準備好,設定cts為0. 二.
linux串列埠下程式設計所要考慮的問題
1.linux下編寫串列埠程式的思想
看圖:1>
在linux中,一切裝置皆為檔案。因此對串列埠的操作都轉化為對檔案的操作。
(在ucos-ii作業系統中是直接對暫存器操作來對串列埠進行程式設計的)
2>
linux裝置驅動工作流程: ø
在linux系統啟動時,裝置驅動將被載入。
ø裝置驅動成功載入後,將向系統反饋乙個主裝置號,驅動程式將根據該主裝置號在/dev目錄下建立對應的裝置檔案。
ø程式(程序)就可以使用open,read,write函式或命令來實現對裝置的訪問了。
tiger-john說明:
Linux 下的串列埠程式設計(一)
linux下串列埠程式設計要知道的那些事 jibo.tiger gmail.com 本篇文章主要講了與串列埠程式設計相關的幾個知識點,以及在linux 上編寫串列埠程式所要遵循的思想和要考慮的方面,以及它和我們之前在uc os 作業系統上編寫串列埠程式有什麼區別。一 串列埠相關的幾個基本概念 可以結...
Linux下串列埠程式設計
linux下串列埠程式設計 linux 系統下,諸如串列埠 觸控螢幕 gpio adc 等等各種裝置的操作,都是 通過訪問其對應的裝置節點進行控制。相應地,串列埠通過訪問 dev ttys0 dev ttys1 dev ttys2.對其進行配置與控制。串列埠配置的引數包括 波特率,資料位,校驗位,停...
Linux 下串列埠程式設計 程式設計實現
在 linux 下串列埠檔案是位於 dev 下的 開啟串列埠是通過使用標準的檔案開啟函式open操作 include include include include include include include include static int fd int uart open int fd,...