RCC
简介
RCC 负责管理各个时钟源和时钟分频,为各个外设提供时钟使能。
功能列表
支持开关其它模块的时钟,比如: I2C、UART、SPI、DMA 等
支持复位其它模块时钟
支持 CPU/WLAN/Peripheral 等的频率设置
RCC HW 支持的功能
各功能介绍
开关时钟
相关时序 API:
调用
wm_drv_clock_init
初始化时钟, 如果设备已经初始化,则通过 wm_dt_get_device_by_name 函数来获取设备指针调用
wm_drv_clock_enable
打开对应模块的时钟调用
wm_drv_clock_disable
关闭对应模块时钟
支持开关的时钟模块如下
I2C, UART, SPI, DMA, RF, TIMER, GPIO, SD_ADC, PWM, LCD, I2S, RSA,
GPSEC, SDIOM, QSRAM, BT, TOUCH
时钟复位
相关时序 API:
调用
wm_drv_clock_init
初始化时钟, 如果设备已经初始化,则通过 wm_dt_get_device_by_name 函数来获取设备指针调用
wm_drv_clock_reset
复位模块时钟
结果:
复位成功之后,对应模块回到初始化状态,比如对SPI复位,则SPI模块将会恢复到初始化状态
可复位的模块:
BBP, MAC, SEC, SDIO_AHB, DMA, MEM_MNG, APB, I2C, UART,SPIM, SPIS
RF, GPIO, TIMER, SAR_ADC, PWM, LCD, I2S, RSA, QPSEC, SDIOM, BT, FLASH, TOUCH
警告
在系统运行起来之后,某些模块不能够再复位,如果强制复位可能会造成系统无法正常运行
时钟频率设置
设置对应模块的时钟
相关时序 API:
调用
wm_drv_clock_init
初始化时钟, 如果设备已经初始化,则通过 wm_dt_get_device_by_name 函数来获取设备指针调用
wm_drv_rcc_config_clock
设置指定时钟模块频率调用
wm_drv_rcc_get_config_clockk
查询指定模块当前时钟频率
可配置时钟的模块如下:
CPU, WLAN, SD_ADC, QFLASH, GPSEC, RSA, PERIPHERAL
警告
随意设置时钟可能会导致系统无法正常运行,建议只对 CPU 时钟进行配置,并且配置的时钟能够被 480 整除
应用实例
wm_drv_clock_init();
wm_drv_clock_disable(WM_RCC_CLOCK_ALL);
wm_drv_clock_enable(WM_RCC_UART0_GATE_EN | WM_RCC_UART1_GATE_EN |
WM_RCC_RF_CFG_GATE_EN | WM_RCC_GPIO_GATE_EN |
WM_RCC_SD_ADC_GATE_EN | WM_RCC_TOUCH_GATE_EN); //enable UART, RF, GPIO, SD_ADC, TOUCH时钟
wm_drv_rcc_config_clock(WM_RCC_TYPE_CPU, 240); //配置 CPU 时钟为240Mhz