电子产业一站式赋能平台

PCB联盟网

搜索
查看: 127|回复: 0
收起左侧

古老的轮询法也能实现串口自动波特率识别

[复制链接]

355

主题

360

帖子

2833

积分

三级会员

Rank: 3Rank: 3

积分
2833
发表于 2021-6-16 11:15:00 | 显示全部楼层 |阅读模式
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是嵌入式里串口(UART)自动波特率识别程序设计与实现
( L) P# u- Y( J  S, ~$ `( O本篇是 《串口(UART)自动波特率识别程序设计与实现(中断)》 的续集,上一篇我们利用 GPIO 模块自带的下降沿中断功能实现了 RXD 电平跳变捕捉与计时,今天我们再试试古老的轮询 RXD 管脚电平的方法去实现同样的功能。3 g7 r) [* C( A. n" [4 s0 _
轮询法最大的缺点是会阻塞系统(不考虑 RTOS 调度),但是它也有中断法所没有的特点(或者说不太方便做到的),在做轮询时,我们可以采取一些经典的管脚电平软件消抖措施,从而降低误识别率。
+ _: t% _& s/ U/ ]2 L4 C5 B
  • 程序主页:https://github.com/JayHeng/cortex-m-apps/tree/master/components/autobaud一、串口(UART)自动波特率识别程序设计1.1 函数接口定义轮询法与中断法函数接口保持一致,详见 《串口(UART)自动波特率识别程序设计与实现(中断)》  1.1 小节,两者共享头文件:autobaud.h,这样方便项目设计时自由切换自动波特率识别方法。
    3 ]; I4 f/ n3 |( P1.2 识别设计思想关于识别的思路,轮询法与中断法也是一致的,详见 《串口(UART)自动波特率识别程序设计与实现(中断)》  1.2 小节,但是轮询法里多了手动检测 RXD 引脚电平下降沿跳变的过程。
    ! f6 P+ v: ?- J7 ?. [6 X引脚电平跳变检测其实也很简单,就是不断读取引脚输入电平值,并比较相邻两次输入电平值,如果发现不一致,则是跳变发生之时。如果前一次电平值是高,那么此时便是下降沿。
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表