前面說(shuō)了信息與數(shù)據(jù)的概念,這里要說(shuō)的是與之關(guān)系密切的問(wèn)題——通信。
通信 何為通信?在英文中,通信用Communication表示,這個(gè)詞也有交流的意思。實(shí)際上,通信和交流確實(shí)是一樣的意思。不過(guò)在漢語(yǔ)中,交流常用來(lái)表示人與人之間的交流;而通信一般用于比較專業(yè)正式的場(chǎng)合,也就是所謂的術(shù)語(yǔ)。
人與人之間的交流,是信息交換的過(guò)程;微機(jī)系統(tǒng)或模塊之間的通信,就是數(shù)據(jù)傳輸?shù)倪^(guò)程了。
接口 人在用語(yǔ)言交談時(shí),需要用嘴說(shuō)話,用耳朵聽(tīng),通過(guò)空氣來(lái)傳播。信息的傳遞依賴嘴巴和耳朵來(lái)進(jìn)行發(fā)送和接收。
微機(jī)系統(tǒng)的通信,則利用電、光等媒介。最常用的是電,表現(xiàn)在數(shù)字電路中,就是高低電平的變化。單片機(jī)的IO口能實(shí)現(xiàn)高低電平的收發(fā),認(rèn)為它是一種通信接口。接口是通信所依賴的實(shí)體。
協(xié)議 人在說(shuō)話時(shí),通過(guò)聲帶振動(dòng)、口型的變化發(fā)出不同的聲音。這些聲音按照一定的規(guī)則,承載了我們所要表達(dá)的思想和信息,這套規(guī)則稱為語(yǔ)言。兩個(gè)人對(duì)話,需要使用兩個(gè)人都能理解的語(yǔ)言進(jìn)行,一個(gè)只懂中文和另一個(gè)只懂英文的人,根本沒(méi)法用語(yǔ)言交流(當(dāng)然可以用其他方式,比如面部表情、肢體語(yǔ)言等)。
同樣,微機(jī)系統(tǒng)通信時(shí),也要有這樣一套雙方都遵從的規(guī)定,而這個(gè)規(guī)定被稱為協(xié)議。通信協(xié)議和接口都可以有多種,并且兩者之間存在一定的關(guān)聯(lián)。
接口的種類 在微機(jī)系統(tǒng)中,為了更快速、更準(zhǔn)確、更方便的傳輸數(shù)據(jù),往往會(huì)有各種接口。
數(shù)字接口/模擬接口 這里主要討論電子形式的接口。可分為數(shù)字接口和模擬接口,數(shù)字接口用二進(jìn)制高低電平表示數(shù)據(jù),模擬接口則可以用電壓電流表示信息。模擬形式的接口,最常見(jiàn)的就是音頻接口,也就是耳機(jī)插座。數(shù)字形式的接口,例如我們熟悉的USB接口,前面提到單片機(jī)程序燒寫所用的串口等都是。數(shù)字接口又有很多分類,下面進(jìn)行介紹。
串行口/并行口 數(shù)字接口傳輸?shù)氖嵌M(jìn)制數(shù)據(jù),通常每8位二進(jìn)制數(shù)字組成一個(gè)字節(jié)。并行口用八根線同時(shí)傳輸8位數(shù)據(jù);而串行口則一位一位的傳輸。每隔一段時(shí)間,接口上的電平按照要傳輸?shù)南乱晃粩?shù)據(jù)改變。
同樣的電平切換時(shí)間間隔下,顯然并行口更快。早期技術(shù)不夠,很多設(shè)備使用并行口通信以提高速度,例如并口打印機(jī)、并口的IDE硬盤等。后來(lái)技術(shù)進(jìn)步了,串行口傳輸速度提上去了,由于接線少,更加方便可靠,并行口就逐步被淘汰了,USB就是串行口。
備注:此處“行”的發(fā)音和“行走”中“行”的發(fā)音一致。
同步/異步接口 這個(gè)概念留到后面具體講通信協(xié)議的時(shí)候再做介紹。
模擬接口/硬件接口 在51單片機(jī)中,傳輸數(shù)據(jù)主要利用32個(gè)IO口管腳。作為數(shù)字接口,串口以及后面要介紹的I2C等,本質(zhì)都是通過(guò)IO口的高低電平實(shí)現(xiàn)的。如果對(duì)串口的協(xié)議有了解,可以給單片機(jī)寫程序,將任意兩個(gè)IO口做成串口,和電腦進(jìn)行通信。但是事實(shí)上用到串口的時(shí)候,很少有人會(huì)這么做。
用程序?qū)崿F(xiàn)串口的方法,一般叫做模擬串口,或者軟件串口;而實(shí)際上常用到的是硬件串口。串口是一種很基本的接口,單片機(jī)一般都有硬件串口。
使用軟件模擬串口需要消耗很多CPU資源(也就是說(shuō)CPU需要花很多時(shí)間處理串口相關(guān)的數(shù)據(jù)收發(fā)工作)。
而硬件串口根據(jù)串口協(xié)議設(shè)計(jì)好并集成在單片機(jī)中,也就是一個(gè)模塊,大大簡(jiǎn)化了串口通信的軟件編程。串口發(fā)送數(shù)據(jù)需要一位一位的進(jìn)行,有了硬件串口,在軟件上只需把要發(fā)送的一個(gè)字節(jié)數(shù)據(jù)放到硬件串口相關(guān)的寄存器中,硬件就會(huì)自動(dòng)一位一位的把數(shù)據(jù)發(fā)送出去。CPU的全部工作就是執(zhí)行軟件程序,這樣就大大減輕了CPU的負(fù)擔(dān)。接收數(shù)據(jù)也是類似的道理。
這里又體現(xiàn)了模塊化設(shè)計(jì)中模塊可代換的特點(diǎn),甚至是軟硬件之間也可以互相代換或補(bǔ)償。讀者或許對(duì)此感到不可思議,學(xué)到原理篇就能慢慢理解這里的原因了。
ADC/DAC 模數(shù)/數(shù)模轉(zhuǎn)換器 既然接口有數(shù)字和模擬形式的,那么他們之間也應(yīng)該能互相轉(zhuǎn)換。例如電腦聽(tīng)音樂(lè)時(shí),CPU、存儲(chǔ)器都是數(shù)字器件,結(jié)果卻能輸出模擬的聲音信號(hào)。
能把模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)的器件叫做模數(shù)轉(zhuǎn)換器(ADC=Analog To Digital Converter),反過(guò)來(lái),數(shù)字轉(zhuǎn)模擬就是數(shù)模轉(zhuǎn)換器了(DAC=Digital-to-Analog Converter)。
ADC/DAC也是兩種常見(jiàn)的微機(jī)系統(tǒng)模塊。在STC89C52RC單片機(jī)中沒(méi)有內(nèi)置的ADC/DAC,但是可以使用外置的轉(zhuǎn)換芯片,而在STC的其他一些型號(hào)51單片機(jī)或430等單片機(jī)中往往會(huì)有內(nèi)置的轉(zhuǎn)換模塊。
接口是單片機(jī)學(xué)習(xí)很重要的知識(shí)。本篇關(guān)于通信接口和協(xié)議的介紹就結(jié)束了,其中的很多細(xì)節(jié)會(huì)在后面的具體學(xué)習(xí)中涉及到。
=======================================================
《單片機(jī)小白學(xué)步》系列教程(原名《單片機(jī)入門指南》)介紹 本系列教程從最基本的入門知識(shí)開(kāi)始,逐步深入介紹單片機(jī)系統(tǒng)設(shè)計(jì),內(nèi)容包括: 1、入門篇:單片機(jī)等基本概念、各種電子設(shè)計(jì)基本知識(shí) 2、思想篇:單片機(jī)/計(jì)算機(jī)系統(tǒng)設(shè)計(jì)的工程思想 3、學(xué)習(xí)篇:單片機(jī)學(xué)習(xí)過(guò)程、方法和技巧,以51單片機(jī)為例介紹,并推廣到其他單片機(jī) 4、應(yīng)用篇:遵循規(guī)范的工程方法,設(shè)計(jì)單片機(jī)系統(tǒng)實(shí)例(計(jì)劃設(shè)計(jì)的系統(tǒng)有:計(jì)算器、電子表、密碼鎖、簡(jiǎn)易手機(jī),具體看有沒(méi)有時(shí)間再確定) 5、原理篇:從模擬電路、數(shù)字電路開(kāi)始,逐步深入介紹單片機(jī)/計(jì)算機(jī)系統(tǒng)原理,并自行設(shè)計(jì)簡(jiǎn)易的CPU(由于個(gè)人水平有限,這部分沒(méi)有把握寫好,具體內(nèi)容視情況而定)
教程特點(diǎn) 1、技術(shù)知識(shí)點(diǎn)全面,從入門到精通 包含了各種基本知識(shí),尤其是對(duì)單片機(jī)基本概念的介紹、為什么要用單片機(jī)等,在很多同類書籍教程中都被忽略了。同時(shí)也包含了一些深入的知識(shí),包括原理篇考慮對(duì)單片機(jī)的基本原理進(jìn)行介紹,有助于深入理解單片機(jī)。
本系列教程以51單片機(jī)為例進(jìn)行介紹。通過(guò)51介紹完單片機(jī)的基本知識(shí),我會(huì)再把430進(jìn)行簡(jiǎn)要介紹,尤其是對(duì)比兩者之間的優(yōu)缺點(diǎn),讓大家很快感受到430的巨大優(yōu)勢(shì),而學(xué)習(xí)51正好為快速了解430打下了堅(jiān)實(shí)的基礎(chǔ)。
2、除了單片機(jī)知識(shí),還有思想、方法、技巧的介紹 本系列教程中,介紹單片機(jī)各種模塊編程知識(shí)的主要是學(xué)習(xí)篇,而學(xué)習(xí)篇只是整個(gè)教程的一部分。在學(xué)習(xí)篇中我會(huì)貫穿各種方法技巧,如何理解一些模塊功能,怎么看時(shí)序圖,嚴(yán)格遵守工程思想進(jìn)行編程,程序發(fā)生了錯(cuò)誤怎么調(diào)試等等。而在思想篇中會(huì)總體介紹很多重要的思想,為后面的學(xué)習(xí)做好準(zhǔn)備工作。
3、知識(shí)先后順序的設(shè)計(jì) 單片機(jī)學(xué)習(xí)過(guò)程中,涉及大量的知識(shí),而且很多知識(shí)之間相互依賴,關(guān)聯(lián)很強(qiáng)。
本系列教程對(duì)知識(shí)的先后順序進(jìn)行比較明確的規(guī)劃,盡最大可能符合人的認(rèn)知過(guò)程。但是實(shí)際規(guī)劃時(shí)發(fā)現(xiàn),無(wú)論怎么調(diào)整知識(shí)的順序,總有一些知識(shí)之間相互依賴,關(guān)系復(fù)雜。例如開(kāi)始講IO口的時(shí)候肯定會(huì)提到寄存器,而寄存器這個(gè)詞的理解,需要深厚的背景知識(shí)。但是這些背景知識(shí)在沒(méi)有進(jìn)行實(shí)踐的時(shí)候也很難理解。
初學(xué)者常常就會(huì)在這樣的地方感覺(jué)疑惑不解,不知所措。而每次遇到類似這樣的知識(shí),我會(huì)向初學(xué)者指出,應(yīng)該如何對(duì)待。這個(gè)知識(shí)是應(yīng)該自己去學(xué)習(xí)補(bǔ)充,還是等到學(xué)完原理篇再做理解,而現(xiàn)在又應(yīng)該怎么去看待這個(gè)名詞。
另外,在整個(gè)教程的學(xué)習(xí)前,需要掌握一定的C語(yǔ)言等基礎(chǔ)知識(shí),具體可參考教程第〇篇《序》中的相關(guān)說(shuō)明 http://www.hainter.com/mcu-primer-0
4、語(yǔ)言通俗易懂 本系列教程力求語(yǔ)言通俗易懂,而不會(huì)用一堆新手不懂的詞語(yǔ)去解釋另一個(gè)不懂的詞語(yǔ)。但是受限于個(gè)人語(yǔ)言表達(dá)能力,可能有些地方表述的比較繁瑣,或者不清楚,希望大家能夠幫忙指出。
其他問(wèn)題 如果覺(jué)得我寫的對(duì)你有幫助,歡迎多多反饋,包括寫的不正確、不合理、不太明白都可以指出來(lái),這樣方便我對(duì)其進(jìn)行完善。
更多可參見(jiàn):《如何以學(xué)習(xí)單片機(jī)為契機(jī),逐步成為優(yōu)秀的工程師》 http://www.hainter.com/mcu-engineer
本系列教程首發(fā)于我的個(gè)人主頁(yè),歡迎訪問(wèn)(由于是國(guó)外服務(wù)器,速度稍微有點(diǎn)慢): http://www.hainter.com/category/hacker/mcu-primer
同時(shí)會(huì)將其轉(zhuǎn)發(fā)到CSDN、電子發(fā)燒友等站點(diǎn),歡迎關(guān)注。 CSDN專欄網(wǎng)址?http://blog.csdn.net/column/details/mcu-introduction.html 電子發(fā)燒友論壇?http://bbs.elecfans.com/zhuti_mcu_1.html
本文首發(fā)自我的個(gè)人主頁(yè),轉(zhuǎn)載請(qǐng)注明來(lái)源:http://www.hainter.com/mcu-primer-18
創(chuàng)作挑戰(zhàn)賽 新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)
總結(jié)
以上是生活随笔 為你收集整理的单片机小白学步系列(十八) 单片机/计算机系统概述:通信接口与协议 的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。