排卵是什么意思| 介意是什么意思| 头皮屑特别多是什么原因| 下压高是什么原因引起的| 尿酸高可以吃什么鱼| 近视眼底改变什么意思| 非农业户口是什么意思| 月经正常颜色是什么色| 什么时候浇花最好| 水星为什么叫水星| na医学上是什么意思| 7月14什么星座| 什么西瓜好吃| 痛风吃什么好| 喉咙有异物感挂什么科| 茄子吃了有什么好处| 现在做什么最赚钱| 农历八月十五是什么节| 碗摔碎了预示着什么| 阿尼是什么意思| 脚后跟疼吃什么药| 全血检查能查些什么病| 维生素d低是什么原因| 三伏贴什么时候贴最好| 比围是什么| crh是什么意思| 月子吃什么补气血| 黄精和什么煲汤好| dsa检查是什么意思| 脚心发痒是什么原因| 面瘫看什么科室好| 白果有什么功效与作用| 酸豆角炒什么好吃| 真丝丝绒是什么面料| 身体透支是什么意思| 胸痛什么原因| 身体逐渐消瘦是什么原因| 肺纤维化是什么意思| 长个子需要补充什么| 打了狂犬疫苗不能吃什么| 经常想睡觉是什么原因| 桑葚和枸杞泡水喝有什么好处| 钠对人体有什么作用| 穷代表什么生肖| 黑天鹅是什么意思| 胃炎吃什么食物好得快| 反差是什么意思| 4.22什么星座| 夏枯草是什么样子| 红米是什么| 周到是什么意思| 老人头发由白变黑是什么原因| 干事是什么级别| 代谢慢的人吃什么有助于新陈代谢| 1991年五行属什么| 腹股沟淋巴结肿大挂什么科| 雯字五行属什么| 荔枝什么季节成熟| 涩是什么意思| 资产负债率高说明什么| 甲醛是什么气味| 什么奔什么走| 遗精是什么原因引起的| 胎动什么感觉| 幽门螺杆菌阴性是什么意思| 肺纤维增殖灶是什么意思| 湿疹怎么治用什么药膏| 紫菜不能和什么一起吃| 湿化瓶内放什么水| 上火是什么症状| 伏特加是用什么酿造的| 96年的属什么| 吃什么能胖起来| 负离子是什么| 软骨炎是什么病| 生肖本命带红花是什么生肖| 猪砂是什么东西| 9价疫苗适合什么年龄人打| 右眉上方有痣代表什么| 有什么园| 镇团委书记是什么级别| 减肥期间晚上可以吃什么| 哈密瓜不能和什么一起吃| 格拉苏蒂手表什么档次| 舌苔黄腻吃什么药| 脂肪酶是什么| 签退是什么意思| 舌头苦是什么原因| 缺锌吃什么食物| 日本豆腐是用什么做的| 头皮痒掉发严重是什么原因| 淋巴结回声是什么意思| 什么是心理健康| iga肾病是什么意思| 皮肤感染吃什么消炎药| 精血亏虚吃什么中成药| 知天命是什么年纪| 黄褐斑内调吃什么药| 对戒是什么意思| 阿耨多罗三藐三菩提是什么意思| 餐后胆囊是什么意思| 今年是什么| 盐冻虾是什么意思| 吃什么止咳| 午时是什么时间| 男票是什么意思| 小孩血压高是什么原因| 热伤风吃什么| 低血糖和贫血有什么区别| 早上醒来嘴苦是什么原因| 吃二甲双胍为什么会瘦| 螃蟹为什么吐泡泡| 刺激什么意思| 江浙沪是什么意思| 乳腺癌吃什么好| 阴道炎用什么药好| 发烧了吃什么药| 哈尔滨有什么特产| 什么叫血压| 富士康是做什么的| 邪犯少阳证是什么意思| 丙五行属什么| 唔什么意思| gmv是什么意思| 反流性食管炎吃什么食物好| 368什么意思| 什么补钾| 胃病有什么症状| 胸痛一阵一阵的痛什么原因| 秋天有什么| 高血压检查什么项目| 口苦吃什么中药| 宣发是什么意思| 眼睛干涩吃什么中成药| 吸入物变应原筛查是什么| 剑玉是什么| 水奶是什么| 28岁属相是什么生肖| 什么人不能吃马齿苋| 破壁机什么牌子的最好| 气血不足吃什么补最快| 梦见别人吐血是什么预兆| 第一次表白送什么花| 为什么头老是晕晕的| 为什么脚臭叫香港脚| 六月十号什么星座| cmyk代表什么颜色| 此物非彼物是什么意思| 尿培养是检查什么病| 娥皇女英是什么意思| 亲密是什么意思| 儿童办护照需要什么材料| 天之骄子是什么意思| 可乐不能和什么一起吃| 经期吃榴莲有什么好处| 当兵苦到什么程度| 备孕检查都检查什么项目| but什么意思| 乙肝病毒是什么| 土乞念什么| 什么人一年只工作一天脑筋急转弯| 萎缩性胃炎伴糜烂吃什么药| 肺气肿是什么原因导致的| 两极分化是什么意思| 交泰殿是干什么的| 白斩鸡是什么意思| 心脏是由什么组织构成的| 7月1号是什么星座| 五彩的什么| 右手麻木是什么原因引起的| 炙子是什么意思| 更年期是什么| afp是什么传染病| 一个月一个泉是什么字| 生地黄是什么| 胆固醇高是什么原因| brat什么意思| 橙色加蓝色是什么颜色| 大便一粒粒是什么原因| 零度是什么意思| 穿旗袍配什么发型好看| 口腔溃疡是什么原因造成的| 悟空是什么意思| 肚脐眼左侧是什么器官| 梦见掉牙是什么意思| 家五行属性是什么| 低压是什么意思| 多心是什么意思| columbia是什么牌子| 脾胃阴虚吃什么中成药| 霉菌性阴道炎是什么症状| 葡萄糖粉适合什么人喝| 他是什么意思| cns医学上是什么意思| 男性硬下疳是什么样子| 诸是什么意思| 蛇屎是什么样子| 掉头发吃什么好| 术后恢复吃什么好| 金脸银脸代表什么人物| 小朋友喜欢玩什么| 股骨头坏死有什么好办法治疗吗| 前列腺回声欠均匀什么意思| cooc香水是什么牌子的| 瑞夫泰格手表什么档次| 什么家| 6月28日什么星座| 淀粉酶是什么| 丹参长什么样子图片| 六月生日是什么星座| 妇科炎症吃什么药| 意会是什么意思| 老是肚子疼是什么原因| 农历10月份是什么星座| 男人吃生蚝补什么| 火龙果和香蕉榨汁有什么功效| 头疼是什么病的前兆| mansory是什么车| 起什么转什么成语| 动车与高铁有什么区别| 中唐筛查是检查什么| 春天有什么| 天地银行是什么意思| 头不舒服去医院挂什么科| 为什么不能摸猫的肚子| 脚踝肿是什么病| 落魄是什么意思| 什么是微循环| 为什么不结婚| 开塞露用多了有什么副作用| 乳腺彩超挂什么科| 经常肚子疼拉肚子是什么原因| 女生私处长什么样| nt检查什么内容| 天下乌鸦一般黑是什么意思| gst是什么意思| 越国在现在的什么地方| 什么样属于轻度地包天| fl是胎儿的什么| 胃胀吃什么药效果最好| 口水臭吃什么药| 吃冬瓜有什么好处| 恋爱是什么| 什么是一二三级医院| 病毒性感冒咳嗽吃什么药效果好| 水有什么作用| 一模一样的意思是什么| eq是什么| 5月7日是什么星座| 肠胃不好吃什么药好| 01是什么生肖| 什么叫肾阳虚肾阴虚| 七月十四是什么节| 意下如何什么意思| 腥是什么意思| 红线女是什么意思| 布洛芬缓释胶囊是什么药| 活珠子是什么| 性生活时间短吃什么药| 成人受到惊吓吃什么药| 疝气什么症状| 经常性偏头疼是什么原因| 糖尿病人吃什么水果最好| 梦遗太频繁是什么原因造成的| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? STM32 ? USARTRX使用DMA接收的数据帧判断方法

