色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    瀏覽量

    27529
  • 數據幀
    +關注

    關注

    0

    文章

    45

    瀏覽量

    6739
  • csdn
    +關注

    關注

    2

    文章

    16

    瀏覽量

    6844

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

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

收藏 人收藏

    評論

    相關推薦

    Verilog狀態機+設計實例

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

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

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

    如何寫好狀態機

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

    狀態機舉例

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

    狀態機代碼生成工具

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

    狀態機原理及用法

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

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

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

    FPGA:狀態機簡述

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

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

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

    銳米LoRa終端的通信協議

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

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

    單片接收數據尾校驗數據解析
    的頭像 發表于 10-17 17:23 ?1310次閱讀
    單片<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 ?9451次閱讀
    主站蜘蛛池模板: 久久91精品国产91| 黑人阴茎插女人图片| 国产超碰人人爱被IOS解锁| 成人免费视频网站www| 国产69精品久久久久乱码韩国 | 亚洲精品久久AV无码蜜桃| 久久99热在线观看7| 久久这里只有是精品23| 欧美 亚洲 另类 综合网| 久久久96人妻无码精品蜜桃| 老头操美女| 日本电影免费久久精品| 欧美含羞草免费观看全部完| 啦啦啦 中国 日本 高清 在线| 免费人成视频19674不收费| 青娱乐国产精品视频| 午夜理论在线观看不卡大地影院| 亚洲色大成网站WWW永久麻豆| 2021国产精品久久久久精品免费网| qvod 在线电影| 国产一区二区内射最近更新| 国产AV精品久久久毛片| 国精产品砖一区二区三区糖心 | 男欢女爱免费视频| 婷婷射精AV这里只有精品| 亚洲一区免费在线观看| a在线观看视频| 国产午夜三级一区二区三| 国产在线精品视频资源| 麻1豆传媒2021精品| 色橹橹欧美在线观看视频高| 亚洲欧洲日韩天堂无吗| 暗卫受被肉到失禁各种PLAY| 宝贝乖女好紧好深好爽老师| 国产亚洲视频中文字幕| 男人扒开添女人屁股| 小货SAO边洗澡边CAO你动漫| 91偷偷久久做嫩草电影院| 国产精品一区二区AV交换| 蜜臀AV色欲A片无码一区 | 日韩hd高清xxxⅹ|