久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 單片機學習 > 單片機編程入門 > 單片(pian)機串口協議 六種串口協議特(te)征及范式

單片(pian)機(ji)串(chuan)口協議(yi) 六種(zhong)串(chuan)口協議(yi)特征及范式 時(shi)間:2018-07-24      來源:未知(zhi)

單(dan)片機串口(kou)(kou)協議 六種串口(kou)(kou)協議特征(zheng)及范式

在現(xian)實生活(huo)中(zhong),我們總是(shi)需(xu)要(yao)與(yu)人打(da)交道,彼此之間毫無關系。單(dan)片機(ji)是(shi)相同的(de),它需(xu)要(yao)與(yu)各(ge)種設備交互。例(li)如,汽車的(de)顯示儀器需(xu)要(yao)知道汽車的(de)速度和(he)電(dian)機(ji)的(de)運行參數,然后顯示儀器需(xu)要(yao)從汽車的(de)底部控(kong)制(zhi)器獲(huo)得數據。獲(huo)得該數據的(de)過程(cheng)是(shi)一(yi)個(ge)(ge)通信過程(cheng)。類似的(de)例(li)子是(shi)控(kong)制(zhi)器通常是(shi)單(dan)個(ge)(ge)芯(xin)片或PLC和(he)變頻器之間的(de)通信。溝通的(de)雙方需(xu)要(yao)遵(zun)守一(yi)套(tao)既定的(de)規則,也就是(shi)協議,這就像我們之間的(de)對話,雙方都必(bi)須遵(zun)守一(yi)套(tao)語(yu)言和(he)語(yu)法(fa)規則來實現(xian)對話。

通信協(xie)(xie)(xie)議(yi)又分為硬(ying)件(jian)層(ceng)協(xie)(xie)(xie)議(yi)和軟件(jian)層(ceng)協(xie)(xie)(xie)議(yi)。硬(ying)件(jian)層(ceng)協(xie)(xie)(xie)議(yi)主要規范了物理上的連線,傳輸電平信號及傳輸的秩序等硬(ying)件(jian)性質的內容(rong)。常用的硬(ying)件(jian)協(xie)(xie)(xie)議(yi)有串口,IIC, SPI, RS485, CAN和 USB。軟件(jian)層(ceng)協(xie)(xie)(xie)議(yi)則更側重上層(ceng)應用的規范,比如modbus協(xie)(xie)(xie)議(yi)。

好了,那這里我們就(jiu)簡單(dan)(dan)介紹51單(dan)(dan)片機的串口(kou)通信(xin)協(xie)議(yi),以下(xia)(xia)簡稱串口(kou)。串口(kou)的6個特征如下(xia)(xia)。

(1)、物理上(shang)的連(lian)線至少(shao)3根(gen),分別(bie)是Tx數據發送線,Rx數據接收線,GND共用地線。

(2)、0與(yu)1的約定。RS232電(dian)(dian)(dian)平(ping),約定﹣5V至﹣25V之間(jian)的電(dian)(dian)(dian)壓(ya)(ya)(ya)信號(hao)為(wei)1,﹢5V至﹢25V之間(jian)的電(dian)(dian)(dian)壓(ya)(ya)(ya)信號(hao)為(wei)0 。TTL電(dian)(dian)(dian)平(ping),約定5V的電(dian)(dian)(dian)壓(ya)(ya)(ya)信號(hao)為(wei)1,0V電(dian)(dian)(dian)壓(ya)(ya)(ya)信號(hao)為(wei)0 。CMOS電(dian)(dian)(dian)平(ping),約定3.3V的電(dian)(dian)(dian)壓(ya)(ya)(ya)信號(hao)為(wei)1,0V電(dian)(dian)(dian)壓(ya)(ya)(ya)信號(hao)為(wei)0 。其中,CMOS電(dian)(dian)(dian)平(ping)一般用于ARM芯片中。

(3)、發送秩(zhi)序。低(di)位(wei)先發。

(4)、波特(te)率。收(shou)發雙方共同約定(ding)的(de)一個數(shu)據位(wei)(0或1)在數(shu)據傳(chuan)輸線上維持的(de)時間。也可理解為每秒(miao)可以傳(chuan)輸的(de)位(wei)數(shu)。常(chang)用(yong)的(de)波特(te)率有300bit/s, 600bit/s, 2400bit/s, 4800bit/s, 9600bit/s。

(5)、通信(xin)的(de)起始(shi)信(xin)號。發(fa)送(song)方(fang)(fang)在沒(mei)有發(fa)送(song)數據(ju)時(shi)(shi),應(ying)該將Tx置1 。 當需發(fa)送(song)時(shi)(shi),先將Tx置0,并且保持1位的(de)時(shi)(shi)間。接受方(fang)(fang)不(bu)斷地(di)偵測Rx,如果發(fa)現(xian)Rx常時(shi)(shi)間變高后,突然被(bei)拉低(置為0),則(ze)視為發(fa)送(song)方(fang)(fang)將要發(fa)送(song)數據(ju),迅速啟動自(zi)己(ji)的(de)定(ding)(ding)時(shi)(shi)器,從而保證(zheng)了(le)收發(fa)雙方(fang)(fang)定(ding)(ding)時(shi)(shi)器同步定(ding)(ding)時(shi)(shi)。

(6)、停止(zhi)信號。發送方發送完最后一個(ge)有效位時,必須再(zai)將Tx保持1位的時間,即(ji)為停止(zhi)位。

串口協議開發:

