51微控制器序列通訊原理

學習少年的天空發表於2020-11-24

計算機通訊

計算機通訊:計算機與外部裝置或計算機之間的資訊交換。基本的通訊方式有兩種。

  1. 並行通訊:將傳送資料位元組的各位用多條資料線同時進行傳送。優點:控制簡單,傳輸速度快。缺點:由於傳輸線較多,長距離傳送成本高且接收方的各位同時接受困難。
  2. 序列通訊:所傳送的資料各位按順序一位一位地傳送或接收。優點:傳輸線少,成本低。缺點:控制複雜。

序列通訊

非同步通訊

通訊的傳送與接收裝置使用自己的時鐘控制資料的傳送和接收過程(兩個時鐘儘可能一致)。
資料或字元是一幀一幀地傳送的。先用一個起始位0表示字元的開始,然後是8位資料,規定低位在前,高位在後。其後是奇偶校驗位,此位通過對資料奇偶性的檢查,可用於判別字元傳送的正確性(可省略)。最後是停止位,用以表示字元的結束。

同步通訊

傳送方時鐘對接收方時鐘的完全控制,保持位同步關係也保持字元同步關係。

資料傳送速率

波特率: 每秒鐘傳送二進位制程式碼的位數
單位:位/秒,bps
傳輸距離隨傳輸速率增加而減少。
調變解調器:由於距離太遠時,要先採用調製器把數字訊號轉換位模擬訊號,並加以放大在傳送。在接收時,在用解調器把模擬訊號轉換成數字訊號在送入計算機介面。

傳輸方向

單工:資料傳輸僅能沿一個方向
半雙工:資料傳輸可以沿兩個方向,但要分時進行。
全雙工:資料可以同時進行雙向輸出


微控制器序列口

內部硬體結構:兩個物理上獨立的接受、傳送緩衝器SBUF。傳送緩衝器只能寫入不能讀出。接收緩衝器只能讀出不能寫入。

序列口特殊功能暫存器

序列口控制暫存器SCON

符號位元組地址位名稱位名稱位名稱位名稱位名稱位名稱位名稱位名稱復位值
SCON98HSM0/FESM1SM2RENTB8RB8TIRI0000 0000
  1. RI:接收中斷標誌位。在方式0時,接收完第8位資料時,RI由硬體自動置1。在其他方式中,序列接收到停止位時,該位置1。RI=1,表示一幀資料接收完畢,並申請中斷,要求CPU從接收SBUF取走資料。
  2. TI:傳送中斷標誌位。。在方式0時,傳送完第8位資料時,TI由硬體自動置1。在其他方式中,序列傳送停止位的開始時,該位置1。TI=1,表示一幀資料傳送完畢,並申請中斷,在 CPU響應中斷後,在中斷服務程式中向SBUF寫入要傳送的下一幀資料。
  3. RB8:接收的第9位資料。在方式1時,若SM2=0,RB8接收到的停止位。在方式0中。不使用RB8.
  4. TB8:傳送的第9位資料。其值由軟體置1或清0。在雙機序列通訊時,一般作為奇偶校驗位使用;在多級序列通訊中用來表示主機傳送的是地址幀還是資料幀,TB9=1為地址幀,TB8=0為資料幀。在方式0和方式1中,不使用TB8。
  5. REN:允許序列接受位。由軟體置1或清0。REN=1,允許序列口接收資料;REN=0,禁止序列口接收資料。
  6. SM2:多機通訊控制位。在方式2和方式3時進行。如果SM2=1,則只有當接收到的第九位資料(REB)為1時,才使RI置1,產生中斷請求,並將接收到的前8位資料送入SBUF,當接收到的第九位資料位0時,則將接收到的前8位資料丟棄;如果SM2=0,則將前8位資料送入SBUF中,並使RI置1。
  7. SM0/SM1:方式選擇位
SM0SM1工作方式功能說明波特率
00方式08位同步移位暫存器常用於擴充套件I/O口fosc/12
01方式110位URAT8位資料、起始位、結束位可變(由定時器控制)
10方式211位URAT8位資料、起始位0、結束位1和奇偶校驗位fosc/32或fosc/64
11方式311位URAT8位資料、起始位0、結束位1和奇偶校驗位可變(由定時器控制)

fosc=晶振的頻率。
URAT=非同步通訊暫存器


電源控制暫存器PCON

符號位元組地址位名稱位名稱位名稱位名稱位名稱位名稱位名稱位名稱復位值
PCON87HSMODSMOD0POFGF1GF0PDIDL0xx1 0000

僅SMOD、SMOD0兩位與串列埠有關

  1. SMOD0:幀錯位檢測有效控制位。當SMOD0=1時,SCON暫存器中的SM0/FE位用於FE(幀錯誤檢測)功能。當SMOD0=0時,SCON暫存器中的SM0/FE位用於SM0功能。
  2. SMOD:波特率選擇位。(波特率倍增位):在方式2時,SMOD=1要比SMOD=0時的波特率加倍。

波特率的設定與計算

  1. 方式0
    波 特 率 = f o s c 12 波特率=\frac{f_{osc}}{12} =12fosc
  2. 方式2
    波 特 率 = 2 S M O D 64 × f o s c 波特率=\frac{2^{SMOD} }{64} \times{f_{osc }} =642SMOD×fosc
    序列口工作在方式2時,波特率僅與SMOD位的值有關。
  3. 方式1和方式三
    波 特 率 = 2 S M O D 32 × 定 時 器 T 1 的 溢 出 率 波特率=\frac{2^{SMOD} }{32} \times{定時器T1的溢位率} =322SMOD×T1
    T1常設定為方式2定時,即8位重灌入方式,並且不允許T1中斷。可以避免軟體重灌初值帶來的定時誤差。
    定 時 器 1 的 溢 出 率 = 1 溢 出 周 期 = 1 ( 256 − X ) × T c y = f o s c 12 × ( 256 − X ) 定時器1的溢位率=\frac{1 }{溢位週期}=\frac{1}{(256-X)\times{T_{cy}}}=\frac{f_{osc}}{12\times{(256-X)}} 1=1=(256X)×Tcy1=12×(256X)fosc
    式中Tcy為系統機器週期;X為初值

PC與多個微控制器通訊

  1. 採用RS-232標準匯流排通訊
  2. 採用RS-422標準匯流排通訊

串列埠如何使用

序列口工作之前,應對其初始化

  1. 確定T1的工作方式(TMOD);
  2. 計算T1的初值,裝載TH1,TL1;
  3. 啟動T1(TCON中的TR1位)
  4. 確定序列口控制(SCON)
    中斷設定(IE,IP暫存器)

相關文章