为什么单片机的晶振会有 110592mhz 这个数字.docx
- 文档编号:26562294
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:8
- 大小:16.34KB
为什么单片机的晶振会有 110592mhz 这个数字.docx
《为什么单片机的晶振会有 110592mhz 这个数字.docx》由会员分享,可在线阅读,更多相关《为什么单片机的晶振会有 110592mhz 这个数字.docx(8页珍藏版)》请在冰豆网上搜索。
为什么单片机的晶振会有110592mhz这个数字
为什么单片机的晶振会有11.0592MHz这个数字?
71郭昊可以被准确分频成各种通信常用的波特率11.0592MHz=192*57600=384*28800=576*19200=1152*9600update:
@肖孝云:
很好的思路,但是这是什么因果关系?
那为什么不能先是有个12M的频率,然后分频成其他的波特率呢?
答:
因为美国工业电子联盟(ElectronicIndustriesAlliance,EIA)RS-232-C标准中规定了数据传输速率为:
50、75、100、150、300、600、1200、2400、4800、9600、19200、38400如果继续问为什么它要这么制定,这个我就不确定了,据Google是因为
由电信线路特性决定的
电话线路的带通是300--3KHz,当时HAYES先搞的modem,所以用的2400HZ信号,对应波特率是2400。
由于基本频率确定了,以后采用的提高通讯速率的方法都是在2400基础上倍频的,所以形成了9600,19200。
。
。
。
当然,实际原因就是大家通用标准都一样了,慢慢淘汰下来非主流的,就是这样了,其实很多行业都是这样,为什么要这么做,或许有一定的理由,但追根究底还是历史惯性,大家都这么做了,更改起来没有必要而且成本太大,所以就一直延续了,比如键盘的qwerty布局,220v等等另外12m不如11.0592M好分频2013-12-03
8条评论
感谢
分享
收藏
·
没有帮助
·
举报4王俊楠上面说的有些复杂,本人没有不敬的意思,说一下我在书上看的吧。
标准的51单片机晶振是1.2M-12M,一般由于一个机器周期是12个时钟周期,所以先12M时,一个机器周期是1US,好计算,而且速度相对是最高的(当然现在也有更高频率的单片机)。
11.0592M是因为在进行通信时,12M频率进行串行通信不容易实现标准的波特率,比如9600,4800,而11.0592M计算时正好可以得到,因此在有通信接口的单片机中,一般选11.0592M2013-09-23
添加评论
感谢
分享
收藏
·
没有帮助
·
举报2马千里,我是学电信的,我不是走这条路的楼上说的大体上都是对的:
这么奇葩的频率目的是————分频,产生通信用的同步信号
(同步信号的频率,就是那个波特率)但是为什么是11.0592而不是12?
原因是——12分不出整数的波特率,或者说常用的整数波特率。
我放上教材一页,一看就懂:
12MHZ分出来的那几个频率,是有误差的
<imgsrc="data-rawwidth="4000"data-rawheight="2248"class="origin_imagezh-lightbox-thumb"width="4000"data-original="
至于为什么是那几个频率,参见@郭昊的答案。
2013-09-23
1条评论
感谢
分享
收藏
·
没有帮助
·
举报0知乎用户我之前看过一个说法是工艺的原因2013-09-25
添加评论
感谢
分享
收藏
·
没有帮助
·
举报0飞扬,水木清华,婉兮飞扬。
已经有人说了,串行通讯波特率相关。
还有一个时钟晶振32.768KHz也是为了分频方便。
32.768KHz的15分频就是1Hz。
2013-09-23
添加评论
感谢
分享
收藏
·
没有帮助
·
举报0JksLiu,做软件呢,还是做硬件呢有11.0592MHz晶振的原因确实如其他人回答的那样。
但至于这个频率是否真的方便了编程,我个人觉得是帮大家养成了一些编程的不良习惯。
首先,串口速率的一点误差有多大影响呢?
答:
没有影响。
单片机常用的3线(GND,TX,RX)串口是异步的,异步代表误差是没有累积的,所以一点点的误差不会有任何影响。
第二,有人会说,如果用其它频率的晶振,计算得到的结果会不整。
我想问,难道你们在设置寄存器的时候真的是拿计算器先计算出需要的值,再硬编码到源代码中的吗?
难道没听说过魔数?
#defineCRYSTAL_FREQUENCE8888/*Mhz*/
#defineBAUD_RATE9600
/*寄存器0的值*/
#defineREGISTER0CRYSTAL_FREQUENCE+-*/BAUD_RATE
/*寄存器1(如果有的话)的值*/
#defineREGISTER1CRYSTAL_FREQUENCE+-*/BAUD_RATE
如果使用上面的方法的话,晶振频率是多少都没有关系。
还有就是,除了在古老的51单片机上我见过用11.0592M这个频率的,在其他比如AVR或者Cortex-M系列,我见过用得最多的一般是8MHz。
setbaud.hSourceFile这是来自Savannah的AVRLibc中设置波特率的头文件,很实用,考虑十分周全,当然也有点复杂,可供参考。
2013-09-24
2条评论
感谢
分享
收藏
·
没有帮助
·
举报71郭昊可以被准确分频成各种通信常用的波特率11.0592MHz=192*57600=384*28800=576*19200=1152*9600update:
@肖孝云:
很好的思路,但是这是什么因果关系?
那为什么不能先是有个12M的频率,然后分频成其他的波特率呢?
答:
因为美国工业电子联盟(ElectronicIndustriesAlliance,EIA)RS-232-C标准中规定了数据传输速率为:
50、75、100、150、300、600、1200、2400、4800、9600、19200、38400如果继续问为什么它要这么制定,这个我就不确定了,据Google是因为
由电信线路特性决定的
电话线路的带通是300--3KHz,当时HAYES先搞的modem,所以用的2400HZ信号,对应波特率是2400。
由于基本频率确定了,以后采用的提高通讯速率的方法都是在2400基础上倍频的,所以形成了9600,19200。
。
。
。
当然,实际原因就是大家通用标准都一样了,慢慢淘汰下来非主流的,就是这样了,其实很多行业都是这样,为什么要这么做,或许有一定的理由,但追根究底还是历史惯性,大家都这么做了,更改起来没有必要而且成本太大,所以就一直延续了,比如键盘的qwerty布局,220v等等另外12m不如11.0592M好分频2013-12-03
8条评论
感谢
分享
收藏
·
没有帮助
·
举报4王俊楠上面说的有些复杂,本人没有不敬的意思,说一下我在书上看的吧。
标准的51单片机晶振是1.2M-12M,一般由于一个机器周期是12个时钟周期,所以先12M时,一个机器周期是1US,好计算,而且速度相对是最高的(当然现在也有更高频率的单片机)。
11.0592M是因为在进行通信时,12M频率进行串行通信不容易实现标准的波特率,比如9600,4800,而11.0592M计算时正好可以得到,因此在有通信接口的单片机中,一般选11.0592M2013-09-23
添加评论
感谢
分享
收藏
·
没有帮助
·
举报2马千里,我是学电信的,我不是走这条路的楼上说的大体上都是对的:
这么奇葩的频率目的是————分频,产生通信用的同步信号
(同步信号的频率,就是那个波特率)但是为什么是11.0592而不是12?
原因是——12分不出整数的波特率,或者说常用的整数波特率。
我放上教材一页,一看就懂:
12MHZ分出来的那几个频率,是有误差的
<imgsrc="data-rawwidth="4000"data-rawheight="2248"class="origin_imagezh-lightbox-thumb"width="4000"data-original="
至于为什么是那几个频率,参见@郭昊的答案。
2013-09-23
1条评论
感谢
分享
收藏
·
没有帮助
·
举报0知乎用户我之前看过一个说法是工艺的原因2013-09-25
添加评论
感谢
分享
收藏
·
没有帮助
·
举报0飞扬,水木清华,婉兮飞扬。
已经有人说了,串行通讯波特率相关。
还有一个时钟晶振32.768KHz也是为了分频方便。
32.768KHz的15分频就是1Hz。
2013-09-23
添加评论
感谢
分享
收藏
·
没有帮助
·
举报0JksLiu,做软件呢,还是做硬件呢有11.0592MHz晶振的原因确实如其他人回答的那样。
但至于这个频率是否真的方便了编程,我个人觉得是帮大家养成了一些编程的不良习惯。
首先,串口速率的一点误差有多大影响呢?
答:
没有影响。
单片机常用的3线(GND,TX,RX)串口是异步的,异步代表误差是没有累积的,所以一点点的误差不会有任何影响。
第二,有人会说,如果用其它频率的晶振,计算得到的结果会不整。
我想问,难道你们在设置寄存器的时候真的是拿计算器先计算出需要的值,再硬编码到源代码中的吗?
难道没听说过魔数?
#defineCRYSTAL_FREQUENCE8888/*Mhz*/
#defineBAUD_RATE9600
/*寄存器0的值*/
#defineREGISTER0CRYSTAL_FREQUENCE+-*/BAUD_RATE
/*寄存器1(如果有的话)的值*/
#defineREGISTER1CRYSTAL_FREQUENCE+-*/BAUD_RATE
如果使用上面的方法的话,晶振频率是多少都没有关系。
还有就是,除了在古老的51单片机上我见过用11.0592M这个频率的,在其他比如AVR或者Cortex-M系列,我见过用得最多的一般是8MHz。
setbaud.hSourceFile这是来自Savannah的AVRLibc中设置波特率的头文件,很实用,考虑十分周全,当然也有点复杂,可供参考。
2013-09-24
2条评论
感谢
分享
收藏
·
没有帮助
·
举报
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 为什么单片机的晶振会有 110592mhz 这个数字 为什么 单片机 晶振会有 110592 mhz 这个 数字