跳到主要内容

hardware-rosc

环形振荡器(ROSC)API。

详细描述

环形振荡器是一种片上振荡器,不需要外部晶振。其输出由一系列串联的反相器产生,这些反相器链在一起形成反馈环路。RP2 芯片最初从环形振荡器启动,这意味着引导 ROM 的早期阶段(包括从 SPI flash 启动)都由环形振荡器提供时钟。如果您的设计使用晶振振荡器,可能会希望尽快切换到它作为参考时钟,因为晶振的频率比环形振荡器更精确。

函数

  • void rosc_disable (void): 禁用环形振荡器。
  • void rosc_set_dormant (void): 将环形振荡器置入休眠模式。
  • void rosc_restart (void): 重新启用环形振荡器,使处理器核心在睡眠/休眠模式后可以唤醒。
  • uint rosc_measure_freq_khz (void): 测量环形振荡器的频率。
  • static void rosc_write (io_rw_32 *addr, uint32_t value): 带检查地写入环形振荡器寄存器。

函数文档

rosc_disable

void rosc_disable (void)

禁用环形振荡器。

rosc_measure_freq_khz

uint rosc_measure_freq_khz (void)

测量环形振荡器的频率。

仅当 clk_ref 当前运行在精确源(例如 XOSC)上时,此测量才准确。

返回

环形振荡器的频率(kHz)。

rosc_restart

void rosc_restart (void)

重新启用环形振荡器,使处理器核心在睡眠/休眠模式后可以唤醒。

此方法必须在睡眠周期结束时调用(例如在中断服务程序中)。

rosc_set_dormant

void rosc_set_dormant (void)

将环形振荡器置入休眠模式。

ROSC 支持休眠模式,该模式停止振荡,直到被异步中断唤醒。这可以来自由外部时钟驱动的 RTC,或 GPIO 引脚的电平变化。如果在进入休眠模式前未配置任何 IRQ,ROSC 将永远不会重启。

在选择休眠模式前应停止 PLL。

rosc_write

static void rosc_write (io_rw_32 * addr, uint32_t value) [inline], [static]

带检查地写入环形振荡器寄存器。

这通常会清除错误写入标志并断言写入正确。但是,ROSC BADWRITE 不可靠(参见 RP2040-E10),因此我们不这样做。

参数

  • addr: 寄存器地址。
  • value: 要写入的值。

中文翻译版以英文版相同知识授权方式共享:CC-BY-SA 4.0。交流 Q群:498908352