單片機(jī)與外圍設(shè)備,單片機(jī)與單片機(jī)之間進(jìn)行通信,通俗點(diǎn)說就是數(shù)據(jù)傳輸,數(shù)據(jù)傳輸?shù)姆绞接卸喾N,我們經(jīng)常用到的就有串口通信、IIC通信、RS232,485,CAN總線等等。目前在中小學(xué)實(shí)驗(yàn)室中,學(xué)生們操作開源硬件,用到的通信方式以IIC,串口通信居多。今天咱們就先來聊聊串口通信。
單片機(jī)的CPU和外界通信時(shí)采用的是并行模式,為什么采用并行模式?大家只要稍微一思考就能想出答案。并行通信指的是數(shù)據(jù)(以8位為基數(shù))在傳輸時(shí)一次同時(shí)發(fā)送8個(gè)位,打個(gè)比方,這就像8個(gè)人同時(shí)去打水,每人提一個(gè)水桶,那怎樣才能在最短的時(shí)間內(nèi)將8個(gè)水桶裝滿水呢?那當(dāng)然是用8個(gè)水龍頭同時(shí)為8個(gè)水桶裝水,每個(gè)水龍頭裝一個(gè)桶,8個(gè)水龍頭相互之間各不影響。單片機(jī)的接口與外部設(shè)備進(jìn)行通信時(shí)則是采用串行通信模式,所謂串行通信模式,就是數(shù)據(jù)按照順序一位一位的傳輸,數(shù)據(jù)的傳輸具有時(shí)間上的先后順序。同樣打個(gè)比方,8個(gè)人去提水,只有一個(gè)水龍頭,這8個(gè)人就要一個(gè)一個(gè)排隊(duì),裝滿一個(gè)水桶再裝下一個(gè)水桶。很顯然,并行通信比串行通信速度更快。
采用并行通信,由于在同一時(shí)間內(nèi)需要同時(shí)發(fā)送或接收8個(gè)位的數(shù)據(jù),每個(gè)數(shù)據(jù)占據(jù)一個(gè)數(shù)據(jù)位,就需要8條數(shù)據(jù)線來進(jìn)行數(shù)據(jù)傳送與接收,在提高傳輸速度的同時(shí)犧牲了硬件資源;而采用串行通信,數(shù)據(jù)是一個(gè)位一個(gè)位的按順序發(fā)送或接收,那就只需要兩條數(shù)據(jù)線就夠了,一條用于發(fā)送數(shù)據(jù),一條用于接收數(shù)據(jù)。數(shù)據(jù)傳輸?shù)乃俣缺炔簧喜⑿型ㄐ?,但是?jié)省了大量的硬件資源。
至此,也許你已經(jīng)對(duì)串口通信有了初步認(rèn)識(shí),但是,還沒結(jié)束。我們?cè)趹?yīng)用串口通信時(shí)還會(huì)遇到一些專業(yè)術(shù)語(yǔ)知識(shí),下面我再給大家簡(jiǎn)單介紹一下:
1、串口連接。單片機(jī)進(jìn)行串口通信時(shí)總是要求實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,即發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。在我們的單片機(jī)上你會(huì)找到串口通信接口,TXD(Transmit Data)數(shù)據(jù)發(fā)送端口和RXD(Receive Data)數(shù)據(jù)接收端口。單片機(jī)在進(jìn)行串行通信連接時(shí),一方的TX數(shù)據(jù)發(fā)送端要接另一方的RX數(shù)據(jù)接收端;RX數(shù)據(jù)接收端接另一方的TX數(shù)據(jù)發(fā)送端。即你發(fā)我收,我發(fā)你收。當(dāng)然還要為單片機(jī)提供電源,這個(gè)就不用多說了吧!
2、波特率(bps)。bits per second,比特/秒。也叫做比特率,只是音譯上的區(qū)別而已。它反應(yīng)的是每秒進(jìn)行通訊的位數(shù)。我們經(jīng)??吹?a target="_blank">電腦網(wǎng)絡(luò)連接速度XXMbps,即是指每秒鐘處理數(shù)據(jù)的個(gè)數(shù)為XX兆位。
3、數(shù)據(jù)模式。這里就要為大家介紹下數(shù)據(jù)位、停止位、校驗(yàn)位的概念。
數(shù)據(jù)位是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包時(shí),實(shí)際的數(shù)據(jù)不一定全是8位的,標(biāo)準(zhǔn)的值是5、6、7和8位。究竟是幾位取決于實(shí)際傳送的信息。我們都知道一個(gè)字節(jié)是8個(gè)位。標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。而擴(kuò)展的ASCII碼則是0~255(8位)。如果數(shù)據(jù)使用標(biāo)準(zhǔn) ASCII碼,那么每個(gè)數(shù)據(jù)包就是7個(gè)數(shù)據(jù)位。每個(gè)數(shù)據(jù)包是指一個(gè)字節(jié),包括開始/停止位,數(shù)據(jù)位和校驗(yàn)位。由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語(yǔ)“包”指任何通信的情況。
停止位用于表示一個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的時(shí)差,導(dǎo)致不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,它還提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。停止位的位數(shù)越多,時(shí)鐘校正的程度越大,數(shù)據(jù)傳輸率同時(shí)也越慢。
檢驗(yàn)位是串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。也可以沒有校驗(yàn)位。對(duì)于偶和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶數(shù)個(gè)或者奇數(shù)個(gè)邏輯1。例如,如果數(shù)據(jù)是011,那么對(duì)于偶校驗(yàn),校驗(yàn)位為0,保證邏輯1的位數(shù)是偶數(shù)個(gè)。如果是奇校驗(yàn),校驗(yàn)位為1,這樣就有3個(gè)邏輯1位。高位和低位不是真正的檢查數(shù)據(jù),簡(jiǎn)單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),判斷通信是否受到干擾或者傳輸和接收數(shù)據(jù)是否同步。
一般在默認(rèn)的情況下為“8N1”模式,即8位數(shù)據(jù)位,無(None)校驗(yàn),1位停止位。
相信通過以上介紹,你已經(jīng)對(duì)串口通信又有了更深的理解。真正掌握串口通信原理還需要在實(shí)踐中不斷探索。
編輯:hfy
-
cpu
+關(guān)注
關(guān)注
68文章
10911瀏覽量
213152 -
串口通信
+關(guān)注
關(guān)注
34文章
1628瀏覽量
55757 -
并行通信
+關(guān)注
關(guān)注
1文章
31瀏覽量
10865
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
串口通信,Omron使用并行通信,有點(diǎn)慢
串口通信有哪幾種方式?串行通信與并行通信分別有哪些優(yōu)點(diǎn)以及缺點(diǎn)?
并行通信和串行通信的區(qū)別
并行通信和串行通信的優(yōu)缺點(diǎn)是什么?
什么是并行通信和串行通信
如何配置STM32串口異步通信的輸入輸出模式呢
對(duì)于串口通信程序的LabView不同編程模式之探討
串口通信與并行通信有什么區(qū)別
![<b class='flag-5'>串口</b><b class='flag-5'>通信</b>與<b class='flag-5'>并行</b><b class='flag-5'>通信</b>有什么區(qū)別](https://file.elecfans.com/web1/M00/45/A1/pIYBAFpybkCAeXtdAAHu4t_P7pw815.png)
串口通信的原理和使用教程及使用代碼免費(fèi)下載
![<b class='flag-5'>串口</b><b class='flag-5'>通信</b>的原理和使用教程及使用代碼免費(fèi)下載](https://file.elecfans.com/web1/M00/A6/15/pIYBAF12FbqAGsbyAATYalW1BRk928.png)
STM32中的串口通信的基礎(chǔ)知識(shí)
![STM32中的<b class='flag-5'>串口</b><b class='flag-5'>通信</b>的基礎(chǔ)知識(shí)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論