女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在嵌入式系統(tǒng)上實現(xiàn)異步串口通信

MCU開發(fā)加油站 ? 來源:未知 ? 作者:佚名 ? 2017-12-04 09:51 ? 次閱讀

從軟件的角度來看,所有的通信都是一串字節(jié)(叫做數(shù)據(jù)幀)的連續(xù)傳輸。軟件需要采用適當?shù)臋C制來保證接收端能夠正確識別出一個完整的數(shù)據(jù)幀、能夠檢查接收到的數(shù)據(jù)幀是正確的、在傳輸發(fā)生錯誤時有合適的恢復(fù)機制。為此就需要定義一個合適的數(shù)據(jù)幀格式。

數(shù)據(jù)幀的提取

為了識別出一個完整的數(shù)據(jù)幀,基本上有兩個機制:一是在軟件上規(guī)定字節(jié)之間的間隔最大值,一旦兩個字節(jié)間的間隔超過某個閾值,就認為一個數(shù)據(jù)幀結(jié)束;另一種機制不對字節(jié)間的間隔作規(guī)定,而是用特殊的字節(jié)來定義數(shù)據(jù)報的開始和結(jié)束,當收到該特殊字節(jié)時,就認為一個數(shù)據(jù)幀的傳輸已完成。采用第一種機制的,比如Modbus-RTU。就是規(guī)定了同一個數(shù)據(jù)幀的字節(jié)間隔不能大于1.5個字節(jié)的傳輸時間,一旦大于該間隔,則認為前一個幀的傳輸已經(jīng)結(jié)束,或者出錯。同時為了保證不同數(shù)據(jù)幀之間有足夠的間隔,還規(guī)定了兩個數(shù)據(jù)幀之間最少插入3.5個字節(jié)的空閑位。下圖摘自Modbus協(xié)議,表示了一個正確的數(shù)據(jù)幀、錯誤的數(shù)據(jù)幀以及數(shù)據(jù)幀之間的間隔。同時在數(shù)據(jù)報中引入了CRC,用于檢出數(shù)據(jù)幀層面的傳輸錯誤。

第二種機制需要選用一個特殊字節(jié)作為幀頭幀尾(也可以給幀頭幀尾選用不同的字節(jié)),比如說,選用0xFF作為幀頭幀尾字節(jié),也即發(fā)送端在每個數(shù)據(jù)幀的頭尾都插入至少一個0xFF,接收端收到該字節(jié)就結(jié)束上一個幀的接收,同時從下一個非0xFF字節(jié)開始一個新的數(shù)據(jù)幀的接收。但該機制有一個問題,那就是所選的特殊字節(jié)(此處是0xFF)也可能是數(shù)據(jù)幀中的一個有效字節(jié),如果不作特殊處理,接收端就可能把這個數(shù)據(jù)幀中的字節(jié)誤認為是數(shù)據(jù)幀的結(jié)束標識,從而導(dǎo)致接收錯誤。因此,此處采取字節(jié)替換的特殊處理,以消除在數(shù)據(jù)幀的中間出現(xiàn)的特殊字節(jié),以下是一個例子。

在此處,選0xFE作為字節(jié)替換的標識字節(jié),將0xFF替換成0xFE 0x0F。由于0xFE是字節(jié)替換的標志,也成了一個特殊字符,同樣需要進行替換。在上圖中,將0xFE替換成0xFE 0x0E。

采用該機制時,發(fā)送端對數(shù)據(jù)幀中的所有0xFF,0xFE進行替換。在接收端則進行反向替換。如果在接收端的0xFE后面的字節(jié)收到非0x0F,0x0E的字符,說明發(fā)生了傳輸錯誤,丟棄已經(jīng)接收的內(nèi)容,重新搜索幀頭字符開始一個新數(shù)據(jù)幀的接收。

數(shù)據(jù)幀的校驗

考慮到串口通信有一定的誤碼率,無論是采用那種傳輸方式,必須有錯誤幀檢出機制。通常選用的是CRC。一般用2個字節(jié)或4個字節(jié)。

串口驅(qū)動的實現(xiàn)

