s5pv210——串口通信的基础概念
以下內(nèi)容源于朱友鵬《物聯(lián)網(wǎng)大講壇》課程的學(xué)習(xí),如有侵權(quán),請(qǐng)告知?jiǎng)h除。
總結(jié)
1、同步異步:是否同一時(shí)鐘,數(shù)據(jù)格式
2、電平信號(hào)、差分信號(hào):有無(wú)參考電平(有,無(wú))
3、串行接口和并行接口:信號(hào)線數(shù)目
4、單工通信、半雙工通信、全雙工通信:“工”即工作
4、串口通信
(1)異步、差分、串行
(2)三根通信線(TX、RX、GND)
(3)設(shè)置波特率、數(shù)據(jù)格式(起始位、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位)
?
?
一、電子通信的一些概念
1、同步通信和異步通信
https://blog.csdn.net/wind19/article/details/7433249
- 發(fā)送方和接收方按照同一個(gè)時(shí)鐘節(jié)拍工作就叫同步;發(fā)送方和接收方按照自己的節(jié)拍工作就叫異步;
- 同步通信中,通信雙方按照統(tǒng)一節(jié)拍工作,所以配合很好;一般需要發(fā)送方給接收方發(fā)送信息同時(shí)發(fā)送時(shí)鐘信號(hào),接收方根據(jù)發(fā)送方給它的時(shí)鐘信號(hào)來(lái)安排自己的節(jié)奏。同步通信用在通信雙方信息交換頻率固定,或者經(jīng)常通信時(shí)。
- 異步通信又叫異步通知。在雙方通信的頻率不固定時(shí)(有時(shí)3ms收發(fā)一次,有時(shí)3天才收發(fā)一次)不適合使用同步通信,而適合異步通信。異步通信時(shí)接收方不必一直在意發(fā)送方,發(fā)送方需要發(fā)送信息時(shí)會(huì)首先給接收方一個(gè)信息開始的起始信號(hào),接收方接收到起始信號(hào)后就認(rèn)為后面緊跟著的就是有效信息,才會(huì)開始注意接收信息,直到收到發(fā)送方發(fā)過來(lái)的結(jié)束標(biāo)志。
2、電平信號(hào)和差分信號(hào)
- 電平信號(hào)和差分信號(hào)是用來(lái)描述通信線路傳輸方式的,即如何在通信線路上表達(dá)1和0。
- 電平信號(hào)的傳輸線中有一個(gè)參考電平線(一般是GND),然后信號(hào)線上的信號(hào)值是由信號(hào)線電平和參考電平線的電壓差決定。
- 差分信號(hào)的傳輸線中沒有參考電平,所有都是信號(hào)線,1和0的表達(dá)依靠信號(hào)線之間的電壓差。
- 電平信號(hào)的2根通信線之間的電平差異容易受到干擾,傳輸容易失敗;差分信號(hào)不容易受到干擾因此傳輸質(zhì)量比較穩(wěn)定,現(xiàn)代通信一般都使用差分信號(hào)。
3、并行接口和串行接口
- 串行、并行主要是考慮通信線的根數(shù),就是發(fā)送方和接收方同時(shí)可以傳遞的信息量的多少;
- 譬如在電平信號(hào)下,1根參考電平線+1根信號(hào)線可以傳遞1位二進(jìn)制;如果我們有3根線(2根信號(hào)線+1根參考線)就可以同時(shí)發(fā)送2位二進(jìn)制;如果想同時(shí)發(fā)送8位二進(jìn)制就需要9根線。在差分信號(hào)下,2根線(彼此差分)可以同時(shí)發(fā)送1位二進(jìn)制;如果需要同時(shí)發(fā)送8位二進(jìn)制,需要16根線。
- 似乎并行接口比串行接口要快(串行接口一次只能發(fā)送1位二進(jìn)制,而并行接口一次可以發(fā)送多位二進(jìn)制)要更優(yōu)秀;但是實(shí)際上串行接口才是王道,用的比較廣。因?yàn)楦⌒盘?hào)線,而且對(duì)傳輸線的要求更低、成本更低;而且串行時(shí)可以通過提高通信速度來(lái)提高總體通信性能,不一定非得要并行。經(jīng)過這么多年發(fā)展,最終勝出的是:異步、串行、差分,譬如USB和網(wǎng)絡(luò)通信。
?
二、串口通信的基本概念
1、串口通信的特點(diǎn):異步、電平信號(hào)、串行
- 異步:串口通信的發(fā)送方和接收方之間是沒有統(tǒng)一的時(shí)鐘信號(hào)的。
- 電平信號(hào):串口通信出現(xiàn)時(shí)間早,速率較低,傳輸?shù)木嚯x較近,所以干擾還不太明顯,因此當(dāng)時(shí)使用了電平信號(hào)傳輸。后期出現(xiàn)的傳輸協(xié)議都改成差分信號(hào)傳輸了。
- 串行通信:串口通信每次同時(shí)只能傳輸1個(gè)二進(jìn)制位。
?
2、RS232電平和TTL電平
(1)電平信號(hào)是用信號(hào)線電平減去參考線電平得到電壓差,這個(gè)電壓差決定了傳輸值是1還是0。
(2)在電平信號(hào)時(shí)多少V代表1,多少V代表0不是固定的,取決于電平標(biāo)準(zhǔn)。
- 譬如RS232電平中-3V~-15V表示1;+3~+15V表示0;TTL電平則是+5V表示1,0V表示0。
- RS232的電平定義比較大,適合干擾大、距離遠(yuǎn)的情況;TTL電平電壓范圍小,適合距離近且干擾小的情況。
- 臺(tái)式電腦后面的串口插座就是RS232接口的,在工業(yè)上用串口時(shí)都用這個(gè),傳輸距離小于15米;TTL電平一般用在電路板內(nèi)部?jī)蓚€(gè)芯片之間。
?
3、波特率
(1)波特率(bandrate),指的是串口通信的速率,也就是串口通信時(shí)每秒鐘可以傳輸多少個(gè)二進(jìn)制位。
- 譬如每秒種可以傳輸9600個(gè)二進(jìn)制位(傳輸一個(gè)二進(jìn)制位需要的時(shí)間是1/9600秒,也就是104us),波特率就是9600。
(2)串口通信的波特率不能隨意設(shè)定,而應(yīng)該在一些值中去選擇。
- 一般最常見的波特率是9600或者115200(低端單片機(jī)如51常用9600,高端單片機(jī)和嵌入式SoC一般用115200)。
- 為什么波特率不可以隨便指定?第一,通信雙方必須事先設(shè)定相同的波特率這樣才能成功通信,如果發(fā)送方和接收方按照不同的波特率通信則根本收不到,因此波特率最好是大家熟知的而不是隨意指定的。第二,常用的波特率經(jīng)過長(zhǎng)久發(fā)展,就形成了共識(shí),大家常用就是9600或者115200。
4、起始位、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位
- 串口通信時(shí),一個(gè)通信單元由“起始位+數(shù)據(jù)位+奇偶校驗(yàn)位+停止位”組成。
- 起始位表示發(fā)送方要開始發(fā)送一個(gè)通信單元;數(shù)據(jù)位是一個(gè)通信單元中發(fā)送的有效信息位;奇偶校驗(yàn)位是用來(lái)校驗(yàn)數(shù)據(jù)位,以防止數(shù)據(jù)位出錯(cuò)的;停止位是發(fā)送方用來(lái)表示本通信單元結(jié)束標(biāo)志的。
- 起始位的定義是串口通信標(biāo)準(zhǔn)事先指定的,是由通信線上的電平變化來(lái)反映的。
- 數(shù)據(jù)位是本次通信真正要發(fā)送的有效數(shù)據(jù),串口通信一次發(fā)送多少位有效數(shù)據(jù)是可以設(shè)定的(一般可選的有6、7、8、9,99%情況下我們都是選擇8位數(shù)據(jù)位。因?yàn)槲覀円话阃ㄟ^串口發(fā)送的文字信息都是ASCII碼編碼的,而ASCII碼中一個(gè)字符剛好編碼為8位。)
- 奇偶校驗(yàn)位是用來(lái)給數(shù)據(jù)位進(jìn)行奇偶校驗(yàn)(把待校驗(yàn)的有效數(shù)據(jù)逐個(gè)位的加起來(lái),總和為奇數(shù)奇偶校驗(yàn)位就為1,總和為偶數(shù)奇偶校驗(yàn)位就為0)的,可以在一定程度上防止位反轉(zhuǎn)。
- 停止位的定義是串口通信標(biāo)準(zhǔn)事先指定的,是由通信線上的電平變化來(lái)反映的。常見的有1位停止位,1.5位停止位,2位停止位等。99%情況下都是用1位停止位。
- 串口通信時(shí)因?yàn)槭钱惒酵ㄐ?#xff0c;所以通信雙方必須事先約定好通信參數(shù),這些通信參數(shù)包括:波特率、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位(串口通信中起始位定義是唯一的,所以一般不用選擇)
?
三、串口通信的基本原理
1、單工通信、雙工通信、半雙工通信
- 如果只能A發(fā)B收則單工,A發(fā)B收或者B發(fā)A收(兩個(gè)方向不能同時(shí))叫半雙工,A發(fā)B收同時(shí)B發(fā)A收叫全雙工。
2、三根通信線:Rx Tx GND
- 任何通信都要有信息傳輸載體,或者是有線的或者是無(wú)線的。串口通信是有線通信,是通過串口線來(lái)通信的。
- 串口通信線最少需要2根(GND和信號(hào)線),可以實(shí)現(xiàn)單工通信,也可以使用3根通信線(Tx、Rx、GND)來(lái)實(shí)現(xiàn)全雙工。
- 一般開發(fā)板都會(huì)引出SoC上串口引腳直接輸出的TTL電平的串口(X210開發(fā)板沒有),插座用插針式插座,每個(gè)串口引出的都有3個(gè)線(Tx、Rx、GND),可以用這些插座直接連接外部的TTL電平的串口設(shè)備。
3、收發(fā)雙方事先規(guī)定好通信參數(shù)(波特率、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位等)
- 串口通信屬于基層基本性的通信規(guī)約,它自己本身不會(huì)去協(xié)商通信參數(shù),需要通信前通信雙方事先約定好通信參數(shù)(一般4個(gè)最重要的);
- 串口通信的任何一個(gè)關(guān)鍵參數(shù)設(shè)置錯(cuò)誤,都會(huì)導(dǎo)致通信失敗。譬如波特率調(diào)錯(cuò)了,發(fā)送方發(fā)送沒問題,接收方也能接收,但是接收到全是亂碼。
4、信息以二進(jìn)制流的方式在信道上傳輸
- 串口通信的發(fā)送方每隔一定時(shí)間(時(shí)間固定為1/波特率,單位是秒)將有效信息(1或者0)放到通信線上去,逐個(gè)二進(jìn)制位的進(jìn)行發(fā)送。
- 接收方通過定時(shí)(起始時(shí)間由讀到起始位標(biāo)志開始,間隔時(shí)間由波特率決定)讀取通信線上的電平高低來(lái)區(qū)分內(nèi)容是1還是0。依次讀取數(shù)據(jù)位、奇偶校驗(yàn)位、停止位,停止位就表示這一個(gè)通信單元(幀)結(jié)束,然后中間是不定長(zhǎng)短的非通信時(shí)間(發(fā)送方有可能緊接著就發(fā)送第二幀,也可能半天都不發(fā)第二幀,這就叫異步通信),下來(lái)就是第二幀……
- 波特率非常重要,波特率錯(cuò)了整個(gè)通信就亂套了;數(shù)據(jù)位、奇偶校驗(yàn)位、停止位也很重要,否則可能認(rèn)不清數(shù)據(jù);通過串口不管發(fā)數(shù)字、還是文本還是命令還是什么,都要先對(duì)發(fā)送內(nèi)容進(jìn)行編碼,編碼成二進(jìn)制再進(jìn)行逐個(gè)位的發(fā)送。
- 串口發(fā)送的一般都是字符,一般都是ASCII碼編碼后的字符,所以一般設(shè)置數(shù)據(jù)位都是8位,方便剛好一幀發(fā)送1個(gè)字符。
?
四、DB9接口介紹
(1)DB9接口是串口通信早期比較常用的一種規(guī)范化接口。
(2)串行通信在早期是計(jì)算機(jī)與外界通信的主要手段,那時(shí)候的計(jì)算機(jī)都有標(biāo)準(zhǔn)配置的串口以實(shí)現(xiàn)和外部通信。那時(shí)候就定義了一套標(biāo)準(zhǔn)的串口規(guī)約,DB9接口就是標(biāo)準(zhǔn)接口。
(3)DB9接口中有9根通信線,其中3根很重要,為GND、Tx、Rx,必不可少;剩余6根都是和流控有關(guān)的,現(xiàn)代我們使用串口都是用來(lái)做調(diào)試一般都禁用流控,不然可能發(fā)生意想不到的問題,所以這6根沒用。
?
總結(jié)
以上是生活随笔為你收集整理的s5pv210——串口通信的基础概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 方舟服务器物品代码,方舟:生存进化 全物
- 下一篇: uboot源码——命令体系