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