晶振为什么选择11.0592MHz?11.0592m和12m有什么区别?为什么单片机晶振实际上是11.0592MHz而不是12MHz?它们在不同的场合有不同的应用。11.0592MHZ和12MHZ晶体振荡器都是常用的,并不是说12MHZ的晶振实际上是11.0592 MHz,11.0952MHZ的晶振在串行通信的时钟和波特率的计算中可以得到一个整数,所以计算结构更加准确方便。
最大晶振不一样,得根据电源电压来选择。选择12M精确计算定时,因为用这个晶振分频后定时器参数是整数,误差小。另外,如果使用uart,波特率一般用11.0592M精确计算,最大24Mhz,数据源,数据表。再大一点,可能就不对了。不知道你有没有试过。晶振可以用两条短腿工作,速度很快。逻辑可能有问题。一般选择12M是因为大部分指令需要12个周期才能执行,也就是说1M指令大约一秒钟执行一次。当然,一条指令也有几个周期,这只是为了延迟等好的计算。
晶体振荡器有很多种,在不同的场合有不同的应用。11.0592和12MHZ晶体振荡器都是常用的。这并不意味着12MHZ的晶振实际上是11.0592MHZ,11.0952MHZ的晶振在串行通信的时钟和波特率的计算中可以得到一个整数,所以计算结构更加准确方便。还有12MHZ,你想想,周期更准吧?正好是1us。11.0592呢?
11.0592MHz选择只是为了得到准确的通信波特率,串行通信的可靠性高,因为可以准确划分时钟频率,这与UART(通用异步收发器)的常用波特率有关。尤其是较高的波特率,无论数值多特殊,这些晶体都是精确的,经常使用。因为11.0592MHz可以精确划分时钟频率,所以和通用UART(通用异步接收/发送)的波特率有关。
使用11.0592晶振的原因是51单片机的定时器引起的。用51单片机定时器制作波特率发生器时,如果用11.0592Mhz晶振,定时器设置的值根据公式是整数。如果使用12Mhz晶体振荡器,波特率将会偏离。例如,如果使用定时器将0XFD设置为9600,则实际波特率为10000。通常,波特率偏差在4%左右。所以STC90C516晶振的12M波特率是9600。
晶振的振荡频率取决于单片机的具体应用,并不是越高越好。11.0592MHz和12MHz的振荡频率差别不大,但如果你的微控制器需要异步串行通信,我建议你选择11.0592MHz的振荡频率,因为你在编程波特率发生器时使用这个振荡频率,波特率计数器的初始计数值可以是整数;但如果振荡频率为12MHz,初始计数值只能是近似值(接近小数的整数),长时间通信会造成误差积累,导致通信失败。
One:因为可以精确划分时钟频率,所以和UART(通用异步收发器)常用的波特率有关。尤其是更高的波特率(19600,19200),无论数值多奇,这些晶体都是精确的,经常使用。其次,使用11.0592晶振的原因是由51单片机的定时器引起的。用51单片机的定时器作为波特率发生器时,如果用11.0592Mhz的晶振,根据公式需要定时器设置的值都是整数;如果使用12Mhz晶体振荡器,波特率会有偏差。比如9600,用定时器取0XFD,实际波特率是10000,一般波特率偏差在4%左右。所以也可以用STC90C516晶振12M波特率9600,乘法时误差率6.99%,不乘法时误差率8.51%,数据肯定会错。
这是单片机的内部结构,但是一般来说分频是为了让程序更稳定不容易跑偏而降低频率。CPU和外设的工作频率不一定相同。比如CPU用1M时钟源,外设GPIO用12M时钟源。具体分频取决于处理器的架构,不能一概而论。呵呵,先做一些数字电路的实验,恶补一下关于时间序列的知识。晶体振荡器的规格是有限的。不分频怎么满足各种单片机的需求?
因此,有必要对现有的晶振进行合理的分频。51单片机采用12M晶体振荡器,如果是单指令周期语句,正好是1us,其他语句都像是1us的整数倍,方便计算指令时间。对于AT公司的AT89系列51单片机,技术上有缺点,分频后频率降低,程序执行更稳定,不容易跑偏,AT的新款单片机和一些公司的新款单片机都不一定要用12M晶振,11.05925M或者18M,也就是一般来说35M以内的无源晶振(两脚)就可以了。