0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CW32单片机UART波特率设置介绍

jf_pJlTbmA9 来源:武汉芯源半导体 作者:武汉芯源半导体 2023-10-24 17:35 次阅读

一、波特率介绍

波特率表示单位时间内传送的码元符号的个数,它是对符号传输速率的一种度量,它用单位时间内载波调制状态改变的次数来表示,即指一个单位时间内传输符号的个数(Baud,单位符号:Bd)。

CW32L083 内部集成 6 个通用异步收发器 (UART),支持异步全双工、同步半双工和单线半双工模式,支持硬件数据流控和多机通信;可编程数据帧结构,可以通过小数波特率发生器提供宽范围的波特率选择。UART 控制器工作在双时钟域下,允许在深度休眠模式下进行数据的接收,接收完成中断可以唤醒 MCU 回到运行模式。

波特率发生器框图如下:

wKgaomUDx9OANavkAAB-_Nzf6Oo264.png

二、波特率设置

1.同步半双工模式下

波特率计算公式:BaudRate = UCLK / 12

其中,UCLK 是 UART 的传输时钟,其来源可以是 PCLK、LSE 或 LSI,通过控制寄存器 UARTx_CR2 的 SOURCE 位域来选择。

2.异步模式下

UART 的接收和发送波特率是相同的,由同一个波特率发生器产生。波特率发生器支持 16 倍采样、8 倍采样、4 倍采样和专用采样这 4 种采样模式,具体的采样模式通过控制寄存器 UARTx_CR1 的 OVER 位域来选择。UCLK是 UART的传输时钟,其来源可以是 PCLK、LSE或 LSI,具体来源通过 UARTx_CR2.SOURCE来选择。BRRI(UARTx_BRRI[15:0]),是波特率计数器的整数部分,可设置范围为 1 ~ 65535。BRRF(UARTx_BRRF[3:0]),是波特率计数器的小数部分,可设置范围为 0 ~ 15。

OVER = 00,设置 16 倍采样,波特率计算公式:BaudRate = UCLK / ( 16×BRRI + BRRF )

OVER = 01,设置 8 倍采样,波特率计算公式:BaudRate = UCLK / ( 8×BRRI )

OVER = 10,设置 4 倍采样,波特率计算公式:BaudRate = UCLK / ( 4×BRRI )

OVER = 11,设置专用采样,波特率计算公式:BaudRate = ( 256×UCLK ) / BRRI

专用采样仅适合传输时钟源为 LSE 或者 LSI 时,进行 2400bps、4800bps 或 9600bps 波特率下的 UART 通信。

UCLK 为 24MHz 波特率设置示例(OVER = 00)

wKgaomUDx9SAYmwxAACmbb3ltyA280.png

UCLK 为 32.768kHz 波特率设置示例(OVER = 11)

wKgaomUDx9aAO1gsAABRIMMDGCc344.png

3.波特率自动检测

CW32L083 使用 UART 作为从机进行通信时,可以通过自动波特率检测的方法,自动适应 UART 主机的波特率。可将通用定时器(GTIM)的输入捕获来源配置为 UART 的 RXD 信号,或者将 GTIM 的门控信号配置为 UART 的 RXD 信号,配合使用相关软件算法测量 UART 的波特率,以实现波特率自适应。

三、波特率计数器寄存器定义

1.UARTx_BRRI 波特率计数器整数部分寄存器

Address offset: 0x0C  Reset value: 0x0000 0000

wKgZomUDx9eAKzV1AABNFLKNDYY956.png

2.UARTx_BRRF 波特率计数器小数部分寄存器

Address offset: 0x10  Reset value: 0x0000 0000

wKgZomUDx9mAIiX8AABKpOeKHzs615.png

四、波特率设置举例

当传输时钟 UCLK 的频率为 24MHz 时,要求配置 BaudRate = 115200 bps,计算 16×BRRI + BRRF = 24000000 / 115200 = 208.33 则:

BRRI = 208.33 / 16 = 13.02,最接近的整数是:13(0x0D)

BRRF = 0.02×16 = 0.32,最接近的整数是:0(0x00)

即需要设置 UARTx_BRRI 为 0x0D,UARTx_BRRF 为 0x00 此时,实际波特率 BaudRate = 115384.62 bps,误差率为 0.16%。

来源:武汉芯源半导体

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5933

    文章

    41739

    浏览量

    614606
  • uart
    +关注

    关注

    21

    文章

    1090

    浏览量

    99117
  • 波特率
    +关注

    关注

    2

    文章

    259

    浏览量

    33543