嵌入式系統(tǒng)中,串口驅(qū)動的實現(xiàn)一般有兩個途徑:一個是通過串口的收發(fā)中斷與串口控制器的Buffer直接交換數(shù)據(jù);另一種是通過DMA,利用DMA與串口Buffer交互自動收發(fā)數(shù)據(jù)。

與串口控制器直接交互的方式,實現(xiàn)簡單,既可以實時進行字節(jié)替換以節(jié)省內(nèi)存,也可以方便設(shè)置字節(jié)間的定時器。但頻繁打斷CPU,對有一定BUFFER大小的串口,還可以利用BUFFER進行性能優(yōu)化,而對一些只有一個字節(jié)或兩個字節(jié)BUFFER的串口,就需要一個字節(jié)起一次中斷,如果CPU負荷較重,很容易由于中斷處理不及時而導(dǎo)致字節(jié)丟失,特別是在高波特率的情況。

利用DMA與串口控制器交互的方式,由于不能實時進行字節(jié)替換,需要在放入DMA之前完成字節(jié)替換,導(dǎo)致占用較大內(nèi)存空間。另外對于字節(jié)間間隔敏感的傳輸策略,需要用另外的機制,比如PRS,去操作定時器。用DMA的另一個問題是在接收時無法實時確定幀尾(采用幀頭幀尾模式時),一般只能采用定時器與DMA配合,用字節(jié)流的方式處理接收。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3667

    瀏覽量

    130918
  • 異步串口通信
    +關(guān)注

    關(guān)注

    0

    文章

    1

    瀏覽量

    1354

原文標題:嵌入式系統(tǒng)上的異步串口通信的實現(xiàn)

