单片机串行通信全解析
1.什么是串行通信?
串行通信(英語(yǔ):Serial communication)是指在計(jì)算機(jī)總線或其他數(shù)據(jù)通道上,每次傳輸一個(gè)位元數(shù)據(jù),并連續(xù)進(jìn)行以上單次過(guò)程的通信方式。與之對(duì)應(yīng)的是并行通信,它在串行端口上通過(guò)一次同時(shí)傳輸若干位元數(shù)據(jù)的方式進(jìn)行通信。
簡(jiǎn)言之:串行通訊就是排成一隊(duì)走,并行就是排成一列走,如下圖
2.同步串行通信(Synchronous serial communication)和異步串行通信(Asynchronous serial communication)
1)發(fā)送端在發(fā)送串行數(shù)據(jù)的同時(shí),提供一個(gè)時(shí)鐘信號(hào),并按照一定的約定(例如在時(shí)鐘信號(hào)的上升沿的時(shí)候,將數(shù)據(jù)發(fā)送出去)發(fā)送數(shù)據(jù),接收端根據(jù)發(fā)送端提供的時(shí)鐘信號(hào),以及大家的約定,接收數(shù)據(jù)。這就是常說(shuō)的同步串行通信(Synchronous serial communication),I2C、SPI等有時(shí)鐘信號(hào)的協(xié)議,都屬于這種通信方式。
2)發(fā)送端在數(shù)據(jù)發(fā)送之前和之后,通過(guò)特定形式的信號(hào)(例如START信號(hào)和STOP信號(hào)),告訴接收端,可以開(kāi)始(或者停止)接收數(shù)據(jù)了。與此同時(shí),收發(fā)兩方會(huì)約定一個(gè)數(shù)據(jù)發(fā)送的速度(就是大名鼎鼎的波特率),發(fā)送端在發(fā)送START信號(hào)之后,就按照固定的節(jié)奏發(fā)送串行數(shù)據(jù),與此同時(shí),接收端在收到START信號(hào)之后,也按照固定的節(jié)奏接收串行數(shù)據(jù)。這就是常說(shuō)的異步串行通信(Asynchronous serial communication)。
3.單片機(jī)上常用的串行通訊接口
- SPI:高速同步串行口。3~4線接口,收發(fā)獨(dú)立、可同步進(jìn)行串行外圍設(shè)備接口,是Motorola公司推出的一種同步串行通訊方式,是一種三線同步總線,因其硬件功能很強(qiáng),與SPI有關(guān)的軟件就相當(dāng)簡(jiǎn)單,使CPU有更多的時(shí)間處理其他事務(wù)。SPI通常有SCK時(shí)鐘,STB片選,DATA數(shù)據(jù)信號(hào)三個(gè)信號(hào)。 I2C通常有 SDA數(shù)據(jù)和SCL時(shí)鐘兩個(gè)信號(hào)。SPI總線真正實(shí)現(xiàn)了全雙工數(shù)據(jù)傳輸,SPI 有3線跟4線兩種,4線的話,就是多了一條叫SDC的線,用來(lái)告知從設(shè)備現(xiàn)在傳輸?shù)氖菙?shù)據(jù)還是指令。這個(gè)接口較快,可以傳輸較連續(xù)的數(shù)據(jù)。SPI的速度要大于IIC,一般用在產(chǎn)品內(nèi)部元件之間的高速數(shù)據(jù)通信上面,如大容量存儲(chǔ)器等。
- UART:通用異步串行口,一般我們說(shuō)的單片機(jī)上的“串口”大多是特指UART。可以全雙工通信,線數(shù)也比較少。數(shù)據(jù)是異步傳輸?shù)?#xff0c;對(duì)雙方的時(shí)序要求比較嚴(yán)格,通信速度也不是很快。在多機(jī)(單片機(jī)與單片機(jī)之間)通信上面用的最多。
- IIC:一種串行傳輸方式,三線制,網(wǎng)上可找到其通信協(xié)議和用法的,IIC 接口的協(xié)議里面包括設(shè)備地址信息,可以同一總線上連接多個(gè)從設(shè)備,通過(guò)應(yīng)答來(lái)互通數(shù)據(jù)及命令。但是傳輸速率有限,標(biāo)準(zhǔn)模式下可達(dá)到100Kbps,快速模式下可達(dá)到400Kbps,高速模式下達(dá)到Mbps,不能實(shí)現(xiàn)全雙工,不適合傳輸很多的數(shù)據(jù)。
- USB:這個(gè)肯定是很熟悉的了,幾乎每天都打交道。通用串行總線(英語(yǔ):Universal Serial Bus,縮寫(xiě):USB)是連接計(jì)算機(jī)系統(tǒng)與外部設(shè)備的一種串口總線標(biāo)準(zhǔn),也是一種輸入輸出接口的技術(shù)規(guī)范,被廣泛地應(yīng)用于個(gè)人電腦和移動(dòng)設(shè)備等信息通訊產(chǎn)品,并擴(kuò)展至攝影器材、數(shù)字電視(機(jī)頂盒)、游戲機(jī)等其它相關(guān)領(lǐng)域。很多單片機(jī)上也帶有USB接口例如ST的STM32。
以上各種接口的通訊協(xié)議是不一樣的,如UART最簡(jiǎn)單的協(xié)議是一個(gè)起始位一個(gè)終止位中間八個(gè)數(shù)據(jù)位,而USB的話通訊協(xié)議就復(fù)雜的多的多。
4.串行接口電氣標(biāo)準(zhǔn)。
TTL電平:TTL電平指的是低電平為0,高電平為1(+5V電平),大多數(shù)的單片機(jī)自帶的串口用的就是這種電平。一般用于芯片之間通信,TTL電平通信距離較短。
UART使用的是單片機(jī)自帶的電平,單片機(jī)是什么電平標(biāo)準(zhǔn)那么該單片機(jī)上的UART就是什么電平標(biāo)準(zhǔn),例如51單片機(jī)的UART就是用的TTL電平。而這種電平是沒(méi)辦法用于遠(yuǎn)程數(shù)據(jù)傳輸?shù)?#xff0c;為了能讓串行數(shù)據(jù)能夠傳輸?shù)母h(yuǎn),我們需要更加強(qiáng)大的傳輸標(biāo)準(zhǔn),于是就有了RS-232、RS-422、RS485等。
- RS-232-C
- RS-422
- RS-485
下圖是一般傳輸過(guò)程:單片機(jī)匹配電平到RS-232,通過(guò)RS-232傳輸,再?gòu)腞S-232匹配到TTL再給另一個(gè)單片機(jī)。
?
5.其他
各種串行通訊是可以相互轉(zhuǎn)換的,如下圖中我們最經(jīng)常使用的CH340芯片就能夠把USB轉(zhuǎn)成TTL電平的UART串口通訊
?
?
參考資料:
【1】http://blog.sina.com.cn/s/blog_62dd0b350100qyey.html
【2】http://www.cnblogs.com/lucky-apple/archive/2008/07/03/1234581.html
【3】http://www.wowotech.net/basic_tech/serial_intro.html
【4】http://www.ing10bbs.com/forum.php?mod=viewthread&tid=437
?
轉(zhuǎn)載于:https://www.cnblogs.com/feipeng8848/p/6877089.html
總結(jié)
以上是生活随笔為你收集整理的单片机串行通信全解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: px ,em ,rem
- 下一篇: 其他团队对本团队评价的总结