當(dāng)前位置:全球供應(yīng)商網(wǎng) > 技術(shù)中心 > 所有分類(lèi)
一、UART
UART是一種通用串行數(shù)據(jù)總線(xiàn),用于異步通信。該總線(xiàn)雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收。
1.1接口(兩根線(xiàn))
UART TX:發(fā)送
UART RX:接收
1.2如何傳輸
UART作為異步串口通信協(xié)議的一種,工作原理是將傳輸數(shù)據(jù)的每個(gè)字符一位接一位地傳輸。
每一個(gè)位的含意
1.起始位:先發(fā)出一個(gè)邏輯”0”的信號(hào),表示傳輸字符的開(kāi)始。
2.數(shù)據(jù)位:緊接著起始位之后。資料位的個(gè)數(shù)可以是4、5、6、7、8等,構(gòu)成一個(gè)字符。通常采用ASCII碼。從位開(kāi)始傳送,靠時(shí)鐘定位。
3.奇偶校驗(yàn)位:資料位加上這一位后,使得“1”的位數(shù)應(yīng)為偶數(shù)(偶校驗(yàn))或奇數(shù)(奇校驗(yàn)),以此來(lái)校驗(yàn)資料傳送的正確性。
4.停止位:它是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志??梢允?/span>1位、1.5位、2位的高電平。
5.空閑位:處于邏輯“1”狀態(tài),表示當(dāng)前線(xiàn)路上沒(méi)有資料傳送。
什么叫做異步通訊?
異步通信是指通信中兩個(gè)字符(8位)之間的時(shí)間間隔是不固定的,而在一個(gè)字符內(nèi)各位的時(shí)間間隔是固定的。
1.3波特率
波特率通常單位是bit/s,也就是二進(jìn)制位/秒。因?yàn)橐粋€(gè)字節(jié)是8個(gè)bit,波特率就是一秒種傳輸0或1的個(gè)數(shù),若波特率是9600那么它傳輸一位0或1的時(shí)間就是1/9600秒。而一個(gè)字節(jié)通常可以表達(dá)一個(gè)ASCII碼,比如一個(gè)英文字母,所以:9600的波特率的信道,理論上每秒可以傳輸9200/8個(gè)英文字母的數(shù)據(jù)量,也就是1200個(gè)字節(jié),大約1.2KB。而19200則是每秒可傳輸2400字節(jié)。
二、SPI
SPI是一種全雙工短距單主設(shè)備通信協(xié)議,與UART不同,它是一種同步通信協(xié)議。SPI簡(jiǎn)單的連接方式之一是主從連接。
2.1接口(四根線(xiàn))
SCLK:串行時(shí)鐘,用來(lái)同步數(shù)據(jù)傳輸,由主機(jī)輸出
MISO:主機(jī)輸入從機(jī)輸出(Master In Slave Out)
MOSI:主機(jī)輸出從機(jī)輸入(Master Out Slave In)
CS:片選線(xiàn),低電平有效,由主機(jī)輸出
在SPI總線(xiàn)上,某一時(shí)刻可以出現(xiàn)多個(gè)從機(jī),但只能存在一個(gè)主機(jī),主機(jī)通過(guò)片選線(xiàn)來(lái)確定要通信的從機(jī)。這就要求從機(jī)的MISO口具有三態(tài)特性,使得該口線(xiàn)在器件未被選通時(shí)表現(xiàn)為高阻抗。
2.2如何傳輸
在一個(gè)SPI時(shí)鐘周期內(nèi),會(huì)完成如下操作:
主機(jī)通過(guò)MOSI線(xiàn)發(fā)送1位數(shù)據(jù),從機(jī)通過(guò)該線(xiàn)讀取這1位數(shù)據(jù);
從機(jī)通過(guò)MISO線(xiàn)發(fā)送1位數(shù)據(jù),主機(jī)通過(guò)該線(xiàn)讀取這1位數(shù)據(jù)。
這是通過(guò)移位寄存器來(lái)實(shí)現(xiàn)的。主機(jī)和從機(jī)各有一個(gè)移位寄存器,且二者連接成環(huán)。隨著時(shí)鐘脈沖,數(shù)據(jù)按照從高位到低位的方式依次移出主機(jī)寄存器和從機(jī)寄存器,并且依次移入從機(jī)寄存器和主機(jī)寄存器。當(dāng)寄存器中的內(nèi)容全部移出時(shí),相當(dāng)于完成了兩個(gè)寄存器內(nèi)容的交換。
三、I2C
I2C是一種用兩條連線(xiàn)工作的半雙工協(xié)議(半雙工是通信的一種類(lèi)型,即只要發(fā)送端在發(fā)送數(shù)據(jù),接收端只能而不能發(fā)送數(shù)據(jù))。
3.1接口(兩條線(xiàn))
SDA:數(shù)據(jù)線(xiàn)
SCL:時(shí)鐘線(xiàn)
I2C的連線(xiàn)總是要通過(guò)電阻上拉至輸入電壓,I2C的連線(xiàn)工作于三種速度:高速,快速,慢速。
3.2如何傳輸
如果主機(jī)要發(fā)送數(shù)據(jù)給從器件,則主機(jī)首先尋址從器件,然后主動(dòng)發(fā)送數(shù)據(jù)至從器件,最后由主機(jī)終止數(shù)據(jù)傳送;
如果主機(jī)要接收從器件的數(shù)據(jù),首先由主器件尋址從器件.然后主機(jī)接收從器件發(fā)送的數(shù)據(jù),最后由主機(jī)終止接收過(guò)程。在這種情況下.主機(jī)負(fù)責(zé)產(chǎn)生定時(shí)時(shí)鐘和終止數(shù)據(jù)傳送。
傳輸格式:
每個(gè)字節(jié)必須是8位,位為響應(yīng)位
每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制
最開(kāi)始發(fā)送的是從機(jī)地址
應(yīng)答響應(yīng):
地址匹配完成會(huì)得到響應(yīng)信號(hào)(ACK),說(shuō)明這個(gè)設(shè)備是存在的
開(kāi)始信號(hào):主機(jī)讓時(shí)鐘SCL保持高電平,數(shù)據(jù)SDA由高電平調(diào)轉(zhuǎn)到低電平
停止線(xiàn)號(hào):主機(jī)讓式中SCL保持高電平,數(shù)據(jù)SDA由低電平跳轉(zhuǎn)到高電平。
響應(yīng)信號(hào)(ACK):接收器在接收到8位數(shù)據(jù)后,在第9個(gè)時(shí)鐘周期,拉低SDA為低電平。
SDA上傳輸?shù)臄?shù)據(jù)必須在SCL為高電平的期間保持穩(wěn)定,外部設(shè)備會(huì)在SCL在高電平的時(shí)候讀取數(shù)據(jù)
SDA上的數(shù)據(jù)只能在SCL為低電平期間發(fā)生變化
四、CAN
CAN是一種用于實(shí)時(shí)應(yīng)用的串行通訊協(xié)議總線(xiàn),它可以使用雙絞線(xiàn)來(lái)傳輸信號(hào),是世界上應(yīng)用泛的現(xiàn)場(chǎng)總線(xiàn)之一。
CAN通訊系列--CAN通訊簡(jiǎn)介1 - 知乎
4.1接口(兩條線(xiàn))
CAN_High
CAN_Low
4.2如何傳輸
發(fā)送過(guò)程:
CAN控制器將CPU傳來(lái)的信號(hào)轉(zhuǎn)換為邏輯電平(0或1),CAN發(fā)射器接收到邏輯電平后,再將其轉(zhuǎn)換為差分電平輸出到CAN總線(xiàn)上。
接收過(guò)程:
CAN接收器將CAN_H和CAN_L線(xiàn)上傳來(lái)的差分電平轉(zhuǎn)換為邏輯電平輸出到CAN控制器,CAN控制器再把該邏輯電平轉(zhuǎn)化為相應(yīng)的信號(hào)發(fā)送到CPU上。