51单片机UART串口通信波特率产生过程

整体过程:晶振 → 机器周期 → 定时器1 → UART分频 → 波特率 → 发送bi

1. 晶振:

给单片机提供最原始的节拍,来自于物理现象,51单片机就是利用石英晶片这个物理效应产生时钟。

51单片机的晶振为11.0592MHz,代表每秒振荡 11,059,200 次。

2. 晶振 → 机器周期

51单片机中,12个晶振周期 = 1个机器周期,也就是12 × 83.3ns=1us,代表1个机器周期 = 1us。

3. 机器周期 → 定时器1

8位自动重装:

TH1 = 初值

TL1 = 初值

例:

TH1=0xFD

8位最大能表示255,0xFD转为二进制为253,从253开始数,255-253+1=3;

代表数三次,每次为一个机器周期,3个机器周期为3us,故该计时器为3us溢出一次。

4. 定时器1溢出 → UART分频

51 UART模式1(模式1用得最多):

若SMOD=0,UART时钟 = T1溢出频率 /32

若SMOD=1,UART时钟 = T1溢出频率 /16

5. UART分频 → 波特率

如我们最终需要的波特率为9600Hz:代表每秒发送9600bit,也就是1bit需要1/9600s=104.17us,得到没发送1bit需要104us;

6. UART发送bit

TXD每104us改变一次电平,发送1bit

注:时钟源和UART分频都是为了最终得到的波特率符合我们的要求,所以有多种组合的方案,但一般我们会选取误差最小的那一种方案。

相关推荐
ysu_03148 小时前
基于 STM32 与 TinyML 的端侧手势识别系统
stm32·单片机·嵌入式硬件·mcu
Brilliantwxx8 小时前
【STM32 】把 printf 搬到串口上 —— C 标准 IO 函数重定向与多文件工程搭建(实战串口电灯)
c语言·开发语言·stm32·单片机·嵌入式硬件·架构·ecmascript
LCG元8 小时前
STM32F103 FreeRTOS 任务CPU占用率实测:运行时统计接入、TIM2/DWT计时源对比与优先级饥饿调优
stm32·单片机·嵌入式硬件
blue_ice .8 小时前
DDS原理及简易实现
开发语言·经验分享·笔记·嵌入式硬件·fpga开发
国产化创客8 小时前
创客开发入门(七)Arduino ESP32-WS2812开发
驱动开发·单片机·物联网·智能硬件
BSD_HY9 小时前
薄膜开关矩阵扫描在低功耗MCU上的GPIO扩展实现
单片机·嵌入式硬件·矩阵·人机交互·薄膜开关·源头工厂
国产化创客9 小时前
创客开发入门(五)Arduino IDE 编程基础
单片机·嵌入式硬件·物联网·esp32
派勤电子11 小时前
嵌入式硬件选型|3.5寸工控板与Mini-ITX主板的扩展能力哪个更好?
嵌入式硬件·工控主板·嵌入式主板·工控主板扩展·3.5寸工控板·mini-itx·工业主板io接口
工业胶粘剂技术13 小时前
科耀K-8095M 单组分耐高温环氧 电机磁钢/新能源汽车高温结构粘接技术参数与选型
单片机·嵌入式硬件·汽车
李永奉18 小时前
中科蓝讯SDK开发-BT893x 面条耳机连接vivo手机后连接APP端,最后手机端设置页面手动断开蓝牙连接,此时耳机端假断开
c语言·开发语言·嵌入式硬件·物联网·智能手机·电脑