文章出處:【微信號:mcugeek,微信公眾號:MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    Python在嵌入式系統(tǒng)中的應(yīng)用場景

    你想把你的職業(yè)生涯提升到一個新的水平?Python在嵌入式系統(tǒng)中正在成為一股不可缺少的新力量。盡管傳統(tǒng)嵌入式開發(fā)更多地依賴于C和C++語言,Python的優(yōu)勢在于其簡潔的語法、豐富的
    的頭像 發(fā)表于 03-19 14:10 ?530次閱讀

    ARM嵌入式通信協(xié)議及應(yīng)用

    隨著科技的飛速發(fā)展,嵌入式系統(tǒng)在各個領(lǐng)域扮演著越來越重要的角色。ARM處理器因其高性能、低功耗的特點,在嵌入式系統(tǒng)中得到了廣泛應(yīng)用。通信協(xié)議
    的頭像 發(fā)表于 12-28 09:18 ?803次閱讀

    新手怎么學(xué)嵌入式?

    實現(xiàn)一些簡單的功能,如點亮一個 LED 燈、讀取傳感器數(shù)據(jù)等,來加深對嵌入式技術(shù)的理解。你還可以參加一些線上或線下的嵌入式項目實踐活動,與其他愛好者一起學(xué)習和交流。 5. 學(xué)習嵌入式
    發(fā)表于 12-12 10:51

    嵌入式系統(tǒng)開發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)開發(fā)常見問題解決

    系統(tǒng)開發(fā)與硬件關(guān)系的幾個關(guān)鍵點: 硬件依賴性 :嵌入式系統(tǒng)的軟件必須能夠在特定的硬件運行,這包括處理器、內(nèi)存、輸入/輸出接口等。軟件必須能夠充分利用硬件的特性,同時繞過其限制。 資源
    的頭像 發(fā)表于 12-09 09:38 ?853次閱讀

    【「嵌入式系統(tǒng)設(shè)計與實現(xiàn)」閱讀體驗】+ 學(xué)習一個STM32的案例

    感謝電子發(fā)燒友論壇和電子工業(yè)出版社的贈書。 在[一篇帖子](【新提醒】【「嵌入式系統(tǒng)設(shè)計與實現(xiàn)」閱讀體驗】+ 初步印象 - 社區(qū)活動專版 - 電子技術(shù)論壇 - 廣受歡迎的專業(yè)電子論壇
    發(fā)表于 12-06 22:22

    何在嵌入式系統(tǒng)實現(xiàn)RS232通信

    嵌入式系統(tǒng)實現(xiàn)RS232通信,通常涉及硬件連接、驅(qū)動程序配置、串口初始化以及數(shù)據(jù)收發(fā)等多個步驟。以下是一個
    的頭像 發(fā)表于 11-21 09:35 ?1093次閱讀

    嵌入式系統(tǒng)與物聯(lián)網(wǎng)的結(jié)合

    隨著科技的飛速發(fā)展,嵌入式系統(tǒng)和物聯(lián)網(wǎng)(IoT)已經(jīng)成為現(xiàn)代技術(shù)領(lǐng)域的重要組成部分。嵌入式系統(tǒng)是指嵌入到設(shè)備或
    的頭像 發(fā)表于 11-06 10:23 ?978次閱讀

    什么是嵌入式?一文讀懂嵌入式主板

    在現(xiàn)代科技浪潮中,嵌入式技術(shù)已成為支撐各種智能設(shè)備和系統(tǒng)運行的核心力量。那么,究竟什么是嵌入式嵌入式系統(tǒng),顧名思義,是將計算機的硬件和軟件
    的頭像 發(fā)表于 10-16 10:14 ?2470次閱讀

    嵌入式系統(tǒng)的啟動流程

    嵌入式系統(tǒng)的啟動流程是一個復(fù)雜但有序的過程,它涉及從系統(tǒng)電到操作系統(tǒng)內(nèi)核及應(yīng)用程序啟動的多個階段。
    的頭像 發(fā)表于 10-05 17:44 ?830次閱讀

    嵌入式系統(tǒng)的未來趨勢有哪些?

    (ML)技術(shù)的快速發(fā)展,嵌入式系統(tǒng)將更多地整合這些先進技術(shù),以支持智能決策和自動化。在設(shè)備直接運行AI和ML模型,進行圖像識別、自然語言處理、預(yù)測分析等任務(wù),將極大提升嵌入式
    發(fā)表于 09-12 15:42

    嵌入式系統(tǒng)是什么?

    分包含軟件運行環(huán)境以及操作系統(tǒng),硬件部分包含信號處理器、存儲器以及通信模塊等多方面內(nèi)容。與傳統(tǒng)的計算機系統(tǒng)相比,嵌入式系統(tǒng)與之相差很大,它并
    的頭像 發(fā)表于 08-29 16:26 ?893次閱讀

    學(xué)習hypervisor嵌入式產(chǎn)品安全設(shè)計

    Hypervisor的設(shè)計與實現(xiàn),涵蓋嵌入式Hypervisor架構(gòu)與核心組件、中斷隔離技術(shù)、內(nèi)存隔離技術(shù)、循環(huán)表調(diào)度器、健康監(jiān)控、分區(qū)間通信技術(shù)、內(nèi)核資源管理模型、系統(tǒng)初始化過程、內(nèi)
    發(fā)表于 08-25 09:11

    嵌入式機電一體化系統(tǒng)設(shè)計與實現(xiàn)》讀后感

    先給大家看看封面哦 再看居然還有簽名呢 還貼心的送了書簽哦,愛了愛了 在閱讀了曾慶祥教授所著的《嵌入式機電一體化系統(tǒng)設(shè)計與實現(xiàn)》一書后,我深感收獲頗豐,對嵌入式
    發(fā)表于 08-21 08:45

    嵌入式系統(tǒng)中的實時操作系統(tǒng)

    嵌入式RTOS是嵌入式應(yīng)用程序運行、相互交互和與外界通信的底層軟件機制。在本節(jié)中,您將了解嵌入式軟件開發(fā)人員使用哪些流行RTOS以及它們運行的嵌入式
    的頭像 發(fā)表于 08-20 11:28 ?795次閱讀

    嵌入式系統(tǒng)怎么學(xué)?

    操作系統(tǒng)的基本概念和原理,掌握常見的RTOS,如FreeRTOS、uC/OS等,以實現(xiàn)嵌入式系統(tǒng)的任務(wù)調(diào)度和資源管理。 6、通信協(xié)議:學(xué)
    發(fā)表于 07-02 10:10