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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

如何采用“狀態機”解析UART數據幀

嵌入式情報局 ? 來源:csdn ? 2024-03-25 14:29 ? 次閱讀

通信設計中考慮協議的靈活性,經常把協議設計成“不定長度”。一個實例如下圖:銳米LoRa終端的通信協議幀。

f914fa00-e855-11ee-a297-92fbcf53809c.jpg

如果一個系統接收上述“不定長度”的協議幀,將會有一個挑戰--如何高效接收與解析。 為簡化系統設計,我們強烈建議您采用“狀態機”來解析UART數據幀,并且把解析工作放在ISR(中斷服務程序)完成,僅當接收到最后一個字節(0x0D)時,再將整個數據幀提交給進程處理。 該解析狀態機的原理如下圖所示:

f91c6556-e855-11ee-a297-92fbcf53809c.jpg

那么ISR處理這個狀態機來得及嗎?答案是:so easy!因為它只有3個動作,運算量十分小: 比較接收數據 -> 更新狀態變量 -> 存儲接收數據C語言僅3條語句,翻譯成機器指令也不超過10條。

代碼清單如下

/**
*@briefStatusofreceivedcommunicationframe
*/
typedefenum
{
STATUS_IDLE=(uint8_t)0,
STATUS_HEAD,/*RxHead=0x3C*/
STATUS_TYPE,/*RxType*/
STATUS_DATA,/*Datafiled*/
STATUS_TAIL,/*Tail=0x0D*/
STATUS_END,/*Endofthisframe*/
}COMM_TRM_STATUS_TypeDef;

/**
*@briefDataobjectforreceivedcommunicationframe
*/
typedefstruct
{
uint8_tbyCnt;/*Countof1field*/
uint8_tbyDataLen;/*Lengthofdatafield*/
uint8_tbyFrameLen;/*Lengthofframe*/
COMM_TRM_STATUS_TypeDefeRxStatus;
uint8_ta_byRxBuf[MAX_LEN_COMM_TRM_DATA];
}COMM_TRM_DATA;

/**
*@briefDataobjectforreceivedcommunicationframe.
*@notePreventraceconditionthataccessedbybothISRandprocess.
*/
staticCOMM_TRM_DATAs_stComm2TrmData;

