理論概念
不同型號的單片機使用的串口不同,根據(jù)需求選擇相應(yīng)的單片機,在有些場合如果單片機如果沒有需要的串行通信接口,則可以通過單片機的I/O口進行模擬。
UART有兩種工作狀態(tài):
同步串行通信狀態(tài):速率高,硬件電路復(fù)雜,需要同時使用兩條信號線,所以只能使用單工方式或半雙工方式工作。
異步串行通信狀態(tài):方式簡單,傳輸速率不高,應(yīng)用廣泛,方便與其他通信標準進行銜接。
異步傳輸工作方式:
傳輸效率較低,起始位,校驗位,停止位占用的位較多
數(shù)據(jù)格式:
同步傳輸工作方式:
雙方同時使用兩條通信線:
一條用于產(chǎn)生時鐘并要求發(fā)送和接受的雙方必須保持完全同步(一般情況下,時鐘信號由發(fā)送端提供)。另一條用于傳送數(shù)據(jù)。如果需要雙向數(shù)據(jù)傳輸,需要再多添加兩條通信線(MCS-51不支持同時的雙向數(shù)據(jù)同步傳輸,只能使用分時復(fù)用)。除了用于通信外,同步方式還可以用于I/O口的擴展,與74LS164聯(lián)合使用時擴展成輸出口,與74LS165聯(lián)合使用時擴展成輸入口。因為沒有附加起始位和停止位,所以傳輸效率較高,一旦發(fā)現(xiàn)數(shù)據(jù)出錯,所有的數(shù)據(jù)都需要重新傳輸,大量數(shù)據(jù)一次性傳輸時錯誤的概率較高。遠距離通信時,通過調(diào)試解調(diào)從數(shù)據(jù)流中提取同步信號,用鎖相的技術(shù)使接收方得到與發(fā)送方相同的時鐘信號。時鐘信號線與數(shù)據(jù)線分離可以實現(xiàn)高效率、大容量的數(shù)據(jù)通信。
數(shù)據(jù)格式:
使用方式
使用的寄存器:
串行接口寄存器 SCON:規(guī)定了串行通信的方式和功能,可以選擇通信模式/允許接收/檢查狀態(tài)位
電源控制寄存器 PCON
SMOD = 0 波特率為原值;
SMOD為1 波特率提高一倍。
只有SMOD位對串口通信有影響
注:該寄存器不能進行位尋址,只能整字節(jié)操作。
工作方式:
p.s.:UART有一個接收數(shù)據(jù)緩沖區(qū),當上一個字節(jié)未被處理時下一個字節(jié)收入緩沖區(qū)。但如果在下一個字節(jié)接收完畢時前一字節(jié)還未處理,則上一個字節(jié)會被覆蓋掉。因此軟件必須在下一個字節(jié)接收完畢之前處理上一個字節(jié)(當連續(xù)發(fā)送字節(jié)時也是如此)。
用途:可以用來和某些具有8位串行口的EEPROM器件通信
原理:
RXD從低位開始收發(fā)數(shù)據(jù),TXD從發(fā)送同步移位脈沖。
向SBUF寫入字節(jié)時開始發(fā)送數(shù)據(jù),發(fā)送完畢后TI位置位。
置位REN時,開始接收數(shù)據(jù),接收完8位數(shù)據(jù)后RI位置位。
方式1:10位數(shù)據(jù)的異步通信口,波特率可變(與T1的溢出率有關(guān))。RXD為數(shù)據(jù)接收,TXD為數(shù)據(jù)發(fā)送。
數(shù)據(jù)幀格式:
原理:
軟件置REN為1時,接收器選擇波特率為16倍速率采樣RXD引腳電平,當檢測到RXD引腳輸入電平發(fā)生負跳變(1-》0)說明起始位有效,移入輸入移位寄存器并開始接收這一幀信息的其余位。需要手動清零
接收過程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時,控制電路進行最后一次移位。當RI=0且SM2=0(或接收到的停止位為1)時,接收到的9位數(shù)據(jù)的前8位裝入接收SBUF,第9位(停止位)進入RB8并置RI=1,向CPU請求中斷。RI需要手動清零
波特率計算裝入TH1的初值:
p.s. SMOD=0時,K=1;SMOD=1時,K=2;
代碼示例:
1 #include 2 main() 3 { 4 TMOD = 0x20; 5 SM0 = 0; 6 SM1 = 1; 7 REN = 1; 8 PCON = 0; 9 TH1 = 0xFD; //253=256-(1*11.0592*10^6)/(384*9600) 10 TL1 = 0xFD; 11 TR1 = 1; 12 P1 = SBUF; 13 while(!RI); 14 RI = 0; 15 SBUF = P1; 16 while(!TI); 17 TI = 0; 18 }
數(shù)據(jù)幀格式:起始位1位,數(shù)據(jù)9位(第9位在發(fā)送時為TB8,接收時為RB8)
原理:
發(fā)送開始時,先把起始位0輸出到TXD引腳,然后發(fā)送移位寄存器的輸出位D0到TXD引腳,每一個移位脈沖都使輸出移位寄存器的各位向右移一位,并由TXD引腳輸出。第一次移位時,停止位“1”移入輸出移位寄存器的第9位,以后每次移位左邊都移 入0。當停止位移至輸出位時,左邊其余位全為0,當檢測到這一條件時,控制電路進行最后一次移位并置TI=1,請求中斷。需要手動清零
接收數(shù)據(jù)時,數(shù)據(jù)從右邊移入輸入移位寄存器,在起始位0移到最左邊時,控制電路進行最后一次移位。當RI=0且SM2=0(或接收到的第9位數(shù)據(jù)為1)時,接收到的數(shù)據(jù)裝入接收緩沖器SBUF和RB8(接收數(shù)據(jù)的第9位),置RI=1,向CPU請求中斷。如果條件不滿足,則數(shù)據(jù)丟失且不置位RI,繼續(xù)搜索RXD引腳的負跳變。
代碼示例:多機互聯(lián)
1 TMOD = 0x20; 2 TH1 = 0xFD; 3 TL1 = 0xFD; 4 PCON = 0x00; 5 TR1 = 1; 6 SCON = 0xF8; 7 SBUF = 0x01; 8 while(!TI); 9 TI = 0; 10 P3_5 = 0; 11 SM2 = 0; 12 while(!RI); 13 RI = 0; 14 P2 = SBUF; 15 SM2 = 1; 16 P3_5 = 1;
波特率的計算:
當T1用作波特率發(fā)生器時,最典型的用法是使T1工作再自動重裝8位定時器方式(方式2),溢出率取決于TH1中的計數(shù)值
常見波特率對照表
-
單片機
+關(guān)注
關(guān)注
6039文章
44579瀏覽量
636453 -
串口
+關(guān)注
關(guān)注
14文章
1555瀏覽量
76665
原文標題:串口工作原理知識點匯總
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論