在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

了解在MCU中實(shí)現(xiàn)串口的不定長(zhǎng)數(shù)據(jù)包接收的過(guò)程

5RJg_mcuworld ? 來(lái)源:未知 ? 作者:工程師郭婷 ? 2018-08-03 16:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

MCU的應(yīng)用中,經(jīng)常需要通過(guò)串口進(jìn)行不定長(zhǎng)數(shù)據(jù)包的傳輸。發(fā)送方很簡(jiǎn)單,不需特別的考慮,而接收方則需要能夠偵測(cè)到數(shù)據(jù)包的結(jié)束。接收方的簡(jiǎn)單做法是結(jié)合串口的IDLE中斷,或使用DMA并利用DMA的超時(shí)傳輸機(jī)制。

但有些MCU在設(shè)計(jì)時(shí)出于成本上的考慮,簡(jiǎn)化了串口接收的IDLE模式以及DMA超時(shí)傳輸機(jī)制。沒(méi)有串口IDLE中斷或者DMA超時(shí)傳輸?shù)臋C(jī)制,我們就不知道什么時(shí)候通信結(jié)束了。這種情況下,為了實(shí)現(xiàn)通過(guò)串口傳輸不定長(zhǎng)數(shù)據(jù)包的要求,需要使用軟件和其它片內(nèi)外設(shè)的配合,協(xié)同完成指定的功能。

LPC54101系列的UART模塊,支持FIFO的接收超時(shí),能夠方便地實(shí)現(xiàn)上述功能。除此之外,本文介紹一種基于LPC54101和SDK,通過(guò)使用引腳中斷和定時(shí)器配合,實(shí)現(xiàn)串口DMA接收超時(shí),實(shí)現(xiàn)串口DMA接收超時(shí)的機(jī)制。

先分析下UART傳輸?shù)臅r(shí)序,圖1是一個(gè)典型的8位數(shù)據(jù)位1位停止位的串口通信數(shù)據(jù)流。串口每次發(fā)送數(shù)據(jù)時(shí)會(huì)首先發(fā)送一個(gè)起始位,在TTL電平邏輯下,Start位首先是一個(gè)下降沿信號(hào)

了解在MCU中實(shí)現(xiàn)串口的不定長(zhǎng)數(shù)據(jù)包接收的過(guò)程

圖1. 串口接收數(shù)據(jù)時(shí)序圖

在串口DMA接收超時(shí)系統(tǒng)中,我們需要利用MCU的引腳中斷功能偵測(cè)這個(gè)下降沿信號(hào),引腳中斷觸發(fā)后告訴系統(tǒng)開(kāi)始計(jì)時(shí)。要特別注意的是,當(dāng)系統(tǒng)偵測(cè)到Start位的下降沿后最好關(guān)閉引腳中斷,不然后續(xù)數(shù)據(jù)流等信號(hào)的下降沿也會(huì)觸發(fā)引腳中斷使得整套方案失去了意義(還不如直接用串口接收完成中斷)。

LPC54101的引腳中斷可以在任意IO引腳上使能,所以可以直接把LPC54101的串口接收的引腳的中斷功能打開(kāi),并設(shè)置成下降沿觸發(fā)。

超時(shí)計(jì)數(shù)器最好是系統(tǒng)里的低功耗定時(shí)器,這個(gè)例程中我們用的是LPC54101的RIT定時(shí)器。超時(shí)的時(shí)間設(shè)置要考慮到當(dāng)前串口設(shè)置的波特率以及一次串口傳輸?shù)淖畲蟀L(zhǎng)。

超時(shí)定時(shí)器計(jì)數(shù)溢出產(chǎn)生中斷后,軟件首先要從DMA的狀態(tài)寄存器中獲取到當(dāng)前接收到數(shù)據(jù)的長(zhǎng)度(對(duì)于LPC54101來(lái)說(shuō),串口DMA接收數(shù)據(jù)的長(zhǎng)度在XFERCFGn寄存器中的XFERCOUNT位,如圖2所示),然后從串口DMA預(yù)設(shè)置的數(shù)據(jù)緩沖區(qū)獲取對(duì)應(yīng)的數(shù)據(jù)即可。

了解在MCU中實(shí)現(xiàn)串口的不定長(zhǎng)數(shù)據(jù)包接收的過(guò)程

圖2. LPC54101 DMA傳輸數(shù)據(jù)長(zhǎng)度計(jì)數(shù)位

在初始化設(shè)置串口對(duì)應(yīng)的DMA通道時(shí),最好設(shè)置傳輸長(zhǎng)度為可能的最大長(zhǎng)度,在接收超時(shí)后也別忘記重新復(fù)位一下串口對(duì)應(yīng)DMA通道的狀態(tài),不然本次接收的數(shù)據(jù)和數(shù)據(jù)長(zhǎng)度還會(huì)帶入下次傳輸?shù)倪^(guò)程中。

