計(jì)算機(jī)與嵌入式系統(tǒng)領(lǐng)域的高速串行總線技術(shù)
- 一、串口通信基礎(chǔ)知識(shí)
- 1、常見(jiàn)的串行通信標(biāo)準(zhǔn)
- 2、常見(jiàn)的電平信號(hào)及其電氣特性
- 二、UART(通用異步收發(fā)器)協(xié)議
-
- 三、RS-232、RS-422、RS-485通信協(xié)議
- 1、RS-232協(xié)議
- 2、RS-422協(xié)議
- 2、RS-485協(xié)議
- 四、CAN通信協(xié)議
- 1、CAN總線具有以下主要特性:
- 2、 CAN技術(shù)規(guī)范與標(biāo)準(zhǔn)
- 3、CAN總線報(bào)文信號(hào)和網(wǎng)絡(luò)拓?fù)?/li>
- 4.、CAN**通信幀**的介紹
- (1)數(shù)據(jù)幀
- (2)遙控幀
- (3)錯(cuò)誤幀
- (4)過(guò)載幀
- (5)幀間隔
- 五、I^2^C通信協(xié)議
- 1、總線簡(jiǎn)介
- 2、IIC通信過(guò)程
- 3、IIC典型時(shí)序
- 六、SPI通信協(xié)議
- 1、SPI總線的簡(jiǎn)介
- 2、SPI通信的過(guò)程
一、串口通信基礎(chǔ)知識(shí)
1、常見(jiàn)的串行通信標(biāo)準(zhǔn)
- 目前常見(jiàn)串行通信接口標(biāo)準(zhǔn)有RS-232、RS-422、RS-485等。另外,SPI(串行外設(shè)接口)、I2C(內(nèi)置集成電路)和CNA(控制器局域網(wǎng))通信也屬于串口通信。
2、常見(jiàn)的電平信號(hào)及其電氣特性
- TTL電平
| 邏輯1 | 邏輯0 |
---|
輸入 | >=2.0V | <=0.8V |
輸出 | >=2.4V | <=0.4V |
噪音容限較低,約為0.4V,MCU芯片引腳都是TTL電平
2. CMOS電平
| 邏輯1 | 邏輯0 |
---|
輸入 | >=0.7V | <=0.3V |
輸出 | >=0.8V | <=0.1V |
噪音容限高于TTL電平,Vcc為供電電壓
3. RS-232電平
電平信號(hào)名稱 | 邏輯1 | 邏輯0 |
---|
RS-232 | -15V ~ -3V | 3V ~ 15V |
PC的COM口為RS-232電平
4.USB電平
電平信號(hào)名稱 | 邏輯1 | 邏輯0 |
---|
USB電平 | (Vd - Vd-)>= 200mV | (Vd-- Vd )>= 200mV |
采用差分電壓,4線制:Vcc、GND、D 、D-
二、UART(通用異步收發(fā)器)協(xié)議
是一種通用的串行、異步通信總線,該總線有兩條數(shù)據(jù)線,可以實(shí)現(xiàn)全雙工的發(fā)送和接收,在嵌入式系統(tǒng)中常用于主機(jī)與輔助設(shè)備之間的通信。
1、UART消息幀格式
- 空閑位:不進(jìn)行傳輸數(shù)據(jù)時(shí),默認(rèn)為邏輯1,為高電平;
- 起始位:先發(fā)出一個(gè)邏輯“0”,表示消息幀的開(kāi)始;
- 數(shù)據(jù)位:緊接著起始位之后,可由5~8位組成,通常傳輸8位即一個(gè)字節(jié)。先發(fā)送數(shù)據(jù)的低位,后發(fā)送數(shù)據(jù)的高位;
- 奇偶校驗(yàn)位:緊接著數(shù)據(jù)位后面(可有可無(wú)),使得“1”的位數(shù)應(yīng)為偶數(shù)(偶校驗(yàn))或奇數(shù)(奇校驗(yàn)),校驗(yàn)數(shù)據(jù)傳輸是否正確;
- 停止位:它是消息傳輸結(jié)束的標(biāo)志,它可以是1位、1.5位、2位的高電平, 由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。
- 波特率:是衡量數(shù)據(jù)傳輸速率的指標(biāo),表示每秒鐘傳輸?shù)奈粩?shù)。例如設(shè)置串口的波特率為9600,則表示是1s傳輸9600個(gè)bit的數(shù)據(jù),則傳送每個(gè)位的時(shí)間為 1s / 9600 ≈ 104us,從而區(qū)分消息幀中每個(gè)位傳輸?shù)臄?shù)據(jù);
假如從A設(shè)備通過(guò)串口傳輸“Hi”給設(shè)備B,參數(shù)為:波特率9600,無(wú)校驗(yàn)位,停止位1位
查詢ASCLL表知道 'H’對(duì)應(yīng)的二進(jìn)制表示 0100 1000,'i’對(duì)應(yīng)的二進(jìn)制表示 0110 1001,發(fā)送效果如下圖所示:
設(shè)備A和設(shè)備B按照約定的波特率,設(shè)備A從start開(kāi)始,每經(jīng)過(guò)104us向設(shè)備B發(fā)送一個(gè)bit,同時(shí)設(shè)備B每經(jīng)過(guò)104us向設(shè)備A接收一個(gè)bit的數(shù)據(jù),從而實(shí)現(xiàn)數(shù)據(jù)的傳輸。
缺點(diǎn):UART一般直接使用TTL信號(hào)來(lái)表示0和1,但TTL信號(hào)抗干擾能力較差,數(shù)據(jù)在傳輸過(guò)程中很容易出錯(cuò);且TTL信號(hào)的通信距離也很短;
三、RS-232、RS-422、RS-485通信協(xié)議
UART只是對(duì)信號(hào)的時(shí)序進(jìn)行了定義,而未定義接口的電氣特性。
RS-232、RS-422和RS-485標(biāo)準(zhǔn)最初都是由美國(guó)電子工業(yè)協(xié)會(huì)制定并發(fā)布的。
1、RS-232協(xié)議
- 現(xiàn)在工業(yè)控制的RS-232接口一般只使用RXD、TXD、GND三條線,且PC機(jī)一般采用DB-9連接器;
- 特性:
- 工作方式:?jiǎn)味耍ǚ瞧胶猓?/li>
- 節(jié)點(diǎn)數(shù):點(diǎn)對(duì)點(diǎn)通訊(1收1發(fā));
- 最大傳輸距離:50ft ( 50 * 0.3048 = 15.24m);
- 最大傳輸速率:20kbit/s;
- 連接方式:點(diǎn)對(duì)點(diǎn)(全雙工);
- 電氣特性:-3V ~ -15V表示邏輯1,3V ~ 15V表示邏輯0;
常用芯片有max232、SP232等
缺點(diǎn):通信距離短,速率低,而且只能點(diǎn)對(duì)點(diǎn)通信,無(wú)法組建多機(jī)通信系統(tǒng),且容易受外界電氣干擾導(dǎo)致信息傳輸錯(cuò)誤。
2、RS-422協(xié)議
RS-422標(biāo)準(zhǔn)定義了一種平衡通信接口,改變了RS-232標(biāo)準(zhǔn)的單端通信的方式,總線上使用差分電壓進(jìn)行信號(hào)傳輸。傳輸速率提高到10Mbit/s,傳輸距離長(zhǎng)達(dá)4000ft=1219.2m(速率低于100kbit/s時(shí)),而且運(yùn)行總線上最多連接10個(gè)接收器。
- 特性:
- 工作方式:差分(平衡);
- 節(jié)點(diǎn)數(shù):點(diǎn)對(duì)多通訊(1發(fā)10收);
- 最大傳輸距離:4000ft ( 4000 * 0.3048 = 1219.2m);
- 最大傳輸速率:10Mbit/s;
- 連接方式:一點(diǎn)對(duì)多點(diǎn)(四線制,全雙工);
- 電氣特性:2V ~ 6V表示邏輯1,-2V ~ -6V表示邏輯0;
缺點(diǎn):連接的設(shè)備少,抗干擾能力不強(qiáng),無(wú)法完全滿足工業(yè)需求。
常用芯片有max232、SP232等
2、RS-485協(xié)議
RS-485標(biāo)準(zhǔn)運(yùn)行連接多個(gè)收發(fā)器,即具有多站能力,增加了多點(diǎn)、雙向的通信能力。
- 特性:
- 工作方式:差分(平衡);
- 節(jié)點(diǎn)數(shù):點(diǎn)對(duì)多通訊(1發(fā)32收);
- 最大傳輸距離:4000ft ( 4000 * 0.3048 = 1219.2m);
- 最大傳輸速率:10Mbit/s;
- 連接方式:多點(diǎn)對(duì)多點(diǎn)(兩線制,半雙工);
- 電氣特性:2V ~ 6V表示邏輯1,-2V ~ -6V表示邏輯0;
常用芯片有max485、SP3072EEN等,以SP3072EEN收發(fā)器芯片的典型應(yīng)用電路如下
一主多從效果圖:
在RS-485總線網(wǎng)絡(luò)基礎(chǔ)下制定的Modbus應(yīng)用層通信協(xié)議可參考傳感網(wǎng)應(yīng)用開(kāi)發(fā)(中級(jí))網(wǎng)絡(luò)協(xié)議報(bào)文詳解
四、CAN通信協(xié)議
CAN(Control Area Network,控制器局域網(wǎng))由德國(guó)Bosch公司于1983年開(kāi)發(fā)出來(lái),最早被應(yīng)用于汽車內(nèi)部控制系統(tǒng)的監(jiān)測(cè)與執(zhí)行機(jī)構(gòu)間的數(shù)據(jù)通信,目前是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。
1、CAN總線具有以下主要特性:
- 數(shù)據(jù)傳輸距離遠(yuǎn)(最遠(yuǎn)10km);
- 數(shù)據(jù)傳輸速率高(最高數(shù)據(jù)傳輸速率1Mbit/s);
- 具備優(yōu)秀的仲裁機(jī)制;
- 使用篩選器實(shí)現(xiàn)多地址的數(shù)據(jù)幀傳遞;
- 借助遙控幀實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)請(qǐng)求;
- 具備錯(cuò)誤檢測(cè)與處理功能;
- 具備數(shù)據(jù)自動(dòng)重發(fā)功能;
- 故障節(jié)點(diǎn)可自動(dòng)脫離總線且不影響總線上其它節(jié)點(diǎn)的正常工作;
2、 CAN技術(shù)規(guī)范與標(biāo)準(zhǔn)
- ISO 11898標(biāo)準(zhǔn)的CAN通信數(shù)據(jù)傳輸速率為125kbit/s~1Mbit/s,適合高速通信應(yīng)用場(chǎng)景;而ISO 11519標(biāo)準(zhǔn)的CAN通信數(shù)據(jù)傳輸速率為125kbit/s以下,適合低速通信應(yīng)用場(chǎng)景。
- CAN技術(shù)規(guī)范主要主要對(duì)OSI基本參考模型中的物理層(部分)、數(shù)據(jù)鏈路層和傳輸層(部分)進(jìn)行了定義。
3、CAN總線報(bào)文信號(hào)和網(wǎng)絡(luò)拓?fù)?/h2>
ISO 11898在靜態(tài)時(shí)兩條信號(hào)線上電平電壓均為2.5V左右(電位差0V),此時(shí)的狀態(tài)表示1(稱為“隱性電平”狀態(tài)),當(dāng)CAN_H上的電壓值為3.5V且CAN_L上的電壓值為1.5V時(shí),兩線的電位差為2V,此時(shí)的狀態(tài)表示邏輯0(稱為“顯性電平”狀態(tài))。
ISO 11519標(biāo)準(zhǔn)在靜態(tài)時(shí),當(dāng)CAN_H上的電壓值為4.0V且CAN_L上的電壓值為1.0V時(shí),兩線的
電位差為3.0V,,此時(shí)的狀態(tài)表示
0(稱為“
顯性電平”狀態(tài)),當(dāng)CAN_H上的電壓值為1.75V且CAN_L上的電壓值為3.25V時(shí),兩線的
電位差為-1.50V,此時(shí)的狀態(tài)表示邏輯
1(稱為“
隱性電平”狀態(tài))。
CAN總線網(wǎng)絡(luò)拓?fù)鋱D如下:
高速CAN總線ISO 11898網(wǎng)絡(luò)被應(yīng)用在汽車動(dòng)力與傳動(dòng)系統(tǒng),它是閉環(huán)網(wǎng)絡(luò),總線最大長(zhǎng)度是40m,求端各有一個(gè)120Ω的電阻。 低速CAN總線ISO 11519網(wǎng)絡(luò)被應(yīng)用在車身系統(tǒng),它的兩根總線是獨(dú)立的,不形成閉環(huán),要求每根總線上各串聯(lián)一個(gè)2.2kΩ的電阻。
傳輸介質(zhì)可用雙絞線、同軸電纜和光纖。
4.、CAN通信幀的介紹
(1)數(shù)據(jù)幀
用途:用于發(fā)送單元向接收單元傳送數(shù)據(jù)
- 數(shù)據(jù)幀由7個(gè)段構(gòu)成
- 幀起始,表示數(shù)據(jù)幀和遠(yuǎn)程幀的起始,他僅由一個(gè)“顯性電平”位組成。
- 仲裁段,是表示幀優(yōu)先級(jí)的段。標(biāo)準(zhǔn)幀的仲裁段由11bit的標(biāo)識(shí)符ID和RTR(遠(yuǎn)程發(fā)送請(qǐng)求)位組成;擴(kuò)展幀的仲裁段由29bit的標(biāo)識(shí)符ID、SRR(替代遠(yuǎn)程請(qǐng)求位)、IDE位和RTR為構(gòu)成。
- 控制段,是表示數(shù)據(jù)的字節(jié)數(shù)和保留位的段,標(biāo)準(zhǔn)幀與擴(kuò)展幀的控制段格式不同。
- 數(shù)據(jù)段,用于承載數(shù)據(jù)的內(nèi)容,它包含0~8B的數(shù)據(jù),從MSB(最高有效位)開(kāi)始輸出。
- CRC段,是用于檢查幀傳輸是否錯(cuò)誤的段,它由15bit的CRC序列和1bit的CRC界定符(用于分隔)構(gòu)成。
- ACK段,是用于確認(rèn)接收是否正確的段,它由ACK槽和ACK界定符(用于分隔)構(gòu)成,長(zhǎng)度為2bit
- 幀結(jié)束,用于表示數(shù)據(jù)幀的結(jié)束,它由7bit的隱性位構(gòu)成。
(2)遙控幀
用途:用于接收單元向具有相同ID的發(fā)送單元請(qǐng)求數(shù)據(jù)。
(3)錯(cuò)誤幀
用途:用于當(dāng)檢測(cè)出錯(cuò)誤時(shí)向其他單元通知錯(cuò)誤。
(4)過(guò)載幀
用途:用于接收單元通知發(fā)送單元其尚未做好接收準(zhǔn)備。
(5)幀間隔
用途:用于分隔數(shù)據(jù)幀和遙控幀的幀。
幀間隔的構(gòu)成元素有三個(gè):
一是間隔,它由3bit的隱性位構(gòu)成。
二是總線空閑,它由隱性電平構(gòu)成,且無(wú)長(zhǎng)度限制。只有在總線處于空閑狀態(tài)下,要發(fā)送的單元才開(kāi)始訪問(wèn)總線。
三是延遲傳送,它由8bit的隱性位構(gòu)成。
五、I2C通信協(xié)議
1、總線簡(jiǎn)介
IIC(Inter-Integrated Circuit)其實(shí)是IICBus簡(jiǎn)稱,所以中文應(yīng)該叫集成電路總線,它是一種串行通信總線,使用多主從架構(gòu),由飛利浦公司在1980年代為了讓主板、嵌入式系統(tǒng)或手機(jī)用以連接低速周邊設(shè)備而發(fā)展;IIC總線有兩根雙向的信號(hào)線,一根數(shù)據(jù)線SDA用于收發(fā)數(shù)據(jù),一根時(shí)鐘線SCL用于通信雙方時(shí)鐘的同步。
2、IIC通信過(guò)程
- 主機(jī)發(fā)送起始信號(hào)啟用總線;
- 主機(jī)發(fā)送一個(gè)字節(jié)數(shù)據(jù)指明從機(jī)地址和確定后續(xù)主機(jī)從機(jī)的傳遞方向;
- IIC總線上各從機(jī)判斷主機(jī)發(fā)送的從機(jī)地址是否是自己,匹配的從機(jī)發(fā)送應(yīng)答信號(hào)回應(yīng)主機(jī);
- 發(fā)送器發(fā)送一個(gè)字節(jié)數(shù)據(jù);
- 接收器發(fā)送應(yīng)答信號(hào)回應(yīng)發(fā)送器;
- …(循環(huán)重復(fù)步驟4、5);
- 最后通信完成后主機(jī)發(fā)送停止信號(hào)釋放總線;
IIC總線發(fā)送和停止時(shí)序圖:
IIC總線發(fā)送數(shù)據(jù)時(shí)序圖:
3、IIC典型時(shí)序
- 主機(jī)向從機(jī)發(fā)送數(shù)據(jù)
- 從機(jī)向主機(jī)發(fā)送數(shù)據(jù)
3.主機(jī)先向從機(jī)發(fā)送數(shù)據(jù),然后從機(jī)再向主機(jī)發(fā)送數(shù)據(jù)
六、SPI通信協(xié)議
1、SPI總線的簡(jiǎn)介
SPI是由摩托羅拉公司開(kāi)發(fā)的高速全雙工同步串行通信協(xié)議(一主多從)。 有點(diǎn)類似IIC,但又與IIC選通從設(shè)備的方式不同,IIC是通過(guò)發(fā)送從機(jī)地址來(lái)選通從機(jī),而SPI是通過(guò)拉低連接到從機(jī)的NSS引腳對(duì)從機(jī)進(jìn)行選通的。
SPI一般應(yīng)用由四個(gè)引腳組成(一主多從):
- SCLK(Serial Clock):串行時(shí)鐘,由主機(jī)發(fā)出;
- MOSI(Maser Output,Slave Input):主機(jī)輸出從機(jī)輸入信號(hào),由主機(jī)發(fā)出;
- MISO(Master Input,Slave Output):主機(jī)輸入從機(jī)輸出信號(hào),由從機(jī)發(fā)出;
- NSS(Slave Selected):選擇信號(hào),由主機(jī)發(fā)出,一般是低電位有效。
SPI主從連接如圖所示:
2、SPI通信的過(guò)程
SPI是串行通信協(xié)議,但是主機(jī)占用的引腳明顯比IIC和UART多,而主機(jī)引腳數(shù)會(huì)隨著從機(jī)數(shù)量增多而增多。主機(jī)在通過(guò)MOSI數(shù)據(jù)線發(fā)送數(shù)據(jù)的同時(shí),從機(jī)也會(huì)通過(guò)MISO將數(shù)據(jù)傳輸給主機(jī)(收發(fā)同時(shí)進(jìn)行),它們以虛擬似緩形拓?fù)溥B接。數(shù)據(jù)通常先移出最高位,在時(shí)鐘邊沿,主機(jī)和從機(jī)均移出一位,然后在傳輸線上輸出給對(duì)方(改變數(shù)據(jù))。在下一個(gè)時(shí)鐘沿,主從設(shè)備的接收器都從傳輸線接受該位,并設(shè)置為移位寄存器的新的最低有效位(采樣數(shù)據(jù))。在完成這樣一個(gè)移出一移入的周期后,主機(jī)和從機(jī)就交換了寄存器中的一位,傳輸可能會(huì)持續(xù)任意數(shù)量的時(shí)鐘周期。傳輸完成后,主設(shè)備會(huì)停止時(shí)鐘信號(hào),并拉高NSS選通線。