PIC單片機(jī)之通信協(xié)議(講的很好)
當(dāng)人們晚上迷失在野外手上只有一個(gè)手電筒,此時(shí)有直升機(jī)飛過。人們用手電筒發(fā)出三短三長三短的光線。用這個(gè)國際通用的SOS求救信號(hào),告訴飛行員來救你。人們規(guī)定的三短三長三短的光線,代表SOS就是一種通訊協(xié)議。
單片機(jī)處理通訊協(xié)議的方法其實(shí)也類似。只不過用的不是光線而是電平。比如我們完全可以模仿SOS求救信號(hào)的方法。來創(chuàng)造屬于自己的通訊協(xié)議。
例如:我們模仿SOS ,用高電平代替亮,用低電平代替暗。10MS(毫秒)為短,20MS為長。A單片機(jī)從一個(gè)I/O輸出如下的電平??梢钥闯鰡纹瑱C(jī)輸出了三短三長三短的的高電平。 B單片機(jī)從一個(gè)I/O接收如下的電平。當(dāng)B單片機(jī)接收到信號(hào)的后,就可以根據(jù)程序做任何事,這個(gè)信號(hào)的代表什么,可以是SOS,可以開啟一些設(shè)備,可以是一切的意思。A單片機(jī)可以運(yùn)用這個(gè)協(xié)議,命令B單片機(jī)做任何事情。只要我們自己編程前先確定好就行。
所以說協(xié)議本身是很隨意的,只要發(fā)送和接收雙方事先規(guī)定好就行了。但是如果每家公司,每個(gè)人都定一個(gè)通信協(xié)議。這樣協(xié)議就太多太亂。所以規(guī)定了幾種通用的協(xié)議如USART,I2C,SPI,這樣通信協(xié)議就能規(guī)范了。
我們稍稍講解下關(guān)于通信協(xié)議的幾個(gè)專業(yè)術(shù)語:
串行通訊和并行通訊。
如果我們手上有8個(gè)蘋果,我們想丟給另一個(gè)人。你可以一個(gè)個(gè)丟,丟完一個(gè)再丟另一個(gè),這就是串行通訊。你可以8個(gè)一起丟,這就是并行通訊。只是對(duì)于單片機(jī)丟的不是蘋果而是位(bit)。
串行通訊只用一個(gè)數(shù)據(jù)(Data)線,發(fā)送數(shù)據(jù)所以只能一個(gè)個(gè)位的發(fā)送。
并行通訊要同時(shí)傳遞多少個(gè)位的數(shù)據(jù),則用多少個(gè)數(shù)據(jù)線。
全雙工通訊和半雙工通訊。
簡單的來說:比如兩個(gè)人聊天,如果A說話,B只能聽,B說話,A只能聽。A 和B兩個(gè)人不能同時(shí)說話,只能一方發(fā)出信息,另一方接收信息。雙方不能同時(shí)發(fā)出信息這就是半雙工。
如果兩個(gè)人聊天,兩個(gè)人可以同時(shí)說話,可以同時(shí)聽。雙方都以同時(shí)接收和發(fā)送這就是全雙工。
異步和同步。
對(duì)于單片機(jī)而言,如果在同一個(gè)時(shí)鐘下,動(dòng)作和步調(diào)都是一致同步的。
如果不在同一個(gè)時(shí)鐘下,動(dòng)作和步調(diào)是不一致的是異步的。
如果想讓兩個(gè)單片機(jī),進(jìn)行同步通訊,就必須工作在同一個(gè)時(shí)鐘下。所以它們之間連接著時(shí)鐘線。如果它們之間沒有時(shí)鐘線連接,則說明是異步通訊。