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

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

3天内不再提示

11.0592MHz晶振换成12MHz后单片机串口通讯乱码的原因分析

贸泽电子 来源:贸泽电子 2026-03-06 09:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

真是没想到啊,把11.0592MHz的晶振焊成了12MHz,单片机串口通讯打印全乱码了。明明频率差不多,为什么会导致通讯彻底失败?贸泽科普实验室带大家从串口乱码开始,重新认识晶振——

01为什么晶振频率有小数点的特殊数值?

通信的时候,单片机需要设置串口波特率,也就是每秒传输的比特数,比如9600波特率,就是每秒传9600个二进制位。串口通讯要想正常传数据,发送端和接收端的波特率必须一致,就像两个人聊天,一个人每秒说10个字,而另一个人每秒只能听8个字,必然听不清,也就是对应串口乱码了。

波特率并不是凭空设定的,而是由晶振频率计算出来的,以视频中51单片机为例,其1个机器周期等于12个晶振时钟周期,波特率就是:

波特率=晶振频率÷机器周期÷分频系数

我们还是以常用的9,600波特率为例,算一笔账,差距一眼就能看出:

如果使用的是11.0592MHz晶振:

晶振频率:11,059,200Hz

机器周期:12 个时钟周期,每秒能产生:11,059,200÷12 = 921600个机器周期

波特率计算:921,600÷96=9,600,刚好是目标波特率

db611b58-175e-11f1-90a1-92fbcf53809c.png

图1

如果换成12MHz晶振:

晶振频率:12,000,000Hz

机器周期:12个时钟周期,每秒能产生 12,000,000÷12= 1,000,000个机器周期

波特率计算:1,000,000÷ 104≈9615(实际波特率),和目标9,600存在明显误差。若按理想分频,单片机无法实现非整数分频(1,000,000÷96≈10416.67),只能取近似值,导致实际波特率和目标值的误差进一步扩大。

dbbf137a-175e-11f1-90a1-92fbcf53809c.png

图2

所以,把11.0592MHz的晶振焊成了12MHz,就导致了串口通信出错。如果你在单片机开发中遇到过这种串口乱码玄学问题,不妨先检查晶振有没有焊对。

其实,上面串口通信的例子,很好的解释了振频率总有很多“带小数点”的奇怪数值,这个问题是很多刚接触电子开发的人都会疑惑的。

除了11.0592MHz,32.768kHz也是常用的非整数晶振频率,它几乎是所有实时时钟(RTC)电路的标配。这是因为32.768kHz恰好是2的15次方(2^15=32768),经过15次二分频后,就能精准得到1Hz的时钟信号(每秒1个脉冲),完美匹配“秒”的时间单位。如果选用其他频率,想要得到1Hz信号,要么需要复杂的分频电路,要么会产生计时误差,32.768kHz因此成为RTC电路的“黄金频率”。

dc3429c6-175e-11f1-90a1-92fbcf53809c.png

图3

为什么晶振频率有小数点的特殊数值?答案很简单:这些看似特殊的频率,都是经过精密计算的工程极优解,每一个数字背后都藏着实用的设计逻辑。

02晶振是如何精确到小数点四位的?

晶振能实现如此高的频率精度,核心在于其内部的石英晶片。

拆开晶振的金属外壳,一片经过精密切割的石英晶片便显露出来了,还有连接在其表面的金属电极。

dca0434a-175e-11f1-90a1-92fbcf53809c.png

图4

石英晶体具有独特的压电效应:给石英晶体施加交变电压时,晶体会随之产生周期性的机械振动(逆压电效应);反之,机械振动又会产生对应的电信号(正压电效应)。正是这种电能与机械振动的持续相互转换,构成了稳定振荡的基础。

dd0702c4-175e-11f1-90a1-92fbcf53809c.png

图5

而晶振的精准频率,要归功于石英晶体本身的一个关键特性了,它具有一个由自身物理结构,比如切割方向、几何尺寸、厚度等所决定的固有机械谐振频率。当我们施加的外部交变电压频率恰好与这个固有频率一致时,便会引发谐振。此时,晶体的机械振幅达到极大,输出的电信号也极为强劲和稳定。

dd6b97c0-175e-11f1-90a1-92fbcf53809c.png

图6

由于这个频率是由晶体本身的物理结构决定的,几乎完全不受外部电路和环境干扰,因此才能实现极高的精度。晶振有那么多“非整数”的标称频率都是经过精密计算和切割后,石英晶体所能稳定产生的、精确的固有谐振频率。

03有源vs无源:晶振该怎么选?

搞懂了晶振的频率逻辑,接下来就是使用中的实际问题了,比如晶振主要分为有源晶振和无源晶振,怎么选?

无源晶振:需要“外部助力”才能工作

平时在单片机超小系统中常用的2脚晶振,大多是无源晶振,必须依靠外部的起振电路才能产生稳定振荡。

常见的起振电路是皮尔斯并联振荡电路,由两个匹配电容(CL1、CL2)和单片机内部的反相放大器组成。

ddd2d8a4-175e-11f1-90a1-92fbcf53809c.png

图7

晶振 datasheet 中会标注负载电容(CL)和杂散电容(Cs)的数值,通过公式 CL = (CL1×CL2)/(CL1+CL2) + Cs,就能计算出合适的匹配电容参数——如果电容数值不合适,晶振可能无法起振,或者输出频率不稳定。

de342212-175e-11f1-90a1-92fbcf53809c.png

图8

无源晶振的优势很明显:成本低、体积小、设计灵活,适合对成本敏感、功能相对简单的电路,比如51单片机超小系统、简单传感器模块等。但它的缺点也不容忽视:需要额外设计起振电路,对布线要求较高,抗干扰能力相对较弱。

