API GUIDE / CPM / LL

G32S10 CPM LL 接口

LL 层接口:CPM HAL/LL 访问两个硬件寄存器块,基地址由 base.h 提供:

1. 资源模型与公开类型

1.1 基地址与寄存器实例

CPM HAL/LL 访问两个硬件寄存器块,基地址由 base.h 提供:

#define CPM_IOBASE    0x10000000
#define AON_IOBASE    0x100CD000

cpm_regs.h 基于这两个基地址定义寄存器实例宏:

#define CPM    ((cpm_regs_t *)(uintptr_t)CPM_IOBASE)
#define AON    ((aon_regs_t *)(uintptr_t)AON_IOBASE)

其中 CPM 覆盖主 CPM 寄存器、PLL、CPCCR/CPCCR1 和各类 CDR;AON 覆盖 ROSC、LP/RT clock、AON gate 和 AON I2S CDR 等低功耗域寄存器。

2. LL 接口

2.1 寄存器实例

cpm_regs.h 定义两个寄存器结构体和实例宏:

typedef struct {
    __IO uint32_t cpccr;
    ...
} cpm_regs_t;

typedef struct {
    __IO uint32_t roscc;
    ...
} aon_regs_t;

#define CPM    ((cpm_regs_t *)(uintptr_t)CPM_IOBASE)
#define AON    ((aon_regs_t *)(uintptr_t)AON_IOBASE)

LL 接口直接读写 CPM->xxx 和 AON->xxx 成员,位域更新使用 im_field_read_32() / im_field_write_32()。

2.2 ll_cpm.h

ll_cpm.h 覆盖 CPM 主寄存器和通用硬件控制字段,主要分组如下:

分组典型接口说明
CPCCR source/divider/updatell_cpm_get_sclk_a_source()、ll_cpm_set_cpu_source()、ll_cpm_set_cpu_clock_update()、ll_cpm_get_cclk_divider()主时钟 source、divider 和 CE 更新位。
CPPCR bypass/statusll_cpm_is_apll_bypass_set()、ll_cpm_clear_mpll_bypass()、ll_cpm_get_pllst()PLL bypass、DAC power-down 和稳定时间字段。
PLL controlll_cpm_pll_get_feedback_divider()、ll_cpm_pll_set_output_divider1()、ll_cpm_pll_is_on()、ll_cpm_pll_set_enable()对 APLL/MPLL 控制寄存器的通用 M/N/OD/status 访问。
CPCCR1ll_cpm_get_v0_source()、ll_cpm_set_hm_pm_source()、ll_cpm_get_pmclk_divider()V0/HM/PM clock source、divider 和 update 位。
USB/OSC/interruptll_cpm_get_usbpcr()、ll_cpm_set_osc_drive_strength()、ll_cpm_read_and_clear_intr()CPM 内部 USB、OSC 和中断相关寄存器。
Priority/arbiterll_cpm_set_mprio0_ch0_priority()、ll_cpm_set_h0_arb_regulator()总线优先级和仲裁调节字段。
CPCSR statusll_cpm_is_cdiv_busy()、ll_cpm_is_src_mux_stable()分频 busy 和 mux stable 状态。
MAC/PHYll_cpm_get_macphyc()、ll_cpm_set_mac_soft_reset()、ll_cpm_get_mac_speed()MAC PHY、PTP 和 reset 状态控制。

2.3 ll_cdr.h

ll_cdr.h 覆盖 CPM CDR 寄存器和 I2S 分频寄存器。

通用 CDR helper:

接口说明
ll_cpm_cdr_get_value() / ll_cpm_cdr_set_value()整寄存器读写。
ll_cpm_cdr_get_divider() / ll_cpm_cdr_set_divider()读写通用 divider 字段。
ll_cpm_cdr_is_stop_set() / ll_cpm_cdr_set_stop() / ll_cpm_cdr_clear_stop()读写 STOP 位。
ll_cpm_cdr_is_busy()查询 BUSY 位。
ll_cpm_cdr_set_ce() / ll_cpm_cdr_clear_ce()触发并清除 CDR 更新位。
ll_cpm_cdr_get_source() / ll_cpm_cdr_set_source()读写通用 source 字段。

