河南中光學(xué)集團(tuán)研發(fā)中心 呂瑞云
所謂串行通信,就是將數(shù)據(jù)和控制信息分成一個(gè)個(gè)的二進(jìn)制位(bit),然后通過(guò)一個(gè)通信信道逐位按順序傳輸,實(shí)現(xiàn)計(jì)算機(jī)與外部設(shè)備之間的數(shù)據(jù)交換。串行通信和并口相比,速度慢,但傳送數(shù)據(jù)距離遠(yuǎn),因此,常應(yīng)用于需要長(zhǎng)距離通信而對(duì)速度要求不太高的場(chǎng)合。串行通信因其占用硬件資源少、可有效降低成本、簡(jiǎn)化通信設(shè)備,在電力通信、自動(dòng)化控制等領(lǐng)域得到了廣泛應(yīng)用。

串行通信的通信方式有以下三種:?jiǎn)喂ぁ腚p工和全雙工。由于單工只能單向傳送數(shù)據(jù),不能反方向傳送數(shù)據(jù),所以應(yīng)用比較廣泛的通信方式是半雙工及全雙工。
目前,比較常用的全雙工通信模式有RS232、RS422等,比較常用的半雙工通信模式有RS485。
RS232由于推出時(shí)間早,傳送距離短、傳輸速度慢,而RS422采用非平衡發(fā)送器和差分接收器,所以允許比RS232使用更高的波特率,而且傳輸距離更遠(yuǎn)。RS232的通信距離在15m左右,而RS422的通信距離可達(dá)1200m(波特率為90000bps時(shí))。
RS485是RS422的變型。RS485是半雙工工作方式,不能同時(shí)發(fā)送或者接收。
串行通訊不但可以實(shí)現(xiàn)將單片機(jī)的數(shù)據(jù)傳輸?shù)接?jì)算機(jī)端,而且也能實(shí)現(xiàn)計(jì)算機(jī)對(duì)單片機(jī)的遠(yuǎn)程控制。由于串行通信接線簡(jiǎn)單,所以在遠(yuǎn)距離傳輸中得到了廣泛的運(yùn)用。
計(jì)算通信速度的單位稱(chēng)為波特率(Baud Rate),波特率是指單位時(shí)間內(nèi)傳送的信息量,其單位為bps(bit/s)。51單片機(jī)串行端口一般有四種工作方式:方式0、方式1、方式2和方式3,方式0和方式2的波特率是固定的,方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率來(lái)控制。

表2

圖2 串行通信程序框圖
在選擇波特率時(shí),首先要考慮系統(tǒng)的通信速率,然后考慮時(shí)鐘頻率及誤差。為了通信的穩(wěn)定,應(yīng)該選擇頻率誤差較小的時(shí)鐘。
在串行通信技術(shù)中,若要進(jìn)行正常的通信,需共同遵守一個(gè)通信規(guī)則的約定,即通信協(xié)議,這個(gè)協(xié)議通常搭建在RS232、RS422等硬件線路基礎(chǔ)上。
通訊協(xié)議一般包含以下功能:信號(hào)的傳送與接收、差錯(cuò)控制、順序控制等。
單片機(jī)、計(jì)算機(jī)之間有了協(xié)議約定,通信雙方才能明白彼此的意圖,以便進(jìn)行下一步動(dòng)作。在系統(tǒng)工作過(guò)程中,當(dāng)單片機(jī)接收到計(jì)算機(jī)機(jī)數(shù)據(jù)信息后,便根據(jù)約定的協(xié)議,完成相應(yīng)的操作。
本協(xié)議的通訊格式見(jiàn)表1。
一幀協(xié)議的格式及示例見(jiàn)表2。
示例協(xié)議每幀共9個(gè)字節(jié),協(xié)議以十六進(jìn)制表示。
STX:幀首,一幀協(xié)議的開(kāi)始標(biāo)志,串口接收數(shù)據(jù)時(shí),總是先尋找?guī)住椎呐潘詫⒂欣谔岣吒魍ㄐ殴?jié)點(diǎn)的接收效率;
ADDR:地址,多機(jī)通信時(shí)使用,可同時(shí)控制多臺(tái)設(shè)備,地址范圍為00-FF,對(duì)應(yīng)十進(jìn)制為0-255。
SIZE:幀長(zhǎng),從幀首到幀尾一幀數(shù)據(jù)的字節(jié)數(shù);
COMMAND:指令碼,根據(jù)實(shí)際通信應(yīng)用需求,應(yīng)用I~2字節(jié)的通信指令碼;本例子的協(xié)議為溫度查詢(xún)協(xié)議,指令碼為“T”“A”,十六進(jìn)制為54、41。
DATA:數(shù)據(jù)碼,跟在指令碼之后的信息場(chǎng),是要傳送的數(shù)據(jù),并不是每一幀都有數(shù)據(jù)碼;
CHK:校驗(yàn),可根據(jù)應(yīng)用需求選擇不同的校驗(yàn)方式,示例的校驗(yàn)為前七個(gè)字節(jié)的異或值。
ETX:幀尾,一幀協(xié)議的結(jié)束標(biāo)志。
51單片機(jī)有一個(gè)全雙工的串行通訊口,因此計(jì)算機(jī)和單片機(jī)之間可以方便地進(jìn)行串口通訊。
當(dāng)使用設(shè)備距離計(jì)算機(jī)超過(guò)15m時(shí),需使用RS422或RS485的通信模式。
串口收發(fā)器采用TI公司的低功耗全雙工RS-422收發(fā)器芯片SN65HVD53,該收發(fā)器可在多種工作速率下實(shí)現(xiàn)交流性能,在RS-422總線上可支持256個(gè)器件。并具有15KV以上的ESD保護(hù)功能,能夠?yàn)镽S-485及RS-422應(yīng)用提供強(qiáng)大可靠的接口。
計(jì)算機(jī)的串口通過(guò)RS232/RS422轉(zhuǎn)換器后,連接到SN65HVD53的TX、RX、DE、RE上,即可進(jìn)行通信。串行通信硬件電路見(jiàn)圖1。
串行通信程序框圖見(jiàn)圖2。


本文對(duì)單片機(jī)的串行通信原理作了介紹,并設(shè)計(jì)了一套完整的通信協(xié)議、硬件電路、軟件程序示例等。本系統(tǒng)已廣泛應(yīng)用于邊海防視頻監(jiān)控系統(tǒng)、機(jī)場(chǎng)防衛(wèi)系統(tǒng)、車(chē)載轉(zhuǎn)臺(tái)系統(tǒng)等200余套產(chǎn)品中。實(shí)踐表明,按照此協(xié)議進(jìn)行的通信數(shù)據(jù)準(zhǔn)確,自適應(yīng)能力強(qiáng),通信可靠,具有在相關(guān)領(lǐng)域推廣的價(jià)值。
[1]單片機(jī)通信技術(shù)與工程實(shí)踐[A].求是科技[C].北京:人民郵電出版社,2005,1.