收藏 人收藏

    评论

    相关推荐

    单片机原理及应用: 波特率#单片机

    单片机波特率波特率发生器
    学习硬声知识
    发布于 :2022年11月06日 15:02:57

    单片机串口波特率和上位波特率相同还是乱码怎么解决?

    单片机串口设置为115200后,打开串口助手,也设置为115200,发现依旧乱码。将串口助手波特率设置为38400后,发现正常打印。思索一番之后,发现CubeMX生成代码时,外部晶振默认
    发表于 01-19 07:39

    用插值调整法设计单片机串行口波特率

    单片机串行口波特率时,往往要使用特殊频率的晶振。本文在分析MCS-51单片机串行口工作原理的基础上,提出基于 12 MHz晶振的单片机系统,通过编程实现所需波特率
    发表于 04-08 09:43 19次下载

    51单片机的常用波特率初值表资料免费下载

    介绍的是51单片机的常用波特率初值表资料免费下载。
    发表于 08-29 17:29 5次下载
    51<b>单片机</b>的常用<b>波特率</b>初值表资料免费下载

    51单片机的常用波特率初值表资料分析

    单片机的定时器导致的。用51单片机的定时器做波特率发生器时,如果用11.0592Mhz的晶振,根据公式算下来需要定时器设置的值都是整数;如果用12Mhz晶振,则
    发表于 08-08 17:33 0次下载
    51<b>单片机</b>的常用<b>波特率</b>初值表资料分析

    如何将51单片机的9600波特率改成115200波特率

    单片机常用到的波特率是9600的,但是使用到的模块的波特率是115200的,程序写好了但是功能不能正常实现,所以想到了修改波特率,但是在网上查了好多关于修改波特率的文章,但是都没有直接可以解决问题的,希望写这篇文章可以对遇到相同问题的同学起到帮助。
    发表于 06-13 17:45 13次下载
    如何将51<b>单片机</b>的9600<b>波特率</b>改成115200<b>波特率</b>

    单片机51波特率计算工具应用程序免费下载

    介绍的设计单片机51波特率计算工具应用程序免费下载。
    发表于 04-24 16:41 5次下载
    <b>单片机</b>51<b>波特率</b>计算工具应用程序免费下载

    【Practical】51单片机串行口与波特率

    单片机串行口与
    发表于 11-23 09:21 10次下载
    【Practical】51<b>单片机</b>串行口与<b>波特率</b>

    单片机与PC串行通信中波特率的确定

    单片机与PC串行通信中波特率的确定原则和方法,特别给出了PC单片机串行通信中非标准波特率的计算方法及不同环境下实现的实例。
    发表于 08-01 17:29 1611次阅读

    STM32单片机的串口波特率计算方法

    单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率波特率就是每秒传送的字节数。双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。下面以STM32单片机为例,讲解一下串口波特率的计算方法。
    的头像 发表于 01-05 09:59 2.7w次阅读
    STM32<b>单片机</b>的串口<b>波特率</b>计算方法

    如何计算8051单片机波特率

    单片机使用定时器1工作在方式2的情况下作为串口波特率发生器,其波特率=(2smod/32)×(定时器T1溢出),其中smod是PCON《7》,表示是否波特率加倍,Fsoc是系统的晶振大小。
    发表于 11-18 16:39 2997次阅读

    什么是波特率?为什么要设置波特率

    设置波特率下面我们就以东用科技的OM302系列工业DTU为例,来给大家简单描述一下串口通信为什么要设置波特率。DTU是指数
    的头像 发表于 04-08 00:00 1664次阅读
    什么是<b>波特率</b>?为什么要<b>设置</b><b>波特率</b>?

    什么是串口波特率?串口波特率的分类及应用详解

    波特率串口波特率是指串口通信系统中传输数据的速率。在UART串口通信中,数据以位(bit)的形式传输,波特率是指每秒钟传输的位数。在串口通信中,波特率是非常重要的参数,因为波特率可以
    的头像 发表于 08-08 10:09 1074次阅读
    什么是串口<b>波特率</b>?串口<b>波特率</b>的分类及应用详解

    串口传输速率低于波特率怎么办 串口通信的波特率如何设置

    波特率,您可以尝试以下方法来解决问题:   1. 检查硬件连接:确保串口连接正确且牢固。检查连接线是否完好,确保没有松动或断开的接触。   2. 检查
    的头像 发表于 09-08 16:23 1041次阅读

    CW32单片机UART基本数据收发功能介绍

    CW32单片机UART基本数据收发功能
    的头像 发表于 10-24 16:50 33次阅读
    <b>CW32</b><b>单片机</b><b>UART</b>基本数据收发功能<b>介绍</b>