共1条 1/1 1 跳转至

USARTRX使用DMA接收的数据帧判断方法

院士
2025-08-04 15:10:02     打赏
百度   最后,再看需求侧。

一、概述

在使用APM32系列微控制器的USART配合DMA进行数据接收时,如何准确判断一帧数据的接收完成是一个关键问题。本文介绍几种常用的方法及其实现原理。

二、数据帧接收完成判断方法

2.1 固定长度数据帧接收

适用场景:数据帧长度固定且已知。

实现方法:

- 配置DMA接收固定长度的数据

- DMA传输完成中断(TC中断)触发表示接收完成

优点:实现简单,资源消耗少。

缺点:不适用于变长数据帧。

2.2 空闲中断(Idle Interrupt)配合DMA

实现步骤:
1. 使能USART的空闲中断
2. 配置DMA进行循环接收或足够长的线性接收
3. 当检测到总线空闲(1个字符时间无数据)时触发空闲中断
4. 在中断中通过DMA的当前计数器值计算接收到的数据长度

// 空闲中断处理示例
void USARTx_IRQHandler(void)
{
    if(USART_GetITStatus(USARTx, USART_IT_IDLE) != RESET)
    {
        USART_ClearITPendingBit(USARTx, USART_IT_IDLE); // 清除空闲中断标志
        uint16_t remainCnt = DMA_GetCurrDataCounter(DMAy_Streamx); // 获取剩余未传输数据量
        uint16_t recvLen = TOTAL_BUF_SIZE - remainCnt; // 计算实际接收长度
        // 处理接收到的数据...
    }
}