专用 CDR helper:

寄存器/模块典型接口说明
UARTCDRll_cpm_get_uart_source()、ll_cpm_enable_uart_exclk()UART source 和外部时钟输入控制。
SFCCDRll_cpm_get_sfc_device_clock()SFC device clock 字段。
LPCDRll_cpm_select_lcd_pixel_clock_inverted()LCD pixel clock polarity。
MSC0/MSC1 CDRll_cpm_msc0cdr_set_divider()、ll_cpm_msc1cdr_set_source()、ll_cpm_enable_msc_exclk()MSC divider、phase、tuning、source 和 EXCLK。
CAN0/CAN1 CDRll_cpm_enable_can0_exclk()、ll_cpm_disable_can1_exclk()CAN EXCLK 控制。
SADC0/SADC1 CDRll_cpm_enable_sadc0_exclk()、ll_cpm_disable_sadc1_exclk()SADC EXCLK 控制。
I2S TX/RXll_cpm_i2stcdr_set_m()、ll_cpm_i2srcdr_set_n()、ll_cpm_i2stcdr_enable()I2S M/N 分频、source 和 enable。
I2S TX/RX D pathll_cpm_i2stcdr1_set_d()、ll_cpm_i2srcdr1_enable_manual_d()I2S D 分频相关字段。

2.4 ll_aon.h

ll_aon.h 覆盖 AON 寄存器中与 CPM clock/gate 和低功耗相关的字段。

分组典型接口说明
ROSCCll_aon_get_lpclk_source() / ll_aon_set_lpclk_source()、ll_aon_get_rtclk_source() / ll_aon_set_rtclk_source()、ll_aon_get_rosc2_fsel() / ll_aon_set_rosc2_fsel()、ll_aon_get_rosc2_trim() / ll_aon_set_rosc2_trim()LPCLK/RTCLK source 和 ROSC2 频率档位、trim 值。
TRIMCll_aon_clear_trim_count()、ll_aon_enable_trim_count()、ll_aon_disable_trim_count()ROSC2 trim 计数清除和启停;TRIM_COUNT_CLR、TRIM_COUNT_EN 为 write-only 控制位。
TRIMSll_aon_is_trim_finished()、ll_aon_get_trim_count_number()读数完成状态和 TRIM_COUNT_NUM 计数值。
MEMCLll_aon_set_bus_mode()、ll_aon_enter_v0_retention()AON bus、retention 和 RAM power-down 控制。
SLPCL/RSTCLll_aon_request_light_sleep()、ll_aon_rstcl_assert_reset()AON sleep/reset 控制寄存器。
CLKGRll_aon_lpclkgr_clear_stop_mask()、ll_aon_hpclkgr0_set_stop_mask()、ll_aon_hpclkgr1_is_stop_mask_set()LP/HP gate stop bit 控制。
AON I2S CDRll_aon_i2stcdr_set_source()、ll_aon_i2srcdr_enable()AON 侧 I2S source、M/N 和 enable;source 位在 I2STCDR 中,TX/RX 共用。
SWC/FLAG/CHIPIDll_aon_get_swc2()、ll_aon_get_flag()、ll_aon_get_chipid()AON 软件寄存器、flag 和 chip id。

2.5 ll_pm.h

ll_pm.h 覆盖 CPM 低功耗和电源管理寄存器。

分组典型接口说明
LPCRll_cpm_set_sleep_instruction_mode()、ll_cpm_set_cpu_power_on_delay_count()、ll_cpm_enable_tnpu_power_down()SLEEP 指令模式、CPU power-on delay 和 TNPU power-down。
PSWCST0/1ll_cpm_set_power_switch_chain0_start_time()、ll_cpm_set_power_switch_chain2_start_time()power switch chain 时序。
OPCRll_cpm_set_ahb_async_bridge_mode()、ll_cpm_enable_idle_clock_stop()、ll_cpm_disable_exclk_in_sleep()oscillator、idle、interrupt mask 和低功耗请求控制。
PSWCST statusll_cpm_get_pswcst0()power switch 状态读取。