使用TCL语言理解振荡器与时钟频率补偿

需积分: 49 9 下载量 141 浏览量 更新于2024-08-06 收藏 4.31MB PDF 举报
"这篇文档是关于微控制器ATtiny1617/3217的中文数据手册,主要讨论了振荡器和时钟的概念,包括内部和外部时钟源的使用,以及如何进行频率误差补偿。" 在微控制器设计中,振荡器和时钟是至关重要的组成部分,它们为系统提供了基础的时序基准。ATtiny1617/3217是tinyAVR 1系列的成员,具备高速AVR CPU,运行频率可达20MHz,并且内置硬件乘法器,拥有16/32KB闪存、2KBSRAM和256字节EEPROM。 文档特别提到了37.10章节中的振荡器和时钟部分。该芯片内置的OSC20M振荡器可以通过配置复位时的振荡器配置熔丝(FUSE.OSCCFG)选择不同的工作频率。为了保证频率精度,需要根据中心频率(OSC20M)和温度漂移补偿(TEMPCAL20M)进行校准。对于不同电压和频率,例如3V和5V下的16MHz和20MHz,有对应的频率误差值(SIGROW.OSC16ERR3V, SIGROW.OSC16ERR5V, SIGROW.OSC20ERR3V, SIGROW.OSC20ERR5V)存储在签名行中。这些误差值以压缩的Q1.10定点8位格式存储,用于波特率补偿。 在实际应用中,比如USART的波特率设置,可以通过读取并应用这些频率误差值来校正BAUD寄存器的值,确保即便在有负补偿的情况下,BAUD值也保持在合法范围内。示例代码展示了如何计算和设置补偿后的BAUD寄存器值。 此外,32kHz的超低功耗振荡器(OSCULP32K)被优化用于低功耗操作,提供1kHz信号,用于驱动RTC、WDT和BOD等低功耗外设。外部时钟源也可被接入,如EXTCLK引脚的外部时钟或32.768kHz的XOSC32K,后者支持32kHz晶振或直接外部时钟输入。 ATtiny1617/3217的时钟系统设计灵活,允许用户根据需求选择不同的振荡器和时钟源,并能通过精细的频率误差补偿实现更精确的时序控制。这使得该微控制器适合各种对时序要求严格的嵌入式应用。