理論概念
不同型號的單片機使用的串口不同,根據需求選擇相應的單片機,在有些場合如果單片機如果沒有需要的串行通信接口,則可以通過單片機的I/O口進行模擬。
UART有兩種工作狀態:
同步串行通信狀態:速率高,硬件電路復雜,需要同時使用兩條信號線,所以只能使用單工方式或半雙工方式工作。
異步串行通信狀態:方式簡單,傳輸速率不高,應用廣泛,方便與其他通信標準進行銜接。
異步傳輸工作方式:
傳輸效率較低,起始位,校驗位,停止位占用的位較多
數據格式:
同步傳輸工作方式:
雙方同時使用兩條通信線:
一條用于產生時鐘并要求發送和接受的雙方必須保持完全同步(一般情況下,時鐘信號由發送端提供)。另一條用于傳送數據。如果需要雙向數據傳輸,需要再多添加兩條通信線(MCS-51不支持同時的雙向數據同步傳輸,只能使用分時復用)。除了用于通信外,同步方式還可以用于I/O口的擴展,與74LS164聯合使用時擴展成輸出口,與74LS165聯合使用時擴展成輸入口。因為沒有附加起始位和停止位,所以傳輸效率較高,一旦發現數據出錯,所有的數據都需要重新傳輸,大量數據一次性傳輸時錯誤的概率較高。遠距離通信時,通過調試解調從數據流中提取同步信號,用鎖相的技術使接收方得到與發送方相同的時鐘信號。時鐘信號線與數據線分離可以實現高效率、大容量的數據通信。
數據格式:
使用方式
使用的寄存器:
串行接口寄存器 SCON:規定了串行通信的方式和功能,可以選擇通信模式/允許接收/檢查狀態位
電源控制寄存器 PCON
SMOD = 0 波特率為原值;
SMOD為1 波特率提高一倍。
只有SMOD位對串口通信有影響
注:該寄存器不能進行位尋址,只能整字節操作。
工作方式:
p.s.:UART有一個接收數據緩沖區,當上一個字節未被處理時下一個字節收入緩沖區。但如果在下一個字節接收完畢時前一字節還未處理,則上一個字節會被覆蓋掉。因此軟件必須在下一個字節接收完畢之前處理上一個字節(當連續發送字節時也是如此)。
用途:可以用來和某些具有8位串行口的EEPROM器件通信
原理:
RXD從低位開始收發數據,TXD從發送同步移位脈沖。
向SBUF寫入字節時開始發送數據,發送完畢后TI位置位。
置位REN時,開始接收數據,接收完8位數據后RI位置位。
方式1:10位數據的異步通信口,波特率可變(與T1的溢出率有關)。RXD為數據接收,TXD為數據發送。
數據幀格式:
原理:
軟件置REN為1時,接收器選擇波特率為16倍速率采樣RXD引腳電平,當檢測到RXD引腳輸入電平發生負跳變(1-》0)說明起始位有效,移入輸入移位寄存器并開始接收這一幀信息的其余位。需要手動清零
接收過程中,數據從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時,控制電路進行最后一次移位。當RI=0且SM2=0(或接收到的停止位為1)時,接收到的9位數據的前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 }
數據幀格式:起始位1位,數據9位(第9位在發送時為TB8,接收時為RB8)
原理:
發送開始時,先把起始位0輸出到TXD引腳,然后發送移位寄存器的輸出位D0到TXD引腳,每一個移位脈沖都使輸出移位寄存器的各位向右移一位,并由TXD引腳輸出。第一次移位時,停止位“1”移入輸出移位寄存器的第9位,以后每次移位左邊都移 入0。當停止位移至輸出位時,左邊其余位全為0,當檢測到這一條件時,控制電路進行最后一次移位并置TI=1,請求中斷。需要手動清零
接收數據時,數據從右邊移入輸入移位寄存器,在起始位0移到最左邊時,控制電路進行最后一次移位。當RI=0且SM2=0(或接收到的第9位數據為1)時,接收到的數據裝入接收緩沖器SBUF和RB8(接收數據的第9位),置RI=1,向CPU請求中斷。如果條件不滿足,則數據丟失且不置位RI,繼續搜索RXD引腳的負跳變。
代碼示例:多機互聯
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用作波特率發生器時,最典型的用法是使T1工作再自動重裝8位定時器方式(方式2),溢出率取決于TH1中的計數值
常見波特率對照表
-
單片機
+關注
關注
6043文章
44621瀏覽量
638625 -
串口
+關注
關注
14文章
1558瀏覽量
77072
原文標題:串口工作原理知識點匯總
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Docker-鏡像的分層-busybox鏡像制作
![Docker-鏡像的分層-busybox鏡像制作](https://file1.elecfans.com/web3/M00/06/0F/wKgZO2eHIVWABdMXAAAXs32FF8s788.png)
Aigtek功率放大器應用:電感線圈的知識點分享
![Aigtek功率放大器應用:電感線圈的<b class='flag-5'>知識點</b>分享](https://file1.elecfans.com//web3/M00/04/41/wKgZO2dx_leAVMfAAAXXplP3dbU965.png)
后悔沒有早點看到:天線設計中的知識點!
![后悔沒有早點看到:天線設計中的<b class='flag-5'>知識點</b>!](https://file1.elecfans.com/web3/M00/03/7B/wKgZO2dpElSAM8gWAACQRmlorfs337.png)
UWB模塊工作原理 UWB模塊應用案例
成像器件的工作原理是什么
VCA821的AGC電路的工作原理是什么?
一篇搞定DCS系統相關知識點
![一篇搞定DCS系統相關<b class='flag-5'>知識點</b>](https://file1.elecfans.com//web2/M00/C5/D7/wKgZomYCpiOAakfcAAGWO8D1Gg0039.png)
激光打標機工作原理介紹
![激光打標機<b class='flag-5'>工作原理</b>介紹](https://file1.elecfans.com/web2/M00/C1/34/wKgaomXUPhSAQErZAABNnAWDgpE402.png)
評論