Linux 下的串列埠程式設計(一)

2021-08-25 16:15:27 字數 1985 閱讀 1197

linux下串列埠程式設計要知道的那些事

[email protected]

本篇文章主要講了與串列埠程式設計相關的幾個知識點,以及在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,...