在线观看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

    文章

    492

    瀏覽量

    27674
  • 數據幀
    +關注

    關注

    0

    文章

    47

    瀏覽量

    6800
  • csdn
    +關注

    關注

    2

    文章

    17

    瀏覽量

    6868

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

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

收藏 人收藏

    評論

    相關推薦

    Verilog狀態機+設計實例

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

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

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

    如何寫好狀態機

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

    狀態機舉例

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

    狀態機代碼生成工具

    狀態機代碼生成工具狀態機代碼生成工具狀態機代碼生成工具狀態機代碼生成工具
    發表于 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 ?7553次閱讀
    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 ?1616次閱讀

    銳米LoRa終端的通信協議

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

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

    單片接收數據尾校驗數據解析
    的頭像 發表于 10-17 17:23 ?1370次閱讀
    單片<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 ?1w次閱讀
    主站蜘蛛池模板: 国内一级特黄女人精品毛片 | 欧美一区二区三区精品 | xxⅹ丰满妇女与善交 | 色网站在线视频 | 一级一级18女人毛片 | 在线播放一区二区三区 | 额去鲁97在线观看视频 | 韩国特黄特色a大片免费 | 欧美一级欧美三级 | 天天草b| 椎名空中文字幕一区二区 | yy6080理aa级伦大片一级 | 在线电影天堂 | 能在线观看的一区二区三区 | 久久青草国产手机看片福利盒子 | 亚洲日本欧美日韩高观看 | 男人边吃奶边做视频免费网站 | 看黄视频免费 | 嫩草影院www | 日韩一级片在线 | 日本高清视频成人网www | 午夜爽| 高h细节肉爽文bl文 高h细节肉爽文男男 | 国产久视频 | 视频在线观看免费网址 | 五月国产综合视频在线观看 | 黄黄的网站| 一区二区免费在线观看 | 天天综合亚洲国产色 | 免费的男女拍拍拍的视频 | www.亚洲.com | 亚洲国产精品自在现线让你爽 | 国产精品欧美激情在线播放 | 香蕉视频vip| 国产成人免费无庶挡视频 | 濑亚美莉iptd619在线观看 | 婷婷免费高清视频在线观看 | 国产毛片哪里有 | 仙踪林欧美另类视频 | 国内精品久久久久影院免费 | 欧美hh|