UART0串列埠程式設計系列之前奏篇

2021-06-22 14:13:30 字數 2098 閱讀 9331

串列埠程式設計之前奏篇

author   :tiger-john

website  :blog.csdn.net/tigerjb

email    :[email protected]

update-time   : 2023年1月30日星期日

眾所周知嵌入式系統之間採用通訊方式交換資料,由於各類cpu均整合了uart部件。所以序列通訊是一種最基本的通訊手段。因此,我們也對它進行深入的了解

1.    通訊協議設計

在進行通訊時,每次需要傳送的資訊一般超過1位元組。為此,通訊雙方必須約定通訊資料的排列格式,即通訊協議。通常把一次通訊過程的全部內容稱為乙個「通訊幀」。通訊協議設計就是幀結構設計。

在一幀內容中,通常包括以下部分。

1>  起始碼:由乙個或若干個包含特定內容的位元組,表示乙個通訊幀的開始。起始碼的內容必須與通訊資料內容有明顯區別(不能在通訊資料裡出現與起始碼相同的內容) 注:

當通訊幀的總長度比較短,通道質量比較高時,為了提高效率,可以不設定起始碼。

2>  位址碼:在主從結構的多機組網通訊系統中,用來指明分機號。

l  當分機總數在255臺之內時,位址碼為1位元組。可以定義乙個特殊的位址碼作為廣播位址,代表所有的分機。

l  在多主多從(無主從)結構的多機組網通訊系統中,位址碼包含收發雙方的位址。

注:如果是兩台裝置之間進行點對點的通訊,幀結構中就步需要包含位址碼。

3>  長度碼:在資料長度不固定的通訊場合(變長幀),表示本幀資料內容的位元組數。當長度肯定不超過255位元組時,長度碼用1位元組表示。

注:如果每次通訊資料內容的長度為雙方約定的固定值(定長幀),幀結構中就不需要包含長度碼。

4>  資料段:通訊的實質內容。

5>  校驗碼:由於通訊通道存在干擾,為了判斷接收的內容是否受到干擾,需要加入效驗碼。

效驗碼演算法可以採用

l  簡單的異或校驗碼。

l  也可以像hex檔案那樣採用算術加法校驗。

l  採用功能極強的crc校驗。

注:當通訊環境非常好時(如室內裝置之間的通訊),幀結構中就不需要包含校驗碼。

2.    rs232標準

1>  簡介:

l  rs232介面是2023年由美國

電子工業協會(eia)聯合貝爾系統

、數據機廠家及計算機終端生產廠家共同制定的用於序列通訊的標準。它的全名是「資料終端裝置(dte)和資料通訊裝置(dce)之間序列二進位制資料交換接**術標準」。

l   該標準規定採用乙個25個腳的db25聯結器,對聯結器的每個引腳的訊號內容加以規定,還對各種訊號的電平加以規定。隨著裝置的不斷改進,出現了代替db25的db9介面,現在都把rs232介面叫做db9

注:我們後面所用的都是

rs232

的db9介面

2>  介面定義

先看圖:

引腳1:dcd 載波檢測

引腳2:rxd 接收資料

引腳3:txd 傳送資料

引腳4:dtr 資料終端準備好

引腳5:sg 訊號地

引腳6:dsr 資料準備好

引腳7:rts 請求傳送

引腳8: cts 清除傳送

引腳9: ri 振鈴提示

tiger-john說明:

1在uart0串列埠程式設計中我們只用到了引腳

2,引腳

3,和引腳5.

2.目前的串列埠線有兩中連線方法:

l  平行線:2接2,3接3(即發對發,接對接)

l  交叉線:2接3,3接2(即發對接,接對發)

各個外設所用的連線方法都不一樣。因此,除錯程式時,一定要注意你所用的是那中串列埠線。如果串列埠線選錯的話,它們之間是不通訊的

串列埠程式設計之前奏篇

uart0串列埠程式設計系列(一)裸機下的輪訓方式的串列埠程式設計

uart0串列埠程式設計系列(二)裸機下的中斷方式的串列埠程式設計

uart0串列埠程式設計系列(三)uc/os下的串列埠程式設計注意的問題

uart0串列埠程式設計系列(四)uc/os下的串列埠傳送任務程式設計

uart0串列埠程式設計系列(五) uc/os下的串列埠接收任務程式設計

uart0串列埠程式設計系列(六)linux下串列埠程式設計要知道的那些事

uart0串列埠程式設計系列(七)linux下的串列埠程式設計

**:

CC2430 串列埠通訊UART

cc2430有兩個序列通訊介面usart0和usart1,本實驗採用第乙個介面。要實現的功能是在超級終端傳送資料到開發板,並且在lcd上顯示。那麼,此實驗中uart中主要用的是接受功能。當u0csr.re 1時,在uart上資料接收就開始了。然後uart會在輸入引腳中尋找有效起始位,並且設定u0cs...

Uart串列埠與RS232串列埠的區別

uart這裡指的是ttl電平的串列埠 rs232指的是rs232電平的串列埠。ttl電平是3.3v的,而rs232是負邏輯電平,它定義 3 15v為低電平,而 15 3v為高電平。uart串列埠的rxd txd等一般直接與處理器晶元的引腳相連,而rs232串列埠的rxd txd等一般需要經過電平轉換...

LabVIEW串列埠程式設計 02 串列埠傳送

先說明一下,跟串列埠相關的函式都位於下圖所示的位置。官方的幫助文件對每個函式有詳細介紹,大家有不懂的地方首先檢視幫助文件,配合搜尋引擎深化理解。串列埠傳送一次資料過程的可以分為三個步驟 開啟串列埠 傳送資料 關閉串列埠。分別對應confugure port,write,close這三個函式。用這三個...