以(yi)下解析范式都是(shi)采用數(shu)據(ju)隊列(lie)的形似來存儲,并且(qie)根據(ju)設備運行速度差異,還需增加數(shu)據(ju)包隊列(lie)來存儲解析完畢的數(shu)據(ju)包

1.范(fan)式一《固定長(chang)度》無(wu)校驗(yan)

0x6B----------20字節(jie)--------0xB6

上面數據中有一個幀(zhen)頭0x6B,幀(zhen)尾0xB6,中間數據20個。

每次數據要找到(dao)幀頭(tou)0x6B才開始存儲,讀取完(wan)22個字(zi)節后結(jie)束儲存,并判(pan)斷最(zui)后一(yi)個字(zi)節是否(fou)為0xB6.

這種(zhong)范(fan)式如果(guo)出(chu)現誤碼,整個包(bao)就會變成錯誤包(bao),會比(bi)較危險。

1.范式二(er)《固定長度》有(you)校(xiao)驗

0x6B----------20字(zi)節--------校驗-0xB6

上(shang)面數(shu)據中有一個(ge)(ge)(ge)幀頭0x6B,幀尾(wei)(wei)0xB6,中間數(shu)據20個(ge)(ge)(ge),幀尾(wei)(wei)前面有一個(ge)(ge)(ge)校驗(yan)碼。

每(mei)次(ci)數(shu)據(ju)要找到幀頭(tou)0x6B才開始存儲,讀取完23個(ge)字節(jie)(jie)后結束儲存,并判斷(duan)最后一個(ge)字節(jie)(jie)是(shi)否為0xB6.

并且判斷校驗碼(ma)。

這種(zhong)范式解決上述出現的誤碼問題。

1.范(fan)式(shi)三(san)《不固定(ding)長度》無校驗

0x6B----------N字節---------0xB6

上面(mian)(mian)數據(ju)中有一個(ge)幀(zhen)頭0x6B,幀(zhen)尾0xB6,中間數據(ju)N個(ge),幀(zhen)尾前面(mian)(mian)有一個(ge)校驗碼(ma)。

每次(ci)數據(ju)要找到幀頭0x6B才開始(shi)存儲,讀取到0xB6后(hou)(hou)結(jie)束儲存,并判斷最后(hou)(hou)一(yi)個(ge)字節是(shi)否(fou)為0xB6.

 這種范式會出(chu)現(xian)錯誤(wu)解包的問題,例如(ru)數(shu)據(ju)中出(chu)現(xian)了0xB6的數(shu)據(ju),這個包就丟了。

依然會(hui)有誤碼的(de)問(wen)題。

1.范式四(si)《不固定(ding)長(chang)度》有校驗

0x6B----------N字(zi)節(jie)--------校驗-0xB6

 上面數據中有一個(ge)幀(zhen)頭(tou)0x6B,幀(zhen)尾0xB6,中間數據N個(ge),幀(zhen)尾前面有一個(ge)校驗碼。

每(mei)次數據要找到(dao)幀(zhen)頭(tou)0x6B才開始存儲,讀取到(dao)0xB6后結束儲存,并判斷最(zui)后一個(ge)字節是否為0xB6.

并且(qie)判斷校(xiao)驗(yan)碼。

這種范式解決上述出現的誤碼問題。

這種范式會出現錯誤解包的問題(ti),例如數(shu)據中出現了0xB6的數(shu)據,這個包就丟了。

1.范式(shi)五《不(bu)固定長度》有校驗,加入轉義(yi)字符

0x6B----------N字節--------校驗-0xB6

如果數(shu)(shu)據中有0xB6數(shu)(shu)據,那么數(shu)(shu)據包就(jiu)被提前結束了,并不是我們想要的(de)數(shu)(shu)據。

這(zhe)里(li)需(xu)要加入轉義字符(fu)

0xB6 -> 0xBf,0x01

0xBf -> 0xBf,0x02

上面數據中有一個(ge)幀頭0x6B,幀尾0xB6,中間數據N個(ge),幀尾前面有一個(ge)校驗碼。

每次數據要找(zhao)到幀頭0x6B才開始存儲,讀取(qu)到0xB6后(hou)結(jie)束儲存,并判斷最后(hou)一個(ge)字節是否為0xB6.

并(bing)且判斷校驗碼。

需要(yao)去解析(xi)特定的轉義字(zi)符

這種范(fan)式解決上述出現的誤碼問(wen)題。

這種范式不會(hui)出現錯誤解包的問題。

1.范式6《不(bu)固定(ding)長度》有校驗

0x6B-0xB6-N數(shu)據長度(du)---------N字節--------校驗(yan)

上面數據中(zhong)(zhong)有(you)一(yi)個幀(zhen)頭0x6B,0xB6,數據長度,中(zhong)(zhong)間數據N個,校(xiao)驗碼(ma)。

每次(ci)數(shu)據(ju)要(yao)找到幀頭0x6B才開始存儲,讀(du)取(qu)到數(shu)據(ju)長度后讀(du)取(qu)對應長度,再讀(du)取(qu)一個校驗碼。

判斷(duan)校驗碼即(ji)可。

這種范式解決上(shang)述出現的(de)誤碼問題。

這種(zhong)范式不(bu)會(hui)出現錯誤解包(bao)的問題。

上一篇:單片機類型分類 常見的單片機有哪些類型

下一篇:零基礎單片機自學要多長時間呢?這些你知道嗎

熱(re)點文(wen)章推薦
華清學員(yuan)就業榜單(dan)
高薪學員(yuan)經驗分享
熱(re)點新聞推薦
前臺專線:010-82525158 企業培訓洽(qia)談專線:010-82525379 院(yuan)校合作洽談專(zhuan)線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部