1. 石英手表是怎么计时的?与ESP32等MCU什么关系?
1.1 石英手表怎么计算时间的?
我们的时钟在生活中非常常见,有戴在手上的石英表,有以前上发条的闹钟,还包括那种很古老的、带有钟摆的大笨钟。 现在的石英手表内部有一个零件叫“石英晶振”,它是通过电来驱动的。只要给它通电,它就会产生规律性的跳动。这个石英晶振的频率是 32.768 kHz,它通过这种规律的振动和跳动来产生信号。 所以,我们也可以把时钟信号叫做“心跳”。心跳的作用就是用来同步信号,确保多个设备之间的信号能够保持同步。 下面我给大家看一下这个爆炸图。
石英手表爆炸图3
右上头可以看到这个电池驱动。
石英振子由电池来供电,通过控制电路,石英晶振每震动一次,就会将信号传导到步进电机。这个电机非常微小,叫做微型步进电机。 电机驱动齿轮转动。这里有一个飞轮(我不确定石英手表里是否有飞轮),飞轮转动之后带动齿轮。上面有秒针、分针还有时针:
- 小齿轮连接的是秒针。
- 小齿轮转动时,带动比较大的分针齿轮。
- 分针齿轮同样会带动更大的时针齿轮。 就这样一级一级地,我们的石英手表就转动起来了。
另外,为什么是 32.768 kHz 呢?
- 计算原理: 因为 32.768 kHz 除以 2 的 15 次方刚好等于 1,也就是 1 Hz。
- 时间基准: 1 Hz 代表一秒钟跳动(转动)一次。
- 电路特性: 因为数字电路的开关只有 0 和 1 两种状态,所以需要进行除以 2 的幂运算。 通过这种方式,除以 2 的 15 次方就刚好得到了 1 秒的精准基准。
石英表爆炸图1
石英手表爆炸图2
1.2 石英手表有石英晶振,ESP32-S3 有什么?(40MHz晶振)
esp32_vs_watch_v2
石英手表晶振同步1
既然石英手表用石英晶振来驱动时间流转和同步信号,那么可以用石英晶振来给 ESP32-S3 使用吗?
可以,但还有更好的选择:直接外接一个 40MHz 的外部晶振。它的速度高且稳定,并且如果速度太高,可以利用内部硬件定时器外设的结构,让 40MHz 的频率降下来。
因此,这就会引出以下组件:
- 预分频器
- 计数器
- 比较寄存器
- 自动重装定时器
再加上中断控制器,就构成了一个 ESP32-S3 的硬件定时器外设。
2. ESP32 -S3的晶振如何驱动内部的外设以及其他模块工作的?
2.1 什么是时钟树?
quartz_watch_clock_tree_v2
esp32_vs_watch_comparison
watch_esp32_comparison_v4
esp32_timer_explosion_v4
quartz_watch_explosion_v5
watch_esp32_comparison_v6
2.3 ESP32 S3的时钟树什么样?
esp32s3_clock_tree_v2

ESP32S3系统时钟结构图 ⇡
esp32s3_clock_tree_complete
esp32_timer_complete_flow
timer_single_pulse_mode
timer_comparator_detail
auto_reload_register_usage
clock_importance_5_time_as_m
clock_importance_1_unified_t
clock_importance_2_attack
clock_importance_complete_ca
