《《串行通信數(shù)據(jù)格式》PPT課件.pptx》由會(huì)員分享,可在線閱讀,更多相關(guān)《《串行通信數(shù)據(jù)格式》PPT課件.pptx(26頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、串行通信數(shù)據(jù)格式.發(fā)送和接收時(shí)序 醫(yī)電02 龍韜臣 1.異步(用于單片機(jī))通信數(shù)據(jù)格式.發(fā)送和接收時(shí)序。 2.同步(計(jì)算機(jī)內(nèi)部)通信數(shù)據(jù)格式.發(fā)送和接收時(shí)序。 異步通信數(shù)據(jù)格式一般為字符格式一個(gè)字符一個(gè)字符地傳輸,每個(gè)字符一位一位地傳輸,并且傳輸一個(gè)字符時(shí),總是以“起始位”開始,以“停止位”結(jié)束,字符之間沒有固定的時(shí)間間隔要求。每一個(gè)字符的前面都有一位起始位(低電平,邏輯值),字符本身由5-7位數(shù)據(jù)位組成,接著字符后面是一位校驗(yàn)位(也可以沒有校驗(yàn)位),最后是一位或一位半或二位停止位,停止位后面是不定長(zhǎng)的空閑位。停止位和空閑位都規(guī)定為高電平(邏輯值),這樣就保證起始位開始處一定有一個(gè)下跳沿。傳送
2、速度一般在509600波特范圍內(nèi),用于傳送信息量不大,傳送速率要求較低的場(chǎng)合。波特率:?jiǎn)挝粫r(shí)間傳送2進(jìn)制位數(shù),以位/秒為單位。1.5本質(zhì)含義是信號(hào)出現(xiàn)的時(shí)間,故可有分?jǐn)?shù)位。 異步通信數(shù)據(jù)格式: 第n-1位 | | |n+1位 | |空閑位| | 七位數(shù)據(jù) | (停止位) 起始位 奇偶校驗(yàn)位(可有可不有) 一位時(shí)間取決于波特率1 1 0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 1 1 1 1 0 接收時(shí)鐘和發(fā)送時(shí)鐘與波特率有如下關(guān)系:F = n B 這里F 是發(fā)送時(shí)鐘或接收時(shí)鐘的頻率; B 是數(shù)據(jù)傳輸?shù)牟ㄌ芈剩?n 稱為波特率因子。設(shè)發(fā)送或接收時(shí)鐘的周期為Tc,頻率為F的
3、位傳輸時(shí)間為Td,則: Tc = 1/F , Td = 1/B 得到: Tc = Td /n 在實(shí)際串行通信中,波特率因子可以設(shè)定。在異步傳送時(shí),n = 1,16,64,實(shí)際常采用n = 16,即發(fā)送或接收時(shí)鐘的頻率要比數(shù)據(jù)傳送的波特率高n倍。在同步通信時(shí),波特率因子n必須等于1。 例:傳送8位數(shù)據(jù)45H(0100,0101B),奇校驗(yàn),1個(gè)停止位,則信號(hào)線上的波形象圖2所示那樣:異步通信的速率:若9600bps,每字符8位,1起始,1停止,無奇偶,則實(shí)際每字符傳送10位,則960字符/秒。 異步通信數(shù)據(jù)格式: 第n-1位 | | |n+1位 | |空閑位| | 七位數(shù)據(jù) | (停止位) 起始
4、位 奇偶校驗(yàn)位(可以沒有校驗(yàn)位) 一位時(shí)間取決于波特率1 1 0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 1 1 1 1 0 2、異步通信的發(fā)送過程 發(fā)送端以“發(fā)送時(shí)鐘”和“波特率因子”決定一位的時(shí)間長(zhǎng)度。 (1)當(dāng)初始化后,或者沒有信息需要發(fā)送時(shí),發(fā)送端輸出邏輯1,即空閑位,空閑位可以有任意數(shù)量。 (2)當(dāng)需要發(fā)送時(shí),發(fā)送端首先輸出邏輯0,作為起始位。 (由CPU控制?)(3)接著,發(fā)送端首先發(fā)送D0位,直到各數(shù)據(jù)位發(fā)送完。 (4)如果需要的話,發(fā)送端輸出校驗(yàn)位。 (5)最后,發(fā)送端輸出停止位(邏輯1)。 (6)如果沒有信息需要發(fā)送時(shí),發(fā)送端輸出邏輯1,即空閑位,空閑
5、位可以有任意數(shù)量。如果還有信息需要發(fā)送,轉(zhuǎn)入第(2)步。 3.異步通信的接收過程 接收端以“接收時(shí)鐘”和“波特率因子”決定一位的時(shí)間長(zhǎng)度。下面以波特率因子等于16(接收時(shí)鐘每16個(gè)時(shí)鐘周期,使接收移位寄存器移位一次)、正邏輯為例說明,如圖3所示。 圖3 (1)開始通信時(shí),信號(hào)線為空閑(邏輯1),當(dāng)檢測(cè)到由1到0的跳變時(shí),開始對(duì)“接收時(shí)鐘”計(jì)數(shù)。 (2)當(dāng)計(jì)到8個(gè)時(shí)鐘時(shí),對(duì)輸入信號(hào)進(jìn)行檢測(cè),若仍為低電平,則確認(rèn)這是“起始位”B,而不是干擾信號(hào)。 (3)接收端檢測(cè)到起始位后,隔16個(gè)接收時(shí)鐘,對(duì)輸入信號(hào)檢測(cè)一次,把對(duì)應(yīng)的值作為D0位數(shù)據(jù)。若為邏輯1, 作為數(shù)據(jù)位1;若為邏輯0,作為數(shù)據(jù)位0。 (4
6、)再隔16個(gè)接收時(shí)鐘,對(duì)輸入信號(hào)檢測(cè)一次,把對(duì)應(yīng)的值作為D1位數(shù)據(jù)。.,直到全部數(shù)據(jù)位都輸入。 (5)檢測(cè)校驗(yàn)位P(如果有的話)。 (6)接收到規(guī)定的數(shù)據(jù)位個(gè)數(shù)和校驗(yàn)位后,通信接口電路希望收到停止位S(邏輯1),若此時(shí)未收到邏輯1,說明出現(xiàn)了錯(cuò)誤,在狀態(tài)寄存器中置“幀錯(cuò)誤”標(biāo)志。若沒有錯(cuò)誤,對(duì)全部數(shù)據(jù)位進(jìn)行奇偶校驗(yàn),無校驗(yàn)錯(cuò)時(shí),把數(shù)據(jù)位從移位寄存器中送數(shù)據(jù)輸入寄存器。若校驗(yàn)錯(cuò),在狀態(tài)寄存器中置奇偶錯(cuò)標(biāo)志。 (7)本幀信息全部接收完,把線路上出現(xiàn)的高電平作為空閑位。 (8)當(dāng)信號(hào)再次變?yōu)榈蜁r(shí),開始進(jìn)入下一幀的檢測(cè)。 接收端為實(shí)現(xiàn)采樣數(shù)據(jù)的基準(zhǔn),可以執(zhí)行以下步驟: 在接收端設(shè)置一采樣時(shí)鐘頻率(此頻
7、率是接收頻率的16倍)計(jì)數(shù)器,當(dāng)檢測(cè)到起始位下降沿時(shí),將其清零,并開始對(duì)采樣時(shí)鐘計(jì)數(shù),即每來一個(gè)時(shí)鐘,計(jì)數(shù)器加1。 當(dāng)計(jì)數(shù)器計(jì)到8時(shí),表示已到達(dá)起始位的中間位置,此時(shí)采樣值為0,說明是真正的起始位(這個(gè)有必要?),同時(shí)將計(jì)數(shù)器清零;若采樣值不為0,則說明一開始檢測(cè)到的下降沿不是真正的起始位前沿,而是一次干擾,此次檢測(cè)應(yīng)作廢,計(jì)數(shù)器清零,并重新開始檢測(cè)起始位。 檢測(cè)到真正的起始位后,計(jì)數(shù)器清零,以后每次計(jì)到16時(shí),便采樣收到的信號(hào)波形(即每一位的中間),將采到的數(shù)值暫存起來,同時(shí)將計(jì)數(shù)器清零,重新計(jì)數(shù),直至最后的停止位被采樣。 如果停止位采樣正確(為1),則字符被接收,并由暫存器裝入寄存器。若停
8、止位采樣值為0,說明同步或傳輸有問 題,此次采樣所得字符作廢,不被接收。 單片機(jī)的串行通信工作方式SM0、SM1選擇四種工作方式。(1)方式0:同步移位寄存器方式 用于擴(kuò)展并行I/O接口。 1. 一幀8位,無起始位和停止位。 2. RXD:數(shù)據(jù)輸入/輸出端。 TXD:同步脈沖輸出端,每個(gè)脈沖對(duì)應(yīng)一個(gè)數(shù)據(jù)位。 3. 波特率B = fosc/12 如: fosc=12MHz,B=1MHz,每位數(shù)據(jù)占1s。 4. 發(fā)送過程:寫入SBUF,啟動(dòng)發(fā)送,一幀發(fā)送結(jié)束,TI=1。 接收過程:REN=1且RI=0,啟動(dòng)接收,一幀接收完畢,RI=1。 時(shí)序圖: 對(duì)于以上發(fā)送、接收過程應(yīng)注意以下幾點(diǎn): (1)接收
9、端總是在每個(gè)字符的頭部(即起始位)進(jìn)行一次重新定位,因此發(fā)送端可以在字符之間插入不等長(zhǎng)的空閑位,不影響接收端的接收。 (2)發(fā)送端的發(fā)送時(shí)鐘和接收端的接收時(shí)鐘,其頻率允許有一定差異,當(dāng)頻率差異在一定范圍內(nèi),不會(huì)引起接收端檢測(cè)錯(cuò)位,能夠正確接收。并且這種頻率差異不會(huì)因多個(gè)字符的連續(xù)接收而造成誤差累計(jì)(因?yàn)槊總€(gè)字符的開始(起始位處)接收方均重新定位)。只有當(dāng)發(fā)送時(shí)鐘和接收時(shí)鐘頻率差異太大,引起接收端采樣錯(cuò)位,才造成接收錯(cuò)誤。 ?(3)起始位、校驗(yàn)位、停止位、空閑位的信號(hào),由“發(fā)送移位寄存器”自動(dòng)插入。在接收方,“接收移位寄存器”接收到一幀完整信息(起始、數(shù)據(jù)、校驗(yàn)、停止)后,僅把數(shù)據(jù)的各位送至“數(shù)
10、據(jù)輸入寄存器”,即CPU從“數(shù)據(jù)輸入寄存器”中讀得的信息,只是有效數(shù)字,不包含起始位、校驗(yàn)位、停止位信息。 同步通信:同步通信時(shí)要建立發(fā)送方時(shí)鐘對(duì)接收方時(shí)鐘的直接控制,使雙方達(dá)到完全同步。此時(shí),傳輸數(shù)據(jù)位之間的距離均為“位間隔”的整數(shù)倍,同時(shí)傳送字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。 同步通信使用的數(shù)據(jù)格式根據(jù)采用的控制規(guī)程(通信雙方就如何交換信息所建立的一些規(guī)定和過程稱為通信控制規(guī)程),可分為面向字符型和面向位(bit)型兩種,面向字符型數(shù)據(jù)格式又有單同步,雙同步,和外同步之分。三個(gè)同步方式均以2個(gè)字節(jié)的冗余檢驗(yàn)碼CRC作為一幀信息的結(jié)束。 單同步:發(fā)送方先傳送1個(gè)同步字符,
11、再傳送數(shù)據(jù)塊,接收方檢測(cè)到同步字符后接收數(shù)據(jù);(同步字符和數(shù)據(jù)塊的區(qū)別) 雙同步:發(fā)送方先傳送2個(gè)同步字符,再傳送數(shù)據(jù)塊,接收方檢測(cè)到同步字符后接收數(shù)據(jù);外同步:用一條專用線來傳送同步字符,以實(shí)現(xiàn)收發(fā)雙方同步操作。 面向字符的同步協(xié)議(IBM的BSC協(xié)議)該協(xié)議規(guī)定了10個(gè)特殊字符(稱為控制字符)作為信息傳輸?shù)臉?biāo)志。其格式為:SYN SOH 標(biāo)題STX 數(shù)據(jù)塊ETB/ETX 塊校驗(yàn)SYN:同步字符(Synchronous character),每幀可加1個(gè)(單同步)或2個(gè)(雙同步)同步字符。SOH:標(biāo)題開始(Start of Header)。標(biāo)題:Header,包含源地址(發(fā)送方地址)、目的地
12、址(接收方地址)、路由指示。(這些都不太懂)STX:正文開始(Start of Text)。數(shù)據(jù)塊:正文(Text),由多個(gè)字符組成。ETB:塊傳輸結(jié)束(end of transmission block),標(biāo)識(shí)本數(shù)據(jù)塊結(jié)束。ETX:全文結(jié)束(end of text),(全文分為若干塊傳輸)。塊校驗(yàn):對(duì)從SOH開始, 直到ETB/ETX字段的檢驗(yàn)碼。 面向字符的同步協(xié)議: 面向位時(shí),將數(shù)據(jù)塊看作數(shù)據(jù)流,并用序列01111110作為開始和結(jié)束標(biāo)志。為了避免在數(shù)據(jù)流中出現(xiàn)序列01111110時(shí)引起的混亂,發(fā)送方總是在其發(fā)送的數(shù)據(jù)流中每出現(xiàn)5個(gè)連續(xù)的l”就插入一個(gè)附加的“0”;接收方則每檢測(cè)到5個(gè)連
13、續(xù)的“1”并且其后有一個(gè)“0”時(shí),就刪除該“0”。典型的面向位的同步協(xié)議如國(guó)際標(biāo)準(zhǔn)化組織(ISO)的高級(jí)數(shù)據(jù)鏈路控制規(guī)程HDLC和IBM的同步數(shù)據(jù)鏈路控制規(guī)程SDLC。 3、面向 、面向 bit 的同步協(xié)議( ISO 的 HDLC )一幀信息可以是任意位,用位組合標(biāo)識(shí) 幀的開始和結(jié)束。 幀格式為: 幀格式為:F場(chǎng) A場(chǎng) C場(chǎng) I場(chǎng) FC 場(chǎng) F場(chǎng)F場(chǎng) :標(biāo)志;作為 一幀的開始和結(jié)束,標(biāo)志字符8位, 01111110 。A場(chǎng):地址,規(guī)定接收方可為 8的整倍位。接收方檢查每個(gè)地址字節(jié)第 1位,如果為 0 ,則后邊跟著另一個(gè)地址字節(jié)。若為 1 ,則該字節(jié)為最后一個(gè)地址。 C場(chǎng):控制場(chǎng)。指示信息場(chǎng)的類
14、型,8位或16位。若第1字節(jié)的第1位為0,則還有第2個(gè)字節(jié)也是控制場(chǎng)。 I場(chǎng):信息場(chǎng)。要傳送的數(shù)據(jù)。 FC場(chǎng):幀校驗(yàn)場(chǎng)。16位循環(huán)冗余校驗(yàn)碼CRC。除F場(chǎng)和自動(dòng)插入的0位外,均參加CRC計(jì)算。 串口通訊-同步通信方式同步通信方式的特點(diǎn):采用同步通信時(shí),將許多字符組成一個(gè)信息組,這樣,字符可以一個(gè)接一個(gè)地傳輸,但是,在每組信息(通常稱為幀)的開始要加上同步字符,在沒有信息要傳輸時(shí),要填上空字符,因?yàn)橥絺鬏敳辉试S有間隙?。在同步傳輸過程中,一個(gè)字符可以對(duì)應(yīng)58位。當(dāng)然,對(duì)同一個(gè)傳輸過程,所有字符對(duì)應(yīng)同樣的數(shù)位,比如說n位。這樣,傳輸時(shí),按每n位劃分為一個(gè)時(shí)間片,發(fā)送端在一個(gè)時(shí)間片中發(fā)送一個(gè)字符,
15、接收端則在一個(gè)時(shí)間片中接收一個(gè)字符。同步傳輸時(shí),一個(gè)信息幀中包含許多字符,每個(gè)信息幀用同步字符作為開始,一般將同步字符和空字符用同一個(gè)代碼。在整個(gè)系統(tǒng)中,由一個(gè)統(tǒng)一的時(shí)鐘控制發(fā)送端的發(fā)送和空字符用同一個(gè)代碼。接收端當(dāng)然是應(yīng)該能識(shí)別同步字符的,當(dāng)檢測(cè)到有一串?dāng)?shù)位和同步字符相匹配時(shí),就認(rèn)為開始一個(gè)信息幀,于是,把此后的數(shù)位作為實(shí)際傳輸信息來處理。 QQ中的同步和異步通信:我們用的文件傳輸功能可以看成是同步通信的典范。首先傳文件的雙方必須都說好一個(gè)傳文件的時(shí)間,如果雙方有一個(gè)不在線上,就不能傳送。其次,發(fā)送方發(fā)送文件命令后,接收方要確認(rèn)一下是否接收,這就是個(gè)建立文件傳輸連接的過程。一旦傳輸開始,所有文件數(shù)據(jù)就必須連續(xù)的傳輸過去,任何中斷都將導(dǎo)致傳輸失敗。而異步通信的例子就是我們用的最多的qq發(fā)送文字形式的聊天。比如A要發(fā)給B一個(gè)文字消息:“在嗎?”。這時(shí)B有可能不在線上,但這消息并不馬上就丟失,只要B在一定的時(shí)間間隔內(nèi)(比如幾天)打開qq,登錄上線就能收到這條消息。但與同步通信相同的一點(diǎn):發(fā)送方必須指明發(fā)送對(duì)象才能保證異步通信的正確性。如果明明要給B發(fā)消息,卻打開C的對(duì)話框發(fā)送本該給B的消息,那B永遠(yuǎn)都接收不了這一消息了。 Thats allThank you!