这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » 串口波特率自动检测

共1条 1/1 1 跳转至

串口波特率自动检测

菜鸟
2025-08-26 09:15:55     打赏

示例目的
展示通过软件方式如何实现USART自动检测波特率功能。

1 简要概述
本例程主要介绍如何用软件方式实现串口自动波特率功能。
实现原理:
通过软件量测USART起始位(start bit)的宽度,计算出USART分频值,实现自动波特率功能。

注意:在量测阶段的时候,主机端发送的第一个字节的第1位必须为1, 也就是起始位后的第一个bit必须为1,如上图,否则量测不准。例如可以发送 0Xa1, 0x55, 0x33…等
实现方法步骤:
1)初始化TMR,EXINT
2)通过EXINT监测USART RX,当产生上升沿或者下降是,记录下当前的TMR计数值。
3)当产生了两个沿时,一个下降沿和一个上升沿,表示已经量测到起始位
4)等待1ms,等待当前这一个byte数据接收完成
5)计算当前收到的数据,并计算出当前USART的分频值
6)发送一个确认数据0x55表示校准完成
注意:例程使用TMR6, USART2(PA2,PA3), 如果需要修改为其它串口或者TMR,可修改代码里面对于的宏定义

2 快速使用方法
2.1 硬件资源
1) AT-START-F437实验板,如下是437实验板;
图1. AT-START-F437 V1.1开发板


2) USB转串口工具

2.2 软件资源
1) SC0121_SourceCode
注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考
AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。

2.3 示例使用
1) 将USB转串口工具的RX,TX接到USART2的TX(PA2),RX(PA3)
2) 打开SourceCode\SC0121_SourceCode_V2.0.0\utilities\ usart_auto_baud_rate_detection\ mdk_v5源程序;
3) 将代码编译后下载到实验板;
4) 在PC上打开串口助手,选择对应的串口,通过串口助手发送数据一个数据 0x55;
5) 如果PC收到0x55,表示自动波特率检测成功



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]