嵌入式(二十六):波特率&串行通信協議

1、檢錯信息編碼:
a、校驗:知道錯了,但不知道在哪裏
b、糾錯:知道錯了,並知道錯在哪裏
c、奇偶校驗碼:每個數據加一個額外奇偶校驗位/發現錯誤
①、奇校驗碼——數據中包含奇數個“1”
②、偶校驗碼——數據中包含偶數個“1”
d、格雷碼:兩個相鄰代碼之間,僅有一位不同/減少誤差
e、海明碼:海明距離的編碼/發現錯誤、糾正錯誤。海明距離:兩個數的編碼中不相同的數據位數
2、數據塊校驗:
a、簡單的累加和
b、異或校驗
c、循環冗餘校驗(CRC校驗)
3、波特率與發送/接收時鐘
a、波特率:單位時間內傳送二進制數據的位數(b/S)
b、發送/接收時鐘:接收方往往採用比波特率高的時鐘來採樣
c、波特因子:接收/發送1位所需的時鐘個數(1、16、64),一般同步取1,異步取16
d、傳送距離與傳送速率,隨着波特率的增加,傳送的距離越低。只要能滿足需要,選更低的波特率。
4、數據流的定界:串行通信數據流的定界問題
a、RS232/485/422起始位:空閒爲“1”,一個有效的“0”表示一個數據傳送開始
b、SPI起始位:一個有效片選信號啓動一次通信(訪問)過程
c、IIC起始位:一個有效起始條件(時鐘爲“1”時,數據從“1”到“0”)啓動一次通信(訪問)過程
5、“同步”與“異步”通信:
a、核心是雙方是否共用一個時鐘
b、同步串行通信:
①、收/發雙方共用一個時鐘信號
②、不需要預先約定波特率,波特率因子可爲1,通信速率高
③、一次可以傳送一個數據塊
④、雙方的時鐘需要額外加一根時鐘線或通過信號編碼 ,將時鐘信息編在信號內
c、異步串行通信:
①、收/發雙方各用自己時鐘信號,時鐘信號不需傳送
②、需要事先約定或通過其它方法商定/測定好通信波特率
③、由於雙方時鐘總會存在/允許存在偏差,故不能有效傳送多個bit。所以,異步通信往往以字節(較少bit數)爲單位進行通信
6、串行通信協議:
a、通信協議:通信雙方的一種約定
b、串行通信需要約定的內容:
①、同步方式
②、通信速度
③、檢錯糾錯方式
④、數據格式
⑤、信號、電平
⑥、控制信號/字符
⑦、等等
7、RS232串行通信協議(COM串行口)
a、接口信號
b、信號電平:“0”:+5到+15;“1”:-5到-15
c、數據格式:
在這裏插入圖片描述
d、注意:
①、異步串行
②、通信單位:字符
③、最少連接線:全雙工 3根 (GND、RXD、TXD)
半雙工 2根 (GND、RXD+TXD)
單工 2根 (GND、RXD/TXD)
④、數據位:5~8(9)位
⑤、停止/空閒:“1”,多餘1位
⑥、定界:空閒“1”,起始位“0”
⑦、錯誤檢測:“奇/偶” 校驗,1位
⑧、先傳送低位
e、TTL<->RS232電平轉換接口
①、有±12V供電的場合:不需要電壓轉換
TTL電平 -> EIA電平:MC1488、75150
EIA電平 -> TTL電平:MC1489、75154
②、單5V、3.3V供電場合:
需要完成電源變換、電平變換
5V:MAX232、MAX202、……
3.3V:MAX3232、MAX3223、……
8、PC機串行通信接口8250
a、8250主要功能
①、支持RS232異步通信協議,自動插入/刪除起始位、停止位、奇偶校驗位
②、數據位5~8位,停止位1、1.5、2
③、波特率可編程,波特率因子:16
④、有與MODEM接口信號
⑤、多種中斷源輸出:發完一個字符、收到一個字符、數據幀錯、校驗錯、溢出等
⑥、發送、接收均爲雙緩衝器結構
b、注意:
①、與PC機接口類似8255
②、PC機系統看8250
10個可訪問的寄存器
基地址:COM1:3F8h
COM2:2F8h
偏移地址:0~6
接收/發送緩衝寄存器各一個,用同一地址
DLAB位爲“0/1”,+0、+1訪問不同單元
③、寄存器有隻讀、只寫、可讀寫之分
④、波特率的控制
⑤、發送過程
⑥、接收過程
⑦、傳輸控制:數據位數、奇偶校驗、停止位等
⑧、傳輸狀態:發送/接收器工作狀態
⑨、中斷控制:中斷開放、中斷源
⑩、MODEM邏輯

9、MCS51串行通信接口:
a、SBUF:發送數據緩衝器,類似於PC端的一個緩衝區,是兩個寄存器,但用戶看來是一個,即同樣功能的同樣名字的寄存器。
在這裏插入圖片描述
b、串口發送:內部總線並行輸入八位數據,寫入SBUF,然後通過內部移位脈衝(定時器)一位一位通過TXD引腳發送出來,發送完成後,給計算機發送一個TI中斷,然後再進行下一個字節的並行串行轉換。這裏的移位脈衝就是我們的波特率。
c、串口接收:將RXD引腳接受到的串行移位數據給一個移位寄存器,通過移位脈衝(即我們規定的波特率)進行判斷,即通過一個下降沿檢測,記錄多長時間當成一個比特,當收到一個字節的時候,產生一個RI中斷,高速計算機我接受到了一個比特,然後將移位寄存器中的數據給SBUF,此時已經是八位的並行數據,然後發送到內部總線。
d、注意:
寄存器爲:SBUF和SCON
波特率因子爲:16
發送接收過程:
在這裏插入圖片描述
e、控制與狀態:通過SCON寄存器實現
SCON(SM0 SM1 SM2 REN TB8 RB8 TI RI)
①、SM0 SM1:選擇4種工作模式
②、SM2:用於多機通信(1:表示發送ID,0:數據)
③、REN:允許接收
④、TB8 RB8:9bit方式時的D8
⑤、TI RI:中斷標誌位
f、波特率:
固定(方式0、2)或可變:定時器1溢出速率(方式1、3)
波特率=2SMOD定時器1溢出速率/32
定時器1 (方式2)溢出速率=Fosc/12/(256-TH1)
初值 TH1=256-2SMOD
Fosc/12/32/波特率)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章