4.1 串行通信簡介
并行通信雖然通信速度比較快,但是如果數據位數很多的時候,對應的數據線也會很多,之前學習的端口輸入輸出本質上就是一種并行通信,為了較少數據線的數量,降低人工布線的難度,串行通信被設計了出來。
串行通信作為計算機通信方式之一,主要起到主機與外設以及主機之間的數據傳輸作用,串行通信具有傳輸線少、成本低的特點,主要適用于近距離的人-機交換、實時監(jiān)控等系統(tǒng)通信工作當中,借助于現(xiàn)有的電話網也能實現(xiàn)遠距離傳輸,因此串行通信接口是計算機系統(tǒng)當中的常用接口。
現(xiàn)在常用的串行通信就是能夠產生TTL電平的異步串行通信,通過外擴的芯片,例如RS232,MAX485就產生了現(xiàn)在常用的232通信和485通信,隨著串行通信的發(fā)展,通信速率幾乎和并行通信一樣,甚至比并行通信還快。
4.2 8251簡介
4.1.1 引腳詳解
(1)三態(tài)雙向八位數據口D0~D7:用于和CPU進行數據通信
(2)寫控制WR:低電平有效
(3)讀控制RD:低電平有效
(4)片選CS:低電平有效
(5)復位RESET:高電平有效,用于復位芯片
(6)傳送時鐘TXC:數據發(fā)送時鐘線
(7)接收時鐘RXC:數據接收時鐘線
(8)芯片時鐘CLK:為內部電路提供時鐘脈沖,應該大于傳送速率的30倍
(9)傳送寄存器空信號TXE:沒有可以發(fā)送的數據時,該引腳為1,當從CPU接收到數據且控制字的TXEN=1時,該引腳變?yōu)?,在同步工作方式時,若CPU來不及輸出一個字符,則將使該引腳變?yōu)?,同時發(fā)送器在輸出線上自動插入同步字符,以填補傳輸空隙
(10)傳送允許信號CTS:Modem用于通知8251A,Modem準備接收數據
(11)SYNDET/BD:該引腳與狀態(tài)寄存器中的SYNDET/BD一樣,具有內同步方式和外同步方式兩種
a.內同步方式:該引腳作為輸出,如果SYNC字符被發(fā)現(xiàn),則變?yōu)?,當CPU讀取狀態(tài)寄存器內容時,它被復位,高電平輸出代表8251A已經同步
b.外同步方式:該引腳作為輸入,當接收到高電平時,表示同步開始,用于通知接收電路開始裝配收到的串行數據,在異步通信時表示Break狀態(tài)出現(xiàn)在RXD線上,輸入上升沿使8251A在下一個RXC的下降沿開始裝載數據
(12)發(fā)送準備就緒TXRDY:可以作為CPU的中斷請求信號,當傳送寄存器空或者CTS引腳為0或者控制字的TXEN=1時該引腳置1
(13)接收準備就緒RXRDY:用于通知CPU芯片已經接收到一個字符,8251A每接收到一個字符該引腳置1,CPU取走后,該引腳變?yōu)?
(14)數據命令選擇C/D:CPU向8251A寫入時,該引腳為1選擇命令,為0選擇數據;當CPU向8251A讀取時,該引腳為1用于選擇狀態(tài),為0選擇數據
(15)DTR:8251A輸出給Modem表示8251A已經準備就緒
(16)RTS:8251A輸出給Modem表示8251A已經準備傳送數據
(17)DSR:表示Modem已經準備好
(18)數據發(fā)送TXD:發(fā)送數據
(19)數據接收RXD:接收數據
4.1.2 內部結構框圖
4.1.3 寄存器詳解
(1)8251A的模式字
模式字用于設置8251A的工作模式:同步/異步方式,數據位,奇偶校驗位,校驗方式與停止位的個數等。
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
S2/SCS | S1/ESD | EP | PEN | L2 | L1 | B2 | B1 |
D7~D6:這兩位在同步方式與異步方式下含義不一樣,具體配置如下表所示
S2/SCS | S1/ESD | 停止位個數 | |
---|---|---|---|
異步方式 | 0 | 0 | 無效 |
0 | 1 | 1位 | |
1 | 0 | 1.5位 | |
1 | 1 | 2位 |
同步方式 | S2/SCS | 0 | 2個SYNC字符 |
---|---|---|---|
1 | 1個SYNC字符 | ||
S1/ESD | 0 | 內字符同步 | |
1 | 外字符同步 |
D5:奇偶校驗方式選擇,僅在PEN=1時有效
0:奇校驗
1:偶校驗
D4:奇偶校驗位開關
0:關閉校驗
1:開啟校驗
D3~D2:數據位的位數,具體配置如下表所示
L2 | L1 | 數據長度 |
---|---|---|
0 | 0 | 5位 |
0 | 1 | 6位 |
1 | 0 | 7位 |
1 | 1 | 8位 |
D1~D0:工作模式設置(同步/異步方式和波特率因子的配置),其中波特率因子定義為時鐘與波特率的比值。
B2 | B1 | 工作方式 | 波特率因子 |
---|---|---|---|
0 | 0 | 同步 | 1 |
0 | 1 | 異步 | 1 |
1 | 0 | 異步 | 16 |
1 | 1 | 異步 | 64 |
(2)8251A的控制字
控制字用于控制8251A的基本功能,如是否允許接收或發(fā)送數據,與Modem連接的控制信號,軟件復位等。
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
RH | IR | RTS | ER | SBRK | RXE | DTR | TXEN |
D7:接收電路尋找同步字符
0:尋找方式停止
1:尋找方式開始
D6:用于內部復位
0:下一個字符不為模式字
1:下一個字符為模式字
D5:該位為0芯片RTS輸出高電平,為1芯片RTS輸出低電平
D4:將狀態(tài)寄存器中的奇偶位錯誤,停止位錯誤,溢出錯誤標志復位
0:不影響PE,OE,F(xiàn)E
1:使PE,OE,F(xiàn)E復位
D3:強迫TXD變?yōu)榈碗娖?/p>
0:正常工作
1:送Break狀態(tài),即TXD=0
D2:接收使能
0:不允許接收
1:允許接收
D1:控制8251A引腳的信號
0:使輸出端DTR=1
1:使輸出端DTR=0
D0:發(fā)送使能
0:不允許發(fā)送
1:允許發(fā)送
(3)8251A的狀態(tài)字
狀態(tài)字用于反映8251A在傳送數據過程中所出現(xiàn)的各種狀態(tài)。
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
DSR | SYNDET/BD | FE | OE | PE | TEX | RXRDY | TXRDY |
D7:將引腳DSR置為0
0:輸入端DSR=1
1:輸入端DSR=0
D6:檢測到SYNC或者Break后該位置1
D5:停止位錯誤
0:停止位正常
1:停止位出錯
D4:數據溢出錯誤
0:數據沒有溢出
1:數據溢出
D3:奇偶校驗錯誤
0:奇偶校驗正常
1:奇偶校驗出錯
D2:發(fā)送寄存器空標志
0:發(fā)送寄存器非空
1:發(fā)送寄存器空
D1:接收就緒標志
0:接收寄存器空
1:接收寄存器非空
D0:發(fā)送就緒標志
0:發(fā)送寄存器非空
1:發(fā)送寄存器空
4.3 串口通信配置流程
由于8251A芯片是通過順序來識別寫入的數據的,所以首先寫入的是模式字,然后寫入控制字,這兩個均屬于命令,然后寫入數據即可。
4.4 源代碼
例題:利用8251A發(fā)送一串字符串,要求串口波特率9600,無校驗位,停止位1個,數據位8個。
解析過程:由于波特率是9600KBps,根據公式,波特率等于時鐘與波特率因子的比值,這個時鐘指的是發(fā)送與接收的時鐘。根據硬件的連接表如下圖所示
CS | C/D | RD | WR | 功能 |
---|---|---|---|---|
0 | 0 | 0 | 1 | 讀取8251A的數據 |
0 | 1 | 0 | 1 | 讀取8251A的命令 |
0 | 0 | 1 | 0 | 8251A寫入數據 |
0 | 1 | 1 | 0 | 8251A寫入命令 |
0 | × | 1 | 1 | 8251A數據總線緩沖器為高阻態(tài) |
1 | × | × | × | 未選中 |
根據表格的代碼可知,寫入模式字和控制字的地址為20H(因為A5接在C/D上),寫數據的地址為00H。根據上述分析,源代碼如下圖所示:
-
接口
+關注
關注
33文章
8598瀏覽量
151163 -
計算機系統(tǒng)
+關注
關注
0文章
282瀏覽量
24115 -
串行通信
+關注
關注
4文章
572瀏覽量
35399
發(fā)布評論請先 登錄
相關推薦
評論