基于51单片机串口波特率自适应方法

您所在的位置:网站首页 串口自适应波特率 基于51单片机串口波特率自适应方法

基于51单片机串口波特率自适应方法

2024-07-02 13:15| 来源: 网络整理| 查看: 265

  在单片机中,UART是常用的通信方式。最近在研究Bootloader需要设置UART的波特率自适应,通过查阅资料参考了网友的方法,故借此分享我的方法。

  一般的,串口自适应波特率有以下2种方法。

  一是通过具有独立的同步字符。使用串行通讯前,要先进行同步操作,即接收端通过对比接收到的字符与同步字符的差异调整波特率,或者通过定时器测量同步字符的位宽计算波特率。即将串口接收IO电平状态进行定时器计时,计算出最小脉宽时长,即一帧时长,就可算出其波特率值,这种方式需要特定的同步字符(如:0x55、0xAA等)或者增加检测的周期。

   二是不需要独立的同步字符。即不管波特率如何,可以直接通讯。通讯命令前导字符固定,比如一些短消息模块使用AT指令集,每条指令都是以AT开始的,这样虽然是命令但是有同步的作用,不过要求必须在真实命令到来前调整波特率,这种方式需要的时间周期长,因为单片机需要不断调整波特率去接收判断传输的字符直到通讯成功,且判断必须快速准确。

   由于方便需要,以下实验采用的是方法一,使用单片机SC95F8617作为串口实验对象。

  实验条件:内部定时器一个。

  实验方法:通过定时器,连续检测UART输入引脚RXD上的电平变化,得到RXD上最小的脉宽时长计算出波特率,以达到波特率自适应。

  参考代码如下,最后返回的就是波特率数值,其中发送的同步字符为0x55:

1 #define SystemClock 32000000   //HRC=32MHz 2 #define UART_TX P21   //TX口 3 #define UART_RX   P20   //RX口 4 #define UART_TX_INIT {P2CON &= ~(1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3