优点:适用于变长数据帧,硬件自动检测。

缺点:需要USART支持空闲检测功能。

2.3 超时(Timeout)机制

实现方法:

  1. 1.配置DMA接收并启用传输完成中断

  2. 2. 每次接收到数据时重置超时定时器

  3. 3. 如果在设定时间内没有新数据到达,判定为帧接收完成

// 定时器中断处理示例
void TIMx_IRQHandler(void)
{
    if(TIM_GetITStatus(TIMx, TIM_IT_Update) != RESET)
    {
        TIM_ClearITPendingBit(TIMx, TIM_IT_Update);
        // 超时处理,判定为帧接收完成
        uint16_t recvLen = TOTAL_BUF_SIZE - DMA_GetCurrDataCounter(DMAy_Streamx);
        // 处理数据...
    }
}

// USART接收中断中重置定时器
void USARTx_IRQHandler(void)
{
    if(USART_GetITStatus(USARTx, USART_IT_RXNE) != RESET)
    {
        // 读取数据或直接清除标志
        USART_ReceiveData(USARTx);
        TIM_SetCounter(TIMx, 0); // 重置超时计数器
    }
}

优点:可灵活调整超时时间,适用于不规则数据帧。

缺点:需要额外定时器资源。

2.4 协议指定长度+DMA

实现方法:
1. 第一阶段:接收固定长度的帧头(包含长度信息)
2. 第二阶段:根据帧头中的长度信息配置DMA接收剩余数据

// 示例处理流程
void DMA_IRQHandler(void)
{
    if(DMA_GetITStatus(DMAy_Streamx, DMA_IT_TC) != RESET)
    {
        DMA_ClearITPendingBit(DMAy_Streamx, DMA_IT_TC);

        if(phase == PHASE_HEADER)
        {
            // 解析头部获取数据长度
            dataLen = parseHeader(rxBuffer);
            // 重新配置DMA接收剩余数据
            DMA_Config(dataLen);
            phase = PHASE_DATA;
        }
        else
        {
            // 完整帧接收完成
            processFrame();
            // 重置为接收头部状态
            DMA_Config(HEADER_LEN);
            phase = PHASE_HEADER;
        }
    }
}

优点:适用于有明确协议的通信。

缺点:实现较复杂,需要协议支持。

3. 方法对比与选择建议

串口接收方法01.png

推荐方案:
1. 对于简单应用,优先考虑空闲中断+DMA方案
2. 对于高可靠性要求场景,建议结合协议指定长度和超时机制
3. 固定长度方案仅适用于特定场景

4. 注意事项
1. DMA缓冲区应足够大以避免溢出
2. 考虑数据对齐问题,特别是使用DMA时
3. 在多任务环境中,处理好数据访问的互斥问题
4. 对于高波特率通信,及时处理接收完成事件以避免数据覆盖
5. 实现适当的错误处理机制(如校验失败、超时等)

5. 总结

APM32 USART使用DMA接收数据时,可通过多种方式判断帧接收完成。选择合适的方法需要综合考虑通信协议特点、硬件资源及可靠性要求。在实际应用中,往往需要结合多种机制来实现稳定可靠的数据接收。




关键词: USART     中断     接收    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
心肾不交有什么症状 手小的男人代表什么 返流性食管炎用什么药 比是什么意思 费率是什么
hiv是什么 木糖醇是什么 贴黄瓜片对皮肤有什么好处 智五行属性是什么 犯规是什么意思
7.17是什么日子 心率过速是什么原因 洋葱有什么功效 孕早期吃什么有利于胎心胎芽发育 什么呀
癃闭什么意思 吃什么补叶酸 同人文是什么意思 火车和高铁有什么区别 比是什么意思
耳膜穿孔什么症状hcv8jop2ns8r.cn 两面性是什么意思wzqsfys.com 冬虫夏草为什么叫冬虫夏草yanzhenzixun.com 指甲紫色是什么病的征兆hcv9jop6ns0r.cn 古代医院叫什么hcv8jop3ns0r.cn
黄豆可以和什么一起打豆浆hcv8jop8ns3r.cn 为什么长湿疹hcv7jop9ns4r.cn 具备是什么意思hcv8jop1ns1r.cn 尿糖一个加号是什么意思hcv9jop4ns7r.cn 处女座是什么象hcv8jop4ns9r.cn
男鼠配什么生肖最好hcv8jop6ns9r.cn 什么是生物制剂hcv9jop0ns6r.cn 哼哈二将是什么意思huizhijixie.com 心肾不交失眠吃什么中成药hcv9jop0ns2r.cn 糖尿病的根源是什么hcv9jop2ns8r.cn
蚩是什么意思hcv8jop0ns6r.cn 为什么生化妊娠是好事hcv8jop9ns1r.cn 炫的意思是什么hcv7jop7ns4r.cn 平均红细胞体积偏低是什么原因aiwuzhiyu.com 人子是什么意思hcv8jop3ns6r.cn
百度