有很多有過(guò)一定嵌入式開(kāi)發(fā)工作經(jīng)驗(yàn)的朋友在從事嵌入式開(kāi)發(fā)的過(guò)程當(dāng)中,主要在嵌入式軟件,界面等方向做的研究較多,但經(jīng)常也會(huì)用串口進(jìn)行調(diào)試程序,只知道串口是用來(lái)傳輸數(shù)據(jù)用的。但串口具體怎么用來(lái)傳輸數(shù)據(jù)卻不太清楚,對(duì)串口的工作原理也是一知半解。接下來(lái)分享下串口具體是怎么用來(lái)傳輸數(shù)據(jù)的。
串行通訊是指僅用一根接收線(xiàn)和一根發(fā)送線(xiàn)就能將數(shù)據(jù)以位進(jìn)行傳輸?shù)囊环N通訊方式。盡管串行通訊的比按字節(jié)傳輸?shù)牟⑿型ㄐ怕?,但是串口可以在僅僅使用兩根線(xiàn)的情況下就能實(shí)現(xiàn)數(shù)據(jù)的傳輸。
典型的串口通信使用3根線(xiàn)完成,分別是地線(xiàn)、發(fā)送、接收。由于串口通信是異步的,所以端口能夠在一根線(xiàn)上發(fā)送數(shù)據(jù)同時(shí)在另一根線(xiàn)上接收數(shù)據(jù)。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶的校驗(yàn)。對(duì)于兩個(gè)需要進(jìn)行串口通信的端口,這些參數(shù)必須匹配,這也是能夠?qū)崿F(xiàn)串口通訊的前提。
串口的定義:“串口”是串行通信接口的簡(jiǎn)稱(chēng),所謂“串行通信”是指數(shù)據(jù)按位依次發(fā)送的通信方式。常見(jiàn)的串口有:RS232和RS485。雖然串口通信誕生的時(shí)間較早,但它仍然活躍在當(dāng)今工業(yè)自動(dòng)化控制領(lǐng)域。今天這篇文章,就帶大家深入了解串口的原理及應(yīng)用。
1、串口能解決什么問(wèn)題?
我們要想解決兩個(gè)設(shè)備間的通訊,就必須約定一個(gè)“通信規(guī)則”來(lái)定義雙方都明白的內(nèi)容。單片機(jī)電子電路中輸出的是TTL電平信號(hào),用 5V 表示二進(jìn)制邏輯 “1”,使用 0V 表示邏輯 “0”。但是光有“1”和“0”,某一時(shí)刻傳遞1bit信息,只能表示2種狀態(tài)信息,如果要傳達(dá)更多信息,就必須增加bit位的數(shù)量,那么串行通訊協(xié)議就應(yīng)運(yùn)而生了,在串行通訊標(biāo)準(zhǔn)中,我們可以用8bit來(lái)表達(dá)一個(gè)ASCII字符,通過(guò)字符組成一個(gè)個(gè)字符串,這樣就可以達(dá)到傳遞更多信息的目的。
在上面的通訊方式中,兩個(gè)通訊設(shè)備的"DB9接口"之間通過(guò)串口信號(hào)線(xiàn)建立連接,串口信號(hào)線(xiàn)中使用"RS-232標(biāo)準(zhǔn)"傳輸數(shù)據(jù)信號(hào)。由于RS-232電平標(biāo)準(zhǔn)的信號(hào)不能被控制器直接識(shí)別,所以這些信號(hào)會(huì)經(jīng)過(guò)一個(gè)"電平轉(zhuǎn)換芯片"轉(zhuǎn)換成控制器能識(shí)別的"TTL校準(zhǔn)"的電平信號(hào),才能實(shí)現(xiàn)通訊。
2、串口間正常通信的第一要素是什么?
通信的雙方已經(jīng)定義好了傳輸一個(gè)字節(jié)(Byte)包含多少位(Bit),都是通過(guò)“0”和“1”按順序依次發(fā)送的,但是又如何來(lái)確定從哪里開(kāi)始接收的信息是有效的呢?這個(gè)就要雙方達(dá)成同步才行,一邊開(kāi)始發(fā),另一邊就同步開(kāi)始收,這個(gè)同步的頻率就是波特率。波特率的定義就是在單位時(shí)間內(nèi)傳輸?shù)淖址膫€(gè)數(shù)。波特率有一定的選擇范圍(并非任意值),常見(jiàn)的波特率有:9600,38400,56000,115200等。還有很多其它的值,通信雙方約定好相同的波特率即可。
3、RS232和RS485有什么區(qū)別?
RS232串口可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的傳輸,RS232接收-發(fā)送端的電信號(hào)是相對(duì)于公共地線(xiàn)(GND)的電壓信號(hào)。當(dāng)電壓在+3V~+15V之間表示邏輯“0”,當(dāng)電壓在-3V~-15V之間表示邏輯“1”。由于電壓值都是相對(duì)于地線(xiàn)的電壓差,其發(fā)送電平與接收電平的差只有2~3V,所以共模抑制能力較差,容易受到共地噪聲和外部干擾的影響,再加上信號(hào)線(xiàn)之間的分布電容,因此其傳送距離最大為約15米,最高數(shù)據(jù)傳輸速率為20kb/s。
為了解決信號(hào)更穩(wěn)定和遠(yuǎn)距離傳輸?shù)膯?wèn)題,發(fā)展成RS485串口協(xié)議,RS485采用差分信號(hào)傳輸,邏輯電壓值不再與地線(xiàn)比較,而是2條傳輸線(xiàn)之間的電壓差來(lái)表示“0”和“1”,這樣即使受到干擾,2條信號(hào)線(xiàn)的電壓同時(shí)發(fā)生變化,二者的電壓差值不變,意味著信號(hào)的傳輸也不會(huì)發(fā)生改變。這樣大大提高了信號(hào)的穩(wěn)定性和傳輸距離。
4、串口轉(zhuǎn)接的不同形式
在我們的實(shí)際應(yīng)用中,會(huì)遇到多種串口轉(zhuǎn)接的情況,我們逐一來(lái)分析如何解決:
4.1 TTL轉(zhuǎn)DB9:通常我們看到的設(shè)備外殼上自帶的DB9串口,都是主板上的TTL電平轉(zhuǎn)換電路引出的,方便我們與其它設(shè)備間通訊連接。一般設(shè)備主板上很少會(huì)預(yù)留4針的TTL電平信號(hào)接口,如果有遇到,那么就需要找到TTL轉(zhuǎn)串口的轉(zhuǎn)接線(xiàn)才能完成與其它外設(shè)的串口連接(如下圖)。按TXD信息發(fā)送,RXD信號(hào)接收,GND地線(xiàn),VCC供電線(xiàn)的對(duì)應(yīng)針位,采用直連的方式接線(xiàn)即可。
4.2 DB9公轉(zhuǎn)公或母轉(zhuǎn)母:實(shí)際應(yīng)用中,如果碰到2個(gè)設(shè)備的DB9接口相同,都是公頭或都是母頭,那么就需要找一條DB9轉(zhuǎn)接線(xiàn),我們以母轉(zhuǎn)母為例,下圖中的轉(zhuǎn)接線(xiàn)兩端都是公頭,正好匹配設(shè)備間的母轉(zhuǎn)母端口,需要注意的是,必須選用交叉轉(zhuǎn)換線(xiàn),因?yàn)橄嗤丝诘脑O(shè)備信號(hào)傳輸接線(xiàn)方式相同,中間需要對(duì)信息收發(fā)進(jìn)行交叉才能正常通訊。
4.3 USB轉(zhuǎn)DB9:我們將電腦與設(shè)備連接的時(shí)候,特別是現(xiàn)在筆記本取消了DB9端口,所以只能通過(guò)電腦USB口與設(shè)備的DB9端口相連,中間需要一條USB轉(zhuǎn)DB9的轉(zhuǎn)接線(xiàn)(如下圖),對(duì)應(yīng)選擇USB轉(zhuǎn)公頭或母頭即可。
4.4 USB轉(zhuǎn)TTL:這種轉(zhuǎn)接板通常用作設(shè)備控制程序調(diào)試,搭配TTL轉(zhuǎn)DB9轉(zhuǎn)接線(xiàn)使用,可以實(shí)現(xiàn)控制程序的調(diào)試,設(shè)備數(shù)據(jù)的讀取。
串口在工業(yè)自動(dòng)化控制中的應(yīng)用非常廣泛,了解完硬件接口的原理,其實(shí)也離不開(kāi)軟件的驅(qū)動(dòng);硬件層協(xié)議像是公路,可以讓車(chē)輛順利通過(guò),而軟件層協(xié)議和程序,更像是交通規(guī)則,可以讓車(chē)輛按指定的方式通行。云燕信息在工業(yè)控制領(lǐng)域積累了豐富的實(shí)施經(jīng)驗(yàn),對(duì)于硬件的組網(wǎng)和軟件的配套開(kāi)發(fā),已經(jīng)形成了一套成熟的物聯(lián)網(wǎng)方案,可以幫助工業(yè)企業(yè)快速搭建物聯(lián)網(wǎng),實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)備的自動(dòng)化控制目標(biāo)。