串行/并行通信 全雙工/半雙工/單工傳輸 同步/異步通信 通信速率 串口電平標(biāo)準(zhǔn) 串口傳輸協(xié)議 常見通信協(xié)議 串行/并行通信 按照數(shù)據(jù)傳輸?shù)姆绞剑ㄐ趴梢苑譃榇型ㄐ藕筒⑿型ㄐ?。串行通信簡單的說就是數(shù)據(jù)依次傳輸,比如要傳輸0x11111111,一位一位的發(fā)送,需要發(fā)送8次。并行通信則是幾個(gè)數(shù)據(jù)一起傳輸,同樣是0x11111111,如果8位一起發(fā)送,只需要發(fā)送1次,如圖15.1.1所示。 由此可見,串行傳輸占用的通信線更少,成本低,通信速度相對(duì)較慢;并行傳輸占用的通信線多,成本高,通信速度相對(duì)更快。但隨著對(duì)傳輸速度要求越來越高,并行傳輸開始出現(xiàn)信號(hào)之間的干擾,串行通信受干擾影響較小,之后又發(fā)展出差分傳輸?shù)燃夹g(shù),極大的提高了串行傳輸速率,使得串行通信速度可能比并行通信速度更快。 串行通信就像單車道,行駛的車輛需要依次行駛。并行通信就像多車道,同時(shí)多輛汽車并排行駛。但當(dāng)車速很快的時(shí)候,多車道上并列行駛的汽車之間會(huì)形成“氣流”相互干擾,單車道則受影響較小,速度能夠進(jìn)一步提升。 全雙工/半雙工/單工傳輸 按照數(shù)據(jù)傳輸?shù)姆较颍ㄐ趴梢苑譃槿p工、半雙工和單工。全雙工指雙方都可以同時(shí)收發(fā)信息;半雙工雙方都可以收發(fā)信息,但同一時(shí)刻只能一方發(fā)送信息;單工指只能一方發(fā)信息,一方接受信息,通信是單向的。 全雙工就像電話通信,雙方任意時(shí)刻都可以同時(shí)收發(fā)信息;半雙工就像對(duì)講機(jī)通信,雙向都可得到信息,但是同一時(shí)刻只能是一方發(fā)射另一方接收,發(fā)射和接收不能同時(shí)進(jìn)行;單工就像收音機(jī),只能由廣播站發(fā)送給收音機(jī),單向不可逆的,如圖15.2.1所示。 同步/異步通信 按數(shù)據(jù)同步的方式,通信可以分為同步通信和異步通信。數(shù)據(jù)在雙方之間傳輸時(shí),需要制定規(guī)則保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確。同步通信的做法是加一個(gè)時(shí)鐘信號(hào),發(fā)送方和接收方在這個(gè)時(shí)鐘的節(jié)拍下傳輸數(shù)據(jù),比如常見的SPI、I2C。而異步通信的做法是對(duì)數(shù)據(jù)進(jìn)行封裝,在數(shù)據(jù)開頭加上起始信號(hào),在數(shù)據(jù)結(jié)尾加上終止信號(hào),雙方就按這個(gè)規(guī)則傳輸數(shù)據(jù),比如UART、1-Wire。 因此,可以通過是否有時(shí)鐘信號(hào),初步判斷是何種數(shù)據(jù)同步方式。 通信速率 對(duì)于同步通信,通信速率由時(shí)鐘信號(hào)決定,時(shí)鐘信號(hào)越快,傳輸速度就越快。 對(duì)于異步通信,需要收發(fā)雙方提前統(tǒng)一通信速率,這也就是我們串口調(diào)試時(shí),波特率不對(duì)顯示亂碼的原因。 時(shí)鐘對(duì)通信的重要性,這里再舉個(gè)例子:假設(shè)發(fā)送端時(shí)鐘頻率為1Mhz,對(duì)應(yīng)時(shí)鐘周期則為1us,接收端時(shí)鐘頻率為10Mhz,對(duì)應(yīng)時(shí)鐘周期則為0.1us?,F(xiàn)在發(fā)送端發(fā)送一個(gè)數(shù)據(jù)0x1,就會(huì)產(chǎn)生一個(gè)持續(xù)時(shí)間為1us高電平,接收端接收到這個(gè)1us的高電平時(shí),會(huì)當(dāng)作是10個(gè)0.1us的高電平,認(rèn)為收到了10個(gè)0x1。這時(shí)雙方數(shù)據(jù)就亂套了,因此需要一個(gè)統(tǒng)一的時(shí)鐘標(biāo)準(zhǔn)。 通常使用比特率來描述通信速率的快慢,與之容易混淆的是波特率。 比特率(Bitrate):系統(tǒng)在單位時(shí)間內(nèi)傳輸?shù)谋忍匚唬ǘM(jìn)制0或1)個(gè)數(shù),通常用Rb表示,單位是比特/秒(bit/s),縮寫為bps; 波特率(Baudrate):系統(tǒng)在單位時(shí)間內(nèi)傳輸?shù)拇a元個(gè)數(shù),通常用RB表示,單位是波特(Bd); 100bit/s即是一秒鐘傳輸100個(gè)0或1,100Bd即是一秒鐘傳輸100個(gè)碼元。 碼元就是“承載信息量的基本信號(hào)單位”,以一條電線上傳輸?shù)男盘?hào)為例,碼元就是電線上的電平值。 如果電線上電平只有0和3.3V兩種選擇,傳輸?shù)男盘?hào)是這2種電平之一,碼元的狀態(tài)只有2種。接收方可以把0V認(rèn)為是二進(jìn)制的0,把3.3V認(rèn)為是二進(jìn)制1。即:傳輸1個(gè)碼元時(shí),能用來表示1位數(shù)據(jù)。 如果電線上電平有0V、3.3V、5V、12V四種選擇,傳輸?shù)男盘?hào)是這4種電平之一,碼元的狀態(tài)有4種。接收方可以把這4個(gè)電平認(rèn)為是二級(jí)制的4個(gè)值:00、01、10、11。即:傳輸1個(gè)碼元時(shí),能用來表示2位數(shù)據(jù)。 因此碼元狀態(tài)為2時(shí),比特率等于波特率,碼元狀態(tài)越多,每次傳輸?shù)拇a元能攜帶的信息越多,自然速率也越高。 碼元有N個(gè)狀態(tài)時(shí),比特率與波特率的關(guān)系式: 串口電平標(biāo)準(zhǔn) 說到串口,經(jīng)常提到TTL、RS232、RS422、RS485,簡單的說,就是為了適應(yīng)不同的環(huán)境條件,使用了不同的電平標(biāo)準(zhǔn)。假如微處理器和板載的藍(lán)牙透傳模塊通信時(shí),一般就使用TTL電平,引腳直接連接即可。假如微處理器在工業(yè)現(xiàn)場,需要連接一個(gè)幾十米外的裝置,則應(yīng)該考慮將TTL電平轉(zhuǎn)為RS232、RS422、RS485。 如下表15.5.1是幾個(gè)通信接口標(biāo)準(zhǔn)總結(jié)??梢园l(fā)現(xiàn)為了加大傳輸距離,人們依次嘗試了增加電壓、差分傳輸?shù)确绞健?/p> 串口傳輸協(xié)議 以TTL電平的接口為例講解串口怎么傳輸數(shù)據(jù),對(duì)于RS232/RS422/RS485等接口,僅僅是把TTL電平轉(zhuǎn)換為不同的電平值,或者轉(zhuǎn)換為差分信號(hào)。 TTL接口的串口,硬件連接如圖15.6.1所示。 串口傳輸中的一些概念如下: 波特率:一般選波特率都會(huì)有9600,19200,115200等選項(xiàng)。其實(shí)意思就是每秒傳輸這么多個(gè)比特位數(shù)(bit); 起始位:先發(fā)出一個(gè)邏輯”0”的信號(hào),表示傳輸數(shù)據(jù)的開始; 數(shù)據(jù)位:可以是5~8位邏輯”0”或”1”,先傳輸bit0,在傳輸bit1,依次類推; 校驗(yàn)位:數(shù)據(jù)位加上這一位后,使得“1”的位數(shù)應(yīng)為偶數(shù)(偶校驗(yàn))或奇數(shù)(奇校驗(yàn)),以此來校驗(yàn)數(shù)據(jù)傳送的正確性。校驗(yàn)位是可選的,可以不傳輸; 停止位:它是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志,數(shù)據(jù)線變回邏輯”1”; 怎么發(fā)送一字節(jié)數(shù)據(jù),比如“A”?“A”的ASCII值是0x41,二進(jìn)制就是01000001,怎樣把這8位數(shù)據(jù)發(fā)送給對(duì)方呢? 雙方約定好波特率、數(shù)據(jù)格式(數(shù)據(jù)位個(gè)數(shù)、停止位個(gè)數(shù)、是否使用校驗(yàn)位、奇校驗(yàn)還是偶校驗(yàn)),假設(shè)數(shù)據(jù)位是8,停止位是1,校驗(yàn)位是1; 初始電平為邏輯1; 發(fā)送方輸出邏輯0,并保持1位的時(shí)間;接收方檢測到邏輯0,就知道對(duì)方準(zhǔn)備發(fā)送數(shù)據(jù)了; 發(fā)送方根據(jù)數(shù)據(jù)的bit0設(shè)置引腳電平,并保持1位的時(shí)間;接收方讀取引腳電平,得到bit0; 發(fā)送方根據(jù)數(shù)據(jù)的bit1設(shè)置引腳電平,并保持1位的時(shí)間;接收方讀取引腳電平,得到bit1; 以此類推,發(fā)出8位數(shù)據(jù); 發(fā)送方計(jì)算出校驗(yàn)值,設(shè)置引腳,并保持1位的時(shí)間;接收方讀取引腳電平,得到校驗(yàn)值;注意,這步可以省略; 發(fā)送方輸出邏輯1,并保持1位的時(shí)間;接收方讀取引腳電平,知道數(shù)據(jù)傳輸結(jié)束; 信號(hào)的波形圖如圖15.6.2所示。 常見通信協(xié)議 在嵌入式中,有眾多通信協(xié)議,往往從性能、成本、穩(wěn)定性、易用性等角度考慮選擇合適的協(xié)議。常見的通信協(xié)議如表15.7.1所示。 |
|