圖3是例程的流程圖,分主程序,串口RX引腳中斷服務(wù)程序,超時(shí)定時(shí)器服務(wù)程序三個(gè)部分。

了解在MCU中實(shí)現(xiàn)串口的不定長(zhǎng)數(shù)據(jù)包接收的過(guò)程

了解在MCU中實(shí)現(xiàn)串口的不定長(zhǎng)數(shù)據(jù)包接收的過(guò)程

了解在MCU中實(shí)現(xiàn)串口的不定長(zhǎng)數(shù)據(jù)包接收的過(guò)程

圖3. 程序流程圖

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

    關(guān)注

    146

    文章

    17920

    瀏覽量

    362903
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1586

    瀏覽量

    79622

原文標(biāo)題:在MCU中,如何實(shí)現(xiàn)串口的不定長(zhǎng)數(shù)據(jù)包接收?

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    藍(lán)牙數(shù)據(jù)通道空口數(shù)據(jù)包

    可以用下面的流程圖來(lái)描述上述過(guò)程。 ? 編輯 MD(1bit) ,more data,用來(lái)指示對(duì)方我還有數(shù)據(jù)包要傳,請(qǐng)繼續(xù)打開(kāi)射頻窗口準(zhǔn)備接收。比如Nordic nRF51822一個(gè)connection
    發(fā)表于 06-03 10:51

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】使用RA4M2的串口實(shí)現(xiàn)任意任意類型任意長(zhǎng)度的數(shù)據(jù)接收,并將接收到的數(shù)據(jù)顯示串口助手上

    使用RA4M2的串口實(shí)現(xiàn)任意任意類型任意長(zhǎng)度的數(shù)據(jù)接收,并將接收到的任意類型任意長(zhǎng)度的數(shù)據(jù)顯示
    發(fā)表于 05-04 14:11

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】定時(shí)器輔助串口不定長(zhǎng)數(shù)據(jù)接收

    assert(status==FSP_SUCCESS); } ??2.定時(shí)器輔助串口接收實(shí)現(xiàn)不定長(zhǎng)數(shù)據(jù)
    發(fā)表于 04-30 14:44

    為UART、MCXA142實(shí)現(xiàn)ISP通信的主機(jī)端,發(fā)送Ping數(shù)據(jù)包并收到預(yù)期的響應(yīng),發(fā)送和接收數(shù)據(jù)包的典型順序是什么?

    我想為 UART、MCXA142 實(shí)現(xiàn) ISP 通信的主機(jī)端。我發(fā)送 Ping 數(shù)據(jù)包并收到預(yù)期的響應(yīng)。發(fā)送和接收數(shù)據(jù)包的典型順序是什么? 此刻,我的照片是這樣的: 1. 發(fā)送 Pi
    發(fā)表于 04-03 08:05

    如何使用DMA進(jìn)行USART不定長(zhǎng)接收

    在上一講,我們對(duì)USART進(jìn)行了簡(jiǎn)單介紹,并講解了如何在不使用DMA的情況下進(jìn)行不定長(zhǎng)度數(shù)據(jù)接收,本講將著重講解如何使用DMA進(jìn)行USART不定長(zhǎng)
    的頭像 發(fā)表于 02-18 17:01 ?876次閱讀
    如何使用DMA進(jìn)行USART<b class='flag-5'>不定長(zhǎng)</b>度<b class='flag-5'>接收</b>

    mtu配置步驟詳解 mtu與數(shù)據(jù)包丟失的關(guān)系

    步驟 確定當(dāng)前MTU值 : 配置MTU之前,首先需要了解當(dāng)前網(wǎng)絡(luò)的MTU值。這可以通過(guò)使用ping命令(如ping -f -l [數(shù)據(jù)包長(zhǎng)度] [網(wǎng)關(guān)IP地址])來(lái)測(cè)試,并通過(guò)逐步調(diào)整數(shù)據(jù)包
    的頭像 發(fā)表于 12-16 14:33 ?2505次閱讀

    【代碼分享】基于樂(lè)鑫ESP32的串口不定長(zhǎng)數(shù)據(jù)接收方法

    【代碼分享】基于樂(lè)鑫ESP32的串口不定長(zhǎng)數(shù)據(jù)接收方法
    的頭像 發(fā)表于 11-15 01:02 ?1416次閱讀
    【代碼分享】基于樂(lè)鑫ESP32的<b class='flag-5'>串口</b><b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>接收</b>方法

    【AG32開(kāi)發(fā)板免費(fèi)試用】+串口不定長(zhǎng)收超時(shí)設(shè)置閾值多少合適?

    串口不定長(zhǎng)收發(fā)超時(shí)設(shè)置閾值多少合適?這個(gè)和波特率有關(guān)系嗎? 考慮最大接收長(zhǎng)度嗎?
    發(fā)表于 10-31 18:26

    STM32CUBEMX(8)--USART通過(guò)定時(shí)器中斷方式接收不定長(zhǎng)數(shù)據(jù)

    概述 本文利用中斷實(shí)現(xiàn)串口不定長(zhǎng)接收(非DMA),使用HAL庫(kù),將接收數(shù)據(jù)打印出去。 DMA
    發(fā)表于 09-06 16:48

    GD32F407跑了freeRTOS,中斷調(diào)用xEventGroupSetBitsFromISR函數(shù)后就會(huì)死機(jī),為什么?

    GD32F407跑了freeRTOS,串口接收使用了DMA+IDLE中斷來(lái)實(shí)現(xiàn)不定長(zhǎng)接收
    發(fā)表于 07-26 06:37

    使用AT SAVETRANSLINK時(shí)UDP數(shù)據(jù)包丟失怎么解決?

    Android 發(fā)送一個(gè)小 UDP 數(shù)據(jù)包(5 字節(jié))。這個(gè)小數(shù)據(jù)包被我的微控制器UART上接收到。微控制器將更大的數(shù)據(jù)包(可變長(zhǎng)度,約
    發(fā)表于 07-18 07:17

    Iphone4上運(yùn)行UDP接收器,數(shù)據(jù)包丟失怎么解決?

    ;255.255.255.255\",48899 現(xiàn)在使用 AT CIPSEND 每秒發(fā)送 1 個(gè)數(shù)據(jù)包 并非所有的Iphone似乎都受到嚴(yán)重的影響,但I(xiàn)phone4是最糟糕的。
    發(fā)表于 07-18 06:56

    能否ESP結(jié)束之前通過(guò)串行端口停止傳入的UDP數(shù)據(jù)包的傳輸以解析下一個(gè)UDP數(shù)據(jù)包

    丟棄ESP完成之前不需要的數(shù)據(jù)包,以便通過(guò)串行端口發(fā)送它以接收下一個(gè)數(shù)據(jù)包, 如果沒(méi)有,我必須按順序讀取所有傳入的數(shù)據(jù)包,需要的和不需要的, 而且波特率不足,主機(jī)處理器開(kāi)銷大, 我
    發(fā)表于 07-16 06:18

    如何直接從phy mac層發(fā)送和接收802.11數(shù)據(jù)包

    我閱讀了完整的文檔(espressif_iot_esp8266ex_development_kit_v0.9.4.zip),但我沒(méi)有找到答案: 是否可以訪問(wèn) 802.11 數(shù)據(jù)包,并通過(guò)應(yīng)用程序處理它們? 我希望能夠直接從 phy mac 層發(fā)送和接收 802.11
    發(fā)表于 07-15 08:03

    請(qǐng)問(wèn)如何使用AT CIPSEND或AT CIPSENDBUF發(fā)送多個(gè)數(shù)據(jù)包

    , time-out is 1 sec 我的設(shè)備因超時(shí)而退出 繁忙的 S...接收 34 字節(jié) 0,9,發(fā)送 OK - after a delay of about 2 sec ESP8266 replies \"OK\", 第一個(gè)
    發(fā)表于 07-15 07:37
    主站蜘蛛池模板: 欧美αv| 午夜影院亚洲 | 国产呦在线观看视频 | 亚洲综合一 | 成人综合婷婷国产精品久久免费 | 你懂的福利 | 黄色在线观看网址 | 91aaa免费观看在线观看资源 | 狠狠色噜噜狠狠狠狠98 | 全黄毛片 | 欧美猛交xxxx乱大交 | 免费看你懂的 | 欧美亚洲另类在线观看 | 亚洲日本一区二区三区在线不卡 | qyule亚洲精品 | 97午夜| 91中文在线观看 | 天堂在线观看视频 | 精品视频免费看 | 久久精品乱子伦免费 | mmmxxx69日本| 免费网站色| 人人干视频在线观看 | 中文字幕一区二区三区免费看 | 成人午夜免费视频毛片 | 色噜噜成人综合网站 | www.四虎| 日本不卡一区视频 | 中国一级特黄高清免费的大片 | 国产亚洲精品在天天在线麻豆 | 亚洲产国偷v产偷v自拍色戒 | 日本黄色免费网址 | 日本特黄特色大片免费播放视频 | 6080伦理久久精品亚洲 | 黄网在线免费看 | aa1在线天堂 | 夜夜爱视频 | 亚洲涩综合| 久久精品视频国产 | 六月婷婷综合激情 | 欧美 亚洲 国产 丝袜 在线 |