当前位置: 首页 > article >正文

51单片机波特率的计算方法

通过51单片机的波特率,来计算定时器的初始值。

定时器的溢出率公式 :
1 / ov = 1/f * 12 *(256 - init)
(ov为溢出率,溢出频率; init 为初始值; f为时钟频率, 比如12M或者11.0592M等)

波特率的计算公式
baud = 2^smod * ov / 32 = 2^smod * f / (12 * 32 * (256 - init))
(baud为波特率 比如4800, 9600 等; smod为51单片机中频率加倍标志)

ov = 32 * baud / (2 ^ smod) = f / (12 * (256 - init))

init = 256 - f * (2^ smod) / (12 * 32 * baud)

算例1:
假如要设定
baud = 4800
smod = 1
f = 12M = 12_000_000

通过上面的式子
init = 256 - f * 2 / (12 * 32 * 4800) = 256 - f / 921600 = 242.97916666666666
四舍五入为 243 = 0xf3
实际 baud = 4807.692307692308
误差 0.16%

与stc的工具进行验证
在这里插入图片描述
算例2
假如要设定
baud = 4800
smod = 0
f = 12M = 12_000_000

通过计算
init = 249.48958333333334
init = 249 = ‘0xf9’
实际baud = 4464.285714285715
误差 6.99%

在这里插入图片描述
算例3:
假如要设定
baud = 4800
smod = 0
f = 11.0592M = 11_059_200

通过计算
init = 250.00 = 0xfa
误差为0

通过分析初始值计算公式
init = 256 - f * 2 ^smod/ (12 * 32 * baud) = 256 - f * 2^smod / (384 * baud)

关键是要让
f * 2^smod 能被 384 ** baud 整除就行 (先不考虑除数要小于 256的情况, 因为如果大于256 可以通过提高波特率来解决)
也可以先假定 smod = 0, 如果smod = 1, 把波特率提高1倍 与smod=0情况一样

假如f = 12M
12M / 384 = 31250.0 (整数)

很容易看出来下面的波特率都可以达到0误差的情况
baud = 3125 (smod = 0) init = 0xf6
baud = 6250 (smod = 0) init = 0xfb
baud = 12500 (smod = 1)init = 0xfb


http://www.kler.cn/news/288458.html

相关文章:

  • kafka单条消息过大发送失败
  • CTF Show逆向4reserve wp--mingyue
  • 滑动窗口系列(不定长滑动窗口长度) 9/2
  • 09--kubernetes持久化存储和StatefulSet控制器
  • Ubuntu最新镜像下载,国内镜像源地址大全
  • RocketMQ集群搭建,及RocketMQ-Dashboard部署(前RocketMQ-Console)
  • vscode远程连接服务器并根据项目配置setting.json
  • 四、基本电路设计笔记——4.1 DC-DC稳压电路
  • 【Python123题库】#研究生录取数据分析A #图书数据分析(A)
  • 【算法每日一练及解题思路】判断数字是否为偶数
  • Vue实现步骤条(el-step)+Popover弹出框
  • Oracle 网络安全产品安全认证检索
  • 编程如何塑造我们的世界
  • 安宝特科技 | AR眼镜在安保与安防领域的创新应用及前景
  • 项目管理时间痛点解决百宝箱
  • 2025最新剧本杀服务平台构建攻略,Java SpringBoot+Vue,打造沉浸式用户体验!
  • 【Kubernetes部署篇】二进制搭建K8s高可用集群1.26.15版本(超详细,可跟做)
  • VMware命令
  • python基础语法(二)
  • 微软分享其首款定制人工智能芯片Maia 100的更多细节
  • ssh的小绝招,一般人我不告诉他!ssh免密登陆和第三方踏板登陆内网
  • 【负载均衡】LoadBalance场景演示
  • kafka快速上手
  • React 服务器组件
  • 智能汽车座椅制造:RFID技术助力精密加工与全程追踪
  • Getting an error trying to import environment OpenAI Gym
  • mongodb 时间存储使用Date还是时间戳
  • 【Python机器学习】NLP词频背后的含义——主成分分析
  • 使⽤docker部署project-exam-system(2)
  • [翻译+笔记] 用于视频生成的Diffusion Model