大家好,我是小小的電子之路,這是我的第7篇原創(chuàng)文章,很高興與大家一起分享~
原文出自微信公眾號【小小的電子之路】
串口是串行接口的簡稱,串行接口是采用串行通信方式的接口。串行通信是一種將需要傳輸?shù)臄?shù)據(jù)由低位到高位一位一位地在一條傳輸線上逐個傳輸?shù)耐ㄐ欧绞健?/p>
一、串行通信的數(shù)據(jù)格式
首先來了解一下串行通信的數(shù)據(jù)格式,如下圖所示,串行通信的一幀數(shù)據(jù)由起始位、數(shù)據(jù)位、校驗位以及停止位組成。
起始位:低電平,標志著一幀數(shù)據(jù)的開始;
數(shù)據(jù)位:數(shù)據(jù)內(nèi)容,可選擇為5、6、7、8位;
校驗位:用于確保傳輸數(shù)據(jù)的正確性,可分為奇校驗和偶校驗。奇校驗時數(shù)據(jù)位和校驗位中1的總數(shù)應(yīng)為奇數(shù),同理,偶校驗時數(shù)據(jù)位和校驗位中1的總數(shù)應(yīng)為偶數(shù);
停止位:高電平,標志著一幀數(shù)據(jù)的結(jié)束。
二、異步串行通信的波特率
串行通信可以分為兩種形式:同步串行通信和異步串行通信。
同步串行通信:通信雙方在同一時鐘控制下同步傳輸數(shù)據(jù);
異步串行通信:通信雙方使用各自的時鐘控制數(shù)據(jù)傳輸。
對于異步串行通信來說,雖然沒有同步時鐘,但是通信雙方必須約定并遵循同樣的設(shè)置,這就需要異步串行通信中一個重要的參數(shù)來設(shè)置,該參數(shù)即波特率。
波特率即串口通信的速率,它表示每秒傳輸二進制數(shù)據(jù)的位數(shù),單位是bps,即位/秒,常用的波特率有9600、19200、38400、57600和115200等。
以115200的波特率為例,即一秒傳輸115200個二進制數(shù)據(jù)位,那么每一位的持續(xù)時間
因此,在通信雙方約定波特率為115200的情況下,只要發(fā)送方發(fā)送的每位比特位的持續(xù)時間為8.68us,那么正常情況下接收方就能準確無誤地解析數(shù)據(jù)。
三、實驗測試
接下來利用實驗來簡單驗證一下上述分析:波特率為115200,一位停止位,八位數(shù)據(jù)位,無奇偶校驗位,發(fā)送數(shù)據(jù)為10110101,每組發(fā)送間隔100us。
1、仿真測試
仿真測試結(jié)果如下圖所示,可以看出,發(fā)送的二進制數(shù)據(jù)依次為0101011011,每個比特位持續(xù)時間為8680ns,數(shù)據(jù)發(fā)送間隔為117360-2×8680=100000ns,均符合設(shè)計要求。
2、輸出波形測試
下載程序,測試對應(yīng)引腳的輸出波形,如下圖所示,可以看出與仿真結(jié)果基本相符。
3、通信測試
通過上位機的串口調(diào)試助手接收發(fā)送的數(shù)據(jù),通過下圖所示的結(jié)果可以看出,接收到的數(shù)據(jù)為0xB5,對應(yīng)的二進制數(shù)據(jù)為0b10110101,與發(fā)送端發(fā)送數(shù)據(jù)相符,通信成功。
以上就是本次分享的全部內(nèi)容,謝謝大家!