/**
*@briefPutadatathatreceivedbyUARTintobuffer.
*@notePreventraceconditionthiscalledbyISR.
*@paramuint8_tbyData:thedatareceivedbyUART.
*@retvalNone
*/
voidcomm2trm_RxUartData(uint8_tbyData)
{
/*Updatestatusaccordingtothereceiveddata*/
switch(s_stComm2TrmData.eRxStatus)
{
caseSTATUS_IDLE:
if(COMM_TRM_HEAD==byData)/*IsHead*/
{
s_stComm2TrmData.eRxStatus=STATUS_HEAD;
}
else
{
gotorx_exception;
}
break;
caseSTATUS_HEAD:
if(TYPE_INVALID_MIN
審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 狀態機
    +關注

    關注

    2

    文章

    493

    瀏覽量

    28000
  • 數據幀
    +關注

    關注

    0

    文章

    48

    瀏覽量

    6896
  • csdn
    +關注

    關注

    2

    文章

    17

    瀏覽量

    6961

原文標題:狀態機”來解析UART不定長度的協議幀

文章出處:【微信號:嵌入式情報局,微信公眾號:嵌入式情報局】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Verilog狀態機+設計實例

    在verilog中狀態機的一種很常用的邏輯結構,學習和理解狀態機的運行規律能夠幫助我們更好地書寫代碼,同時作為一種思想方法,在別的代碼設計中也會有所幫助。 一、簡介 在使用過程中我們常說
    的頭像 發表于 02-12 19:07 ?4995次閱讀
    Verilog<b class='flag-5'>狀態機</b>+設計實例

    采用狀態機和消息機制的串口接收程序

    采用狀態機和消息機制的串口接收程序
    發表于 05-16 14:51 ?48次下載

    如何寫好狀態機

    如何寫好狀態機:狀態機是邏輯設計的重要內容,狀態機的設計水平直接反應工程師的邏輯功底,所以許多公司的硬件和邏輯工程師面試中,狀態機設計幾乎是必選題目。本章在引入
    發表于 06-14 19:24 ?97次下載

    狀態機舉例

    狀態機舉例 你可以指定狀態寄存器和狀態機狀態。以下是一個有四種狀態的普通狀態機。 // Th
    發表于 03-28 15:18 ?1062次閱讀

    狀態機代碼生成工具

    狀態機代碼生成工具狀態機代碼生成工具狀態機代碼生成工具狀態機代碼生成工具
    發表于 11-19 15:12 ?9次下載

    狀態機原理及用法

    狀態機原理及用法狀態機原理及用法狀態機原理及用法
    發表于 03-15 15:25 ?0次下載

    狀態機概述 如何理解狀態機

    本篇文章包括狀態機的基本概述以及通過簡單的實例理解狀態機
    的頭像 發表于 01-02 18:03 ?1.1w次閱讀
    <b class='flag-5'>狀態機</b>概述  如何理解<b class='flag-5'>狀態機</b>

    FPGA:狀態機簡述

    本文目錄 前言 狀態機簡介 狀態機分類 Mealy 型狀態機 Moore 型狀態機 狀態機描述 一段式
    的頭像 發表于 11-05 17:58 ?7839次閱讀
    FPGA:<b class='flag-5'>狀態機</b>簡述

    什么是狀態機狀態機5要素

    玩單片還可以,各個外設也都會驅動,但是如果讓你完整的寫一套代碼時,卻無邏輯與框架可言。這說明編程還處于比較低的水平,你需要學會一種好的編程框架或者一種編程思想!比如模塊化編程、狀態機編程、分層思想
    的頭像 發表于 07-27 11:23 ?2.1w次閱讀
    什么是<b class='flag-5'>狀態機</b>?<b class='flag-5'>狀態機</b>5要素

    基于狀態機思維的串口數據接收

    基于狀態機思維的串口數據接收串口數據包含數據
    發表于 12-05 19:21 ?5次下載
    基于<b class='flag-5'>狀態機</b>思維的串口<b class='flag-5'>數據</b><b class='flag-5'>幀</b>接收

    狀態模式(狀態機)

    以前寫狀態機,比較常用的方式是用 if-else 或 switch-case,高級的一點是函數指針列表。最近,看了一文章《c語言設計模式–狀態模式(狀態機)》(來源:embed linux
    發表于 12-16 16:53 ?9次下載
    <b class='flag-5'>狀態</b>模式(<b class='flag-5'>狀態機</b>)

    如何高效接收與解析單片的通信協議

    為簡化系統設計,我們強烈建議您采用狀態機”來解析UART數據,并且把
    的頭像 發表于 07-05 17:19 ?1711次閱讀

    銳米LoRa終端的通信協議

    為簡化系統設計,我們強烈建議您采用狀態機”來解析UART數據,并且把
    發表于 08-08 10:02 ?682次閱讀

    單片接收數據尾校驗數據解析

    單片接收數據尾校驗數據解析
    的頭像 發表于 10-17 17:23 ?1503次閱讀
    單片<b class='flag-5'>機</b>接收<b class='flag-5'>數據</b><b class='flag-5'>幀</b><b class='flag-5'>幀</b>頭<b class='flag-5'>幀</b>尾校驗<b class='flag-5'>數據</b><b class='flag-5'>解析</b>

    什么是狀態機狀態機的種類與實現

    狀態機,又稱有限狀態機(Finite State Machine,FSM)或米利狀態機(Mealy Machine),是一種描述系統狀態變化的模型。在芯片設計中,
    的頭像 發表于 10-19 10:27 ?1.1w次閱讀
    主站蜘蛛池模板: 中国美女乱淫免费看视频 | 午夜视频欧美 | 午夜日韩视频 | 亚洲久优优色优在线播放 | 97国产精品人人爽人人做 | 福利影院在线 | 午夜影院毛片 | 四虎影视4hu4虎成人 | 干一干操一操 | 久久精品屋 | 天天躁夜夜躁狠狠躁2018a | 免费看国产一级特黄aa大片 | 在线成人欧美 | 男人呻吟双腿大开男男h互攻 | 色吧首页 | 高清国产下药迷倒美女 | 亚洲人成电影院 | 久久黄色网 | 一级特黄aa毛片免费观看 | 天天操夜夜操视频 | 老色99久久九九精品尤物 | www.欧美成| 男女www视频在线看网站 | 日韩精品无码一区二区三区 | 国产gav成人免费播放视频 | 49pao强力在线高清基地 | 天天做天天添婷婷我也去 | 日本不卡高清视频 | 九九人人 | 久久久久国产精品免费网站 | 成人国产激情福利久久精品 | 欧美性白人极品1819hd | 人碰人操| 精品福利在线观看 | 91三级在线| 免费看黄色网页 | 欧美性受一区二区三区 | 午夜性视频播放免费视频 | 日本成片免费高清 | 福利视频自拍偷拍 | 夜色剧场|