串列埠通訊 2

2022-04-06 11:56:54 字數 2379 閱讀 1670

串列埠通訊—非同步通訊方式

序列通訊可以分為兩種型別:同步通訊、非同步通訊。

1.非同步通訊的特點及資訊幀格式:

以起止式非同步協議為例,下圖顯示的是起止式一幀資料的格式:

圖1起止式非同步通訊的特點是:乙個字元乙個字元地傳輸,每個字元一位一位地傳輸,並且傳輸乙個字元時,總是以「起始位」開始,以「停止位」結束,字元之間沒有固定的時間間隔要求。每乙個字元的前面都有一位起始位(低電平,邏輯值),字元本身由5-7位資料位組成,接著字元後面是一位校驗位(也可以沒有校驗位),最後是一位或一位半或二位停止位,停止位後面是不定長的空閒位。停止位和空閒位都規定為高電平(邏輯值1),這樣就保證起始位開始處一定有乙個下跳沿。

從圖中可看出,這種格式是靠起始位和停止位來實現字元的界定或同步的,故稱為起止式協議。

非同步通訊可以採用正邏輯或負邏輯,正負邏輯的表示如下表所示:

邏輯0邏輯1

正邏輯低電平

高電平負邏輯

高電平低電平

非同步通訊的資訊格式如下邊的表所示

起始位邏輯0

1位資料位

邏輯0或

15位、6位、7位、8位

校驗位邏輯0或1

1位或無

停止位邏輯1

1位,1.5位或2位

空閒位邏輯1

任意數量

注:表中位數的本質含義是訊號出現的時間,故可有分數字,如1.5。

例:傳送8位資料45h(0100,0101b),奇校驗,1個停止位,則訊號線上的波形象圖2所示那樣:非同步通訊的速率:若9600bps,每字元8位,1起始,1停止,無奇偶,則實際每字元傳送10位,則960字元/秒。

圖22.非同步通訊的接收過程

接收端以「接收時鐘」和「波特率因子」決定一位的時間長度。下面以波特率因子等於16(接收時鐘每16個時鐘週期,使接收移位暫存器移位一次)、正邏輯為例說明,如圖3所示。

圖3(1)開始通訊時,訊號線為空閒(邏輯1),當檢測到由1到0的跳變時,開始對「接收時鐘」計數。 

(2)當計到8個時鐘時,對輸入訊號進行檢測,若仍為低電平,則確認這是「起始位」b,而不是干擾訊號。

(3)接收端檢測到起始位後,隔16個接收時鐘,對輸入訊號檢測一次,把對應的值作為d0位資料。若為邏輯1, 作為資料位1;若為邏輯0,作為資料位0。

(4)再隔16個接收時鐘,對輸入訊號檢測一次,把對應的值作為d1位資料。….,直到全部資料位都輸入。

(5)檢測校驗位p(如果有的話)。

(6)接收到規定的資料位個數和校驗位後,通訊介面電路希望收到停止位s(邏輯1),若此時未收到邏輯1,說明出現了錯誤,在狀態暫存器中置「幀錯誤」標誌。若沒有錯誤,對全部資料位進行奇偶校驗,無校驗錯時,把資料位從移位暫存器中送資料輸入暫存器。若校驗錯,在狀態暫存器中置奇偶錯標誌。

(7)本幀資訊全部接收完,把線路上出現的高電平作為空閒位。

(8)當訊號再次變為低時,開始進入下一幀的檢測。

3、非同步通訊的傳送過程

傳送端以「傳送時鐘」和「波特率因子」決定一位的時間長度。

(1)當初始化後,或者沒有資訊需要傳送時,傳送端輸出邏輯1,即空閒位,空閒位可以有任意數量。

(2)當需要傳送時,傳送端首先輸出邏輯0,作為起始位。

(3)接著,傳送端首先傳送d0位,直到各資料位傳送完。

(4)如果需要的話,傳送端輸出校驗位。

(5)最後,傳送端輸出停止位(邏輯1)。

(6)如果沒有資訊需要傳送時,傳送端輸出邏輯1,即空閒位,空閒位可以有任意數量。如果還有資訊需要傳送,轉入第(2)步。

對於以上傳送、接收過程應注意以下幾點:

(1)接收端總是在每個字元的頭部(即起始位)進行一次重新定位,因此傳送端可以在字元之間插入不等長的空閒位,不影響接收端的接收。

(2)傳送端的傳送時鐘和接收端的接收時鐘,其頻率允許有一定差異,當頻率差異在一定範圍內,不會引起接收端檢測錯位,能夠正確接收。並且這種頻率差異不會因多個字元的連續接收而造成誤差累計(因為每個字元的開始(起始位處)接收方均重新定位)。只有當傳送時鐘和接收時鐘頻率差異太大,引起接收端取樣錯位,才造成接收錯誤。

(3)起始位、校驗位、停止位、空閒位的訊號,由「傳送移位暫存器」自動插入。在接收方,「接收移位暫存器」接收到一幀完整資訊(起始、資料、校驗、停止)後,僅把資料的各位送至「資料輸入暫存器」,即cpu從「資料輸入暫存器」中讀得的資訊,只是有效數字,不包含起始位、校驗位、停止位資訊。

QT 串列埠通訊2

自動識別com口 通過讀登錄檔實現 當然linux下不可用 class mainwindow public qmainwindow,public ui mainwindowclass public qstring getcomm int index,qstring keyorvalue 讀取鍵名 p...

串列埠和通訊2

繼續說iic 1 起始訊號 void iic start void sda設定為輸出,然後拉高,時鐘線拉高,等待四微秒,然後再時鐘線高的情況下拉低sda,形成下降沿,再等待4微秒,時鐘線才可以拉低。也就是說要在時鐘線高的情況下使sda形成下降沿,同時還要注意邊沿前後必須要有4微秒的等待時間。2 結束...

VC 的串列埠通訊(2)(

1 選擇選單項project add to project components and controls 將彈出乙個對話方塊以選擇系統中已有的元件 components 和控制項 controls 選擇registered activex controls資料夾下的microsoft commun...