在写串口通信时,经常因为时钟频率或波特率更改,需要重新配置波特率寄存器,以MSP430F5438A为例,记录一下寄存器配置方法:

//=============================
void Hal_Uart_Init(void)
{
  P3SEL|=RXD+TXD;                   // P3.4,5 = USCI_A0 TXD/RXD
  UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA0CTL1 |= UCSSEL__SMCLK;          // CLK = UCSSEL__SMCLK  ,8192000Hz  
  UCA0BR0 = 0x55;                           // 8192000Hz  /9600=853.33333333333
  UCA0BR1 = 0x03;                           //
  UCA0MCTL = UCBRS_2+UCBRF_0;               // Modulation UCBRSx=2, UCBRFx=0
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA0IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt
}

时钟源可选择ACLK=32768Hz,也可选择SMCLK(本程序主频=8192000Hz  ),根据波特率算法,可以知道选用SMCLK精度会更高一些。

1、用SMCLK的算法

a、计算UCA0BR0和UCA0BR1的值:8192000/9600  =853.33333333333,去整数部分,就是855,换算成HEX就是0x0355,对应UCA0BR0=0x55,UCA0BR1=0x03;

b、 计算UCBRS的值,去上面计算的小数部分0.33333333333x8=2.66666666664,取整数部分,为2.

当然也可通过寄存器的值反算回去真实的波特率=8192000/(853+2/8)=9600.9375.

2、用ACLK的算法

a、计算UCA0BR0和UCA0BR1的值:32768/9600  =3.4133333333333333333333333333333,去整数部分,就是3,换算成HEX就是0x0003,对应UCA0BR0=0x00,UCA0BR1=0x03;

b、 计算UCBRS的值,去上面计算的小数部分0.4133333333333333x8=3.3066666666666664,取整数部分,为3.

当然也可通过寄存器的值反算回去真实的波特率=32768/(3+3/8)=9709.037037037037037037037037037.

可以看出使用ACLK的误差会大一些,对与一些兼容性较差的设备,通信可能就会有问题。

void Hal_Uart_Init(void)
{
  P3SEL|=RXD+TXD;                   // P3.4,5 = USCI_A0 TXD/RXD
  UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA0CTL1 |= UCSSEL__ACLK;          // CLK = UCSSEL__ACLK, 
  UCA0BR0 = 0x03;                           // 32768/9600
  UCA0BR1 = 0x00;                           //
  UCA0MCTL = UCBRS_3+UCBRF_0;               // Modulation UCBRSx=3, UCBRFx=0
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA0IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt
}

MSP430串口波特率寄存器的配置相关推荐

  1. 串口通信寄存器/库函数配置、实例编写

    常用的串口相关寄存器 USART_SR状态寄存器 USART_DR数据寄存器 USART_BRR波特率寄存器 串口操作相关库函数(省略入口参数): void USART_Init(); //串口初始化 ...

  2. STM32-串口通信波特率计算以及寄存器的配置详解

    串口通信基本原理 处理器与外部设备通信的两种方式 并行通信 传输原理:数据各个位同时传输. 优点:速度快 缺点:占用引脚资源多 串行通信 传输原理:数据按位顺序传输 优点:占用引脚资源少 缺点:速度相 ...

  3. imx6 配置串口波特率_RS232串口多机通信

    一.基本原理 1.主从多机通信拓扑图 2.主从多机通信的具体过程 1)使所有的从机的SM2位置1,以便接收主机发来的地址: 2)主机发出一帧地址信息,其中包括8位需要与之通信的从机地址,第9位为1: ...

  4. imx6 配置串口波特率_stm32异步串口(uart)通讯基本操作

    | 串口是一种全双工通讯方式 单工 数据传输只支持数据在一个方向上传输 半双工 允许数据在两个方向上传输,在同一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信 全双工 允许数据同时 ...

  5. stm32 usart的BRR寄存器的配置,程序是CMSIS中的,分析它是怎么实现的?(自己设置好波特率,库文件会根据波特率计算BRR的值,和以前STM8不一样,需要自己根据波特率计算BRR值再设置)

    stm32 usart的BRR寄存器的配置 stm32 专栏收录该内容 23 篇文章0 订阅 订阅专栏 程序是CMSIS中的,分析它是怎么实现的? 波特率由整数和分数两部分组成. RCC_GetClo ...

  6. 51单片机之串口波特率配置

    51单片机之串口波特率计算 方式0的波特率配置 方式2的波特率配置 方式1和3的波特率配置 232串口模式,共有4钟方式,其中方式0.方式2的波特率是固定的.方式1.方式3的是可变波特率,这两个是用T ...

  7. 关于STM32串口波特率的产生,以及USARTDIV写入到USART_BRR寄存器的值

    #关于STM32串口波特率的产生,以及如何从USART_BRR寄存器值得到USARTDIV fCK是时钟频率,这里我们假设72000000Hz,如果需要设置的波特率为115200,那我们可以计算出US ...

  8. STM32学习笔记(四 串口通信 3 串口寄存器库函数配置)

    一.常用的串口寄存器 USART_SR状态寄存器 作用: 状态寄存器适用于检测串口此时所处的状态. 主要关注两个位:RXNE和TC(第5.6两位). RXNE(读数据寄存器非空): 当该位被置1的时候 ...

  9. 32 串口波特率_「正点原子FPGA连载」第五章串口中断实验

    1)实验平台:正点原子达芬奇FPGA开发板 2) 摘自[正点原子]达芬奇之Microblaze 开发指南 3)购买链接:https://detail.tmall.com/item.htm?id=624 ...

最新文章

  1. 使用PHP自带zlib函数 几行代码实现PHP文件打包下载zip
  2. spark mllib 预测之LinearRegression(线性回归)
  3. RT-Thread逐飞-智能车培训之MM32芯片应用
  4. Java浮点值拒绝服务漏洞危害分析
  5. Sublime text 2/3 中 Package Control 的安装与使用方法
  6. php非,PHP实现非对称加密
  7. 牛B的调试工具:OzCode
  8. 天翼云认证--大纲介绍
  9. win10删除开机密码_新版WIN10 如何取消开机密码的操作
  10. 潍职e校帮APP功能简介
  11. 分别对时分秒加减的java_Java中关于获取时间(日期)的总结大全
  12. java配u型你,泛型方法上的多个通配符使Java编译器(还有我!)很迷茫
  13. 基于腾讯AI Lab词向量进行未知词、短语向量补齐与域内相似词搜索
  14. 「07」回归的诱惑:深入浅出逻辑回归
  15. mysql解决端口占用
  16. 谷歌和火狐FirePath下载
  17. 字节跳动 IconPark 免费图标库、阿里巴巴矢量图标库
  18. Linux学习笔记之 Btrfs文件系统简介及使用
  19. Cannot resolve the name 'repository:auditing-attributes' to a(n) 'attribute grou
  20. iis下ISAPI_Rewrite配置及 iis rewrite 规则书写

热门文章

  1. 《如懿传》《延禧攻略》同获金骨朵网络影视盛典奖项
  2. Web渗透信息收集之域名、端口、服务、指纹、旁站、CDN和敏感信息
  3. 系统分析与设计第四次作业
  4. Qt编写地图综合应用22-动态轨迹
  5. 地级市各产业从业人数数据集(1999-2018年)
  6. 中国高温合金市场规模预测与发展态势研究报告2022版
  7. 利用MQL进行MQL解析
  8. 杭州师范大学计算机考研难度,考研难度低的师范大学是哪所
  9. 关于错误:编码GBK的不可映射字符
  10. Navicat Premium 12并安装