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