久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

青風(fēng)和大家一起學(xué)Stellaris系列ARM——六.串口通信,。

 昵稱7657529 2011-09-18
青風(fēng)和大家一起學(xué)Stellaris系列ARM——六.串口通信,。

一:基礎(chǔ)知識:

學(xué)過51的同學(xué)都會知道串口通信。串口是計算機上一種非常通用設(shè)備通信的協(xié)議,。大多數(shù)計算機包含兩個基于RS232的串口,。串口同時也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口,。同時,,串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。

串口通信的概念非常簡單,,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù),。它很簡單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信,。比如IEEE488定義并行通行狀態(tài)時,規(guī)定設(shè)備線總長不得超過20,,并且任意兩個設(shè)備間的長度不得超過2,;而對于串口而言,長度可達(dá)1200,。典型地,,串口用于ASCII碼字符的傳輸。通信使用3根線完成:(1)地線,,(2)發(fā)送,,(3)接收。由于串口通信是異步的,,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù),。其他線用于握手,但是不是必須的,。串口通信最重要的參數(shù)是波特率,、數(shù)據(jù)位、停止位和奇偶校驗。對于兩個進行通信的端口,,這些參數(shù)必須匹配:
  a,,波特率:這是一個衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個數(shù),。例如300波特表示每秒鐘發(fā)送300bit,。當(dāng)我們提到時鐘周期時,我們就是指波特率例如如果協(xié)議需要4800波特率,,那么時鐘是4800Hz,。這意味著串口通信在數(shù)據(jù)線上的采樣率為4800Hz。通常電話線的波特率為14400,,2880036600,。波特率可以遠(yuǎn)遠(yuǎn)大于這些值,但是波特率和距離成反比,。高波特率常常用于放置的很近的儀器間的通信,,典型的例子就是GPIB設(shè)備的通信。
波特率除數(shù)(baud-rate divisor)是一個22位數(shù),,它由16位整數(shù)和6位小數(shù)組成,。波特率發(fā)生器使用這兩個值組成的數(shù)字來決定位周期。通過帶有小數(shù)波特率的除法器,,在足夠高的系統(tǒng)時鐘速率下,,UART可以產(chǎn)生所有標(biāo)準(zhǔn)的波特率,而誤差很小,。
波特率除數(shù)公式:
BRD BRDI.BRDF SystemClock(16×BaudRate)
其中:
BRD22位的波特率除數(shù),,由16位整數(shù)和6位小數(shù)組成
BRDIBRD的整數(shù)部分
BRDFBRD的小數(shù)部分
SystemClock是系統(tǒng)時鐘(UART模塊的時鐘直接來自SystemClock
BaudRate是波特率(960038400,,115200等)
  b,,數(shù)據(jù)位:這是衡量通信中實際數(shù)據(jù)位的參數(shù)。當(dāng)計算機發(fā)送一個信息包,,實際的數(shù)據(jù)不會是8位的,,標(biāo)準(zhǔn)的值是578位,。如何設(shè)置取決于你想傳送的信息,。比如,標(biāo)準(zhǔn)的ASCII碼是01277位),。擴展的ASCII碼是02558位),。如果數(shù)據(jù)使用簡單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個數(shù)據(jù)包使用7位數(shù)據(jù),。每個包是指一個字節(jié),包括開始/停止位,,數(shù)據(jù)位和奇偶校驗位,。由于實際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語指任何通信的情況,。
  c,,停止位:用于表示單個包的最后一位。典型的值為1,,1.52位。由于數(shù)據(jù)是在傳輸線上定時的,,并且每一個設(shè)備有其自己的時鐘,,很可能在通信中兩臺設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,,并且提供計算機校正時鐘同步的機會,。適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,,但是數(shù)據(jù)傳輸率同時也越慢,。
  d,奇偶校驗位:在串口通信中一種簡單的檢錯方式,。有四種檢錯方式:偶、奇,、高和低,。當(dāng)然沒有校驗位也是可以的。對于偶和奇校驗的情況,,串口會設(shè)置校驗位(數(shù)據(jù)位后面的一位),,用一個值確保傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。例如,,如果數(shù)據(jù)是011,,那么對于偶校驗,校驗位為0,,保證邏輯高的位數(shù)是偶數(shù)個,。如果是奇校驗,校驗位為1,,這樣就有3個邏輯高位,。高位和低位不真正的檢查數(shù)據(jù),簡單置位邏輯高或者邏輯低校驗,。這樣使得接收設(shè)備能夠知道一個位的狀態(tài),,有機會判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。

 

 

發(fā)送邏輯對從發(fā)送FIFO讀取的數(shù)據(jù)執(zhí)行并→串轉(zhuǎn)換,??刂七壿嬢敵銎鹗嘉辉谙鹊拇形涣鳎⑶腋鶕?jù)控制寄存器中已編程的配置,,會面緊跟著數(shù)據(jù)位(注意:最低位LSB先輸出),、奇偶校驗位和停止位。在檢測到一個有效的起始脈沖后,,接收邏輯對接收到的位流執(zhí)行串→并轉(zhuǎn)換,。此外還會對溢出錯誤、奇偶校驗錯誤,、幀錯誤和線中止(line-break)錯誤進行檢測,,并將檢測到的狀態(tài)附加到被寫入接收FIFO的數(shù)據(jù)中。
發(fā)送時,,數(shù)據(jù)被寫入發(fā)送FIFO,。如果UART被使能,則會按照預(yù)先設(shè)置好的參數(shù)(波特率,、數(shù)據(jù)位,、停止位、校驗位等)開始發(fā)送數(shù)據(jù),,一直到發(fā)送FIFO中沒有數(shù)據(jù),。一旦向發(fā)送FIFO寫數(shù)據(jù)(如果FIFO未空),UART的忙標(biāo)志位BUSY就有效,,并且在發(fā)送數(shù)據(jù)期間一直保持有效,。BUSY位僅在發(fā)送FIFO為空,,且已從移位寄存器發(fā)送最后一個字符,包括停止位時才變無效,。即UART不再使能,,它也可以指示忙狀態(tài)。在UART接收器空閑時,,如果數(shù)據(jù)輸入變成低電平,,即接收到了起始位,則接收計數(shù)器開始運行,,并且數(shù)據(jù)在Baud16的第8個周期被采樣,。如果RxBaud16的第8周期仍然為低電平,則起始位有效,,否則會被認(rèn)為是錯誤的起始位并將其忽略,。
如果起始位有效,則根據(jù)數(shù)據(jù)字符被編程的長度,,在Baud16的每第16個周期對連續(xù)的數(shù)據(jù)位(即一個位周期之后)進行采樣,。如果奇偶校驗?zāi)J绞鼓埽瑒t還會檢測奇偶校驗位,。
最后,如果Rx為高電平,,則有效的停止位被確認(rèn),,否則發(fā)生幀錯誤。當(dāng)接收到一個完整的字符時,,將數(shù)據(jù)存放在接收FIFO中,。FIFOFirst-In First-Out的縮寫,意為先進先出,,是一種常見的隊列操作,。
Stellaris系列ARMUART模塊包含有216字節(jié)的FIFO:一個用于發(fā)送,另一個用于接收,??梢詫蓚€FIFO分別配置為以不同深度觸發(fā)中斷??晒┻x擇的配置包括:1/8,、1/41/2,、3/47/8深度,。例如,如果接收FIFO選擇1/4,,則在UART接收到4個數(shù)據(jù)時產(chǎn)生接收中斷,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多