有源晶振:即插即用的“时钟模块”

有源晶振则是一体化解决方案——把石英晶体、起振电路、信号放大电路和波形整形电路全部集成在金属外壳内,相当于一个现成的时钟信号发生器。

使用时,只需给有源晶振接通电源,就能直接输出稳定的时钟信号,不需要额外设计起振电路,电路连接非常简单。而且有源晶振的输出信号稳定性更高、抗干扰能力更强,还能提供更宽的频率范围,部分型号甚至支持频率可调。

不过有源晶振的价格比无源晶振高不少,体积也更大,功耗相对较高,更适合对时钟精度和稳定性要求高的场景,比如工业控制、通信设备、高端单片机系统等。

04晶振使用也有“坑”要避?

虽然晶振是结构简单的电子元件,但很多新手会因细节疏忽踩坑,导致电路工作异常,比如:

1)正如开头的实验所示,不同频率晶振对应的机器周期、波特率等参数不同,随意替换会导致功能异常,必须根据电路设计需求选择指定频率,不能随意更换。

2)无源晶振的匹配电容不能随便选,需按 datasheet 计算选型,否则会影响起振和频率稳定性。

3)晶振电路对布线要求较高,晶振应尽量靠近单片机的晶振引脚,布线不宜过长,避免引入干扰,导致时钟信号异常。

晶振,就像电子系统的“心脏”,每一次精准振荡,都为设备的正常运行提供时间基准。从串口乱码到实时计时,晶振的频率选择和选型都直接影响着项目成败。希望通过这篇文章,你能真正搞懂晶振的核心逻辑,以后在开发中再也不会为“选什么晶振”“为什么通讯失败”而头疼。

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

    关注

    6078

    文章

    45629

    浏览量

    675251
  • 晶振
    +关注

    关注

    35

    文章

    3670

    浏览量

    73925
  • 串口
    +关注

    关注

    15

    文章

    1628

    浏览量

    83550

原文标题:11.0592MHz 换 12MHz,串口直接乱码?原因终于说清了 | 贸泽科普实验室

文章出处:【微信号:贸泽电子,微信公众号:贸泽电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    应该用11.0592MHZ还是12MHZ的?

    现在正在做一块测定电机转速的电路板,由于要调试程序,想把电路板做成可以烧录单片机的功能的。这时我单片机应该用11.0592的还是
    发表于 08-06 15:47

    11.0592MHZ跟51单片机是什么关系?

    11.0592MHZ跟51单片机是什么暧昧关系?IC旁边常有的陪伴在上章中已经讲到,这
    发表于 06-27 14:26

    单片机外接11.0592mhz问题

    `论述单片机外接11.0592mhz振作用,其与机器周期的关系,并用此编写延时子函数`
    发表于 12-19 20:30

    请问11.0592MHZ跟51单片机有什么关系?

    11.0592MHZ跟51单片机是什么暧昧关系?IC旁边常有的陪伴在上章中已经讲到,这
    发表于 09-27 04:35

    为什么51单片机爱用11.0592MHZ

    为什么51单片机爱用11.0592MHZ?在设计51单片机系统PCB时,
    发表于 04-19 09:27

    为什么51单片机爱用11.0592MHZ?

    出来,希望对学51的童鞋来说能有帮助。一、为什么51单片机爱用11.0592MHZ?其一:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关..
    发表于 11-10 06:45

    12MHz11.0592MHz两种不同的区别

    最近在学单片机定时器初值的计算方法,下面大概列出来12MHz11.0592MHz两种不同
    发表于 11-22 07:49

    如何解决单片机串口通讯12MHz下的问题

    单片机串口通讯12MHz的问题首先想说单片机12M远不如
    发表于 11-26 06:20

    单片机串口通信乱码怎么解决

    单片机串口通信乱码问题问题:测试51单片机串口通信时,设置主程序为单片机将接收到的数据发送出去,
    发表于 02-18 06:34

    51单片机为什么经常用11.0592MHz的?

    51单片机为什么经常用11.0592MHz
    发表于 11-03 06:29

    为什么51单片机一般使用11.0592?

    11.0592原因是51单片机的定时器导致的。用51单片机的定时器做波特率发生器时,如果
    的头像 发表于 09-18 16:11 1.3w次阅读
    为什么51<b class='flag-5'>单片机</b>的<b class='flag-5'>晶</b><b class='flag-5'>振</b>一般使用<b class='flag-5'>11.0592</b>?

    单片机串口通讯12MHz下的问题

    单片机串口通讯12MHz的问题首先想说单片机12M远不如
    发表于 11-18 12:06 13次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>串口</b><b class='flag-5'>通讯</b>在<b class='flag-5'>12MHz</b>下的问题

    为什么51单片机爱用11.0592MHZ

    11.0592原因是51单片机的定时器导致的。用51单片机的定时器做波特率发生器时,如果用
    发表于 11-22 17:36 14次下载
    为什么51<b class='flag-5'>单片机</b>爱用<b class='flag-5'>11.0592MHZ</b><b class='flag-5'>晶</b><b class='flag-5'>振</b>

    单片机使用12M串口乱码问题

    单片机使用12M串口乱码问题,串口通信01或1,
    发表于 12-03 19:51 12次下载
    <b class='flag-5'>单片机</b>使用<b class='flag-5'>12</b>M<b class='flag-5'>晶</b><b class='flag-5'>振</b><b class='flag-5'>串口</b><b class='flag-5'>乱码</b>问题

    单片机串口通信乱码问题

    单片机串口通信乱码问题问题:测试51单片机串口通信时,设置主程序为单片机将接收到的数据发送出去,
    发表于 12-23 19:05 10次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>串口</b>通信<b class='flag-5'>乱码</b>问题