打印
[AT32F403/403A]

使用403A做自动波特率设计有方案参考吗?

[复制链接]
2324|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pe66ak|  楼主 | 2024-8-15 08:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用403A做自动波特率怎么搞?有人弄过吗?

使用特权

评论回复
沙发
muyichuan2012| | 2024-8-15 10:07 | 只看该作者
可以软件实现,可参考如下案例
USART Software Auto Baud Rate Detection
展示通过软件方式如何实现USART 自动检测波特率功能。
https://www.arterytek.com/file/download/1665

使用特权

评论回复
板凳
d1ng2x| | 2024-12-4 22:31 | 只看该作者
利用定时器测量法,通过定时器测量串口接收数据的电平持续时间,从而计算出波特率。

使用特权

评论回复
地板
cen9ce| | 2024-12-4 23:48 | 只看该作者
当串口接收到起始位时,启动定时器计数,直到接收完一个数据位的电平变化,此时定时器的计数值与波特率成反比,通过计算可得出波特率的值 。

使用特权

评论回复
5
b5z1giu| | 2024-12-5 21:23 | 只看该作者
选择一个合适的定时器,如 AT32F403 的通用定时器,设置其工作模式为计数模式,确定计数时钟源等参数。使能串口接收中断,在中断服务函数中,当检测到起始位下降沿时,清零定时器计数器,并启动定时器开始计数。当接收到一个完整的数据位电平变化时,读取定时器的计数值,根据定时器的计数时钟频率和计数值计算出该位的持续时间,进而得到波特率。例如,若定时器计数时钟频率为,计数值为,则波特率 。

使用特权

评论回复
6
g0d5xs| | 2024-12-5 22:15 | 只看该作者
一般来说,可以将计算得到的波特率与预定义的标准波特率值进行比较,选择最接近的标准波特率来配置串口通信的波特率寄存器,实现自动波特率匹配。

使用特权

评论回复
7
kaif2n9j| | 2024-12-6 07:09 | 只看该作者
基于串口空闲中断法,串口在接收数据时,若在一段时间内没有新的数据到来,即进入空闲状态,此时会产生空闲中断。通过测量相邻两个空闲中断之间的时间间隔,结合已知的数据位长度等信息,可以计算出波特率。

使用特权

评论回复
8
lamanius| | 2024-12-6 09:38 | 只看该作者
配置串口的空闲中断,并设置相应的中断优先级。定义变量用于记录上一次空闲中断发生的时间戳和当前空闲中断发生的时间戳,以及用于存储计算得到的波特率值等。

使用特权

评论回复
9
lix1yr| | 2024-12-6 11:37 | 只看该作者
在串口空闲中断服务函数中,获取当前的系统时间作为,计算时间间隔。若这是第一次进入空闲中断,则将赋值给,不进行波特率计算;若不是第一次,则根据时间间隔和数据帧的格式(如数据位长度、停止位等)来计算波特率。例如,假设数据位长度为位,无校验位,位停止位,那么一个数据帧的总位数为位。若以微秒为单位,则波特率 。

使用特权

评论回复
10
p0gon9y| | 2024-12-6 13:45 | 只看该作者
一般可以这样,将计算得到的波特率进行适当处理后,更新串口的波特率配置寄存器,完成自动波特率调整。

使用特权

评论回复
11
su1yirg| | 2024-12-6 17:31 | 只看该作者
STM32 的自动波特率方案: STM32 与 AT32F403 在架构和功能上有一定相似性。可以参考 STM32 的自动波特率检测算法,例如通过设置串口的特定寄存器位来启动自动波特率检测功能,然后在程序中轮询相应的状态位,等待检测完成并获取检测到的波特率值,最后根据该值配置串口波特率。虽然寄存器名称和具体操作细节可能有所不同,但整体思路和流程可供借鉴.

使用特权

评论回复
12
tax2r6c| | 2024-12-6 18:55 | 只看该作者
一些通用的自动波特率检测方法,如采用过采样技术,对串口输入信号进行多次采样,根据采样结果来确定波特率;或者利用锁相环(PLL)原理,通过对输入信号的频率和相位进行跟踪和锁定,从而得到准确的波特率等,这些方法在理论上也可以应用于 AT32F403 的自动波特率设计,但需要根据芯片的具体硬件资源和特性进行适当的调整和实现 。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

218

帖子

0

粉丝