API GUIDE / AON / LL

AON LL 接口

1. LL 接口

1.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()。

1.2 ll_cpm.h

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

分组 典型接口 说明
CPCCR source/divider/update ll_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/status ll_cpm_is_apll_bypass_set()、ll_cpm_clear_mpll_bypass()、ll_cpm_get_pllst() PLL bypass、DAC power-down 和稳定时间字段。
PLL control ll_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 访问。
CPCCR1 ll_cpm_get_v0_source()、ll_cpm_set_hm_pm_source()、ll_cpm_get_pmclk_divider() V0/HM/PM clock source、divider 和 update 位。
USB/OSC/interrupt ll_cpm_get_usbpcr()、ll_cpm_set_osc_drive_strength()、ll_cpm_read_and_clear_intr() CPM 内部 USB、OSC 和中断相关寄存器。
Priority/arbiter ll_cpm_set_mprio0_ch0_priority()、ll_cpm_set_h0_arb_regulator() 总线优先级和仲裁调节字段。
CPCSR status ll_cpm_is_cdiv_busy()、ll_cpm_is_src_mux_stable() 分频 busy 和 mux stable 状态。
MAC/PHY ll_cpm_get_macphyc()、ll_cpm_set_mac_soft_reset()、ll_cpm_get_mac_speed() MAC PHY、PTP 和 reset 状态控制。

1.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:

寄存器/模块 典型接口 说明
UARTCDR ll_cpm_get_uart_source()、ll_cpm_enable_uart_exclk() UART source 和外部时钟输入控制。
SFCCDR ll_cpm_get_sfc_device_clock() SFC device clock 字段。
LPCDR ll_cpm_select_lcd_pixel_clock_inverted() LCD pixel clock polarity。
MSC0/MSC1 CDR ll_cpm_msc0cdr_set_divider()、ll_cpm_msc1cdr_set_source()、ll_cpm_enable_msc_exclk() MSC divider、phase、tuning、source 和 EXCLK。
CAN0/CAN1 CDR ll_cpm_enable_can0_exclk()、ll_cpm_disable_can1_exclk() CAN EXCLK 控制。
SADC0/SADC1 CDR ll_cpm_enable_sadc0_exclk()、ll_cpm_disable_sadc1_exclk() SADC EXCLK 控制。
I2S TX/RX ll_cpm_i2stcdr_set_m()、ll_cpm_i2srcdr_set_n()、ll_cpm_i2stcdr_enable() I2S M/N 分频、source 和 enable。
I2S TX/RX D path ll_cpm_i2stcdr1_set_d()、ll_cpm_i2srcdr1_enable_manual_d() I2S D 分频相关字段。

1.4 ll_aon.h

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

分组 典型接口 说明
ROSCC ll_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 值。
TRIMC ll_aon_clear_trim_count()、ll_aon_enable_trim_count()、ll_aon_disable_trim_count() ROSC2 trim 计数清除和启停;TRIM_COUNT_CLR、TRIM_COUNT_EN 为 write-only 控制位。
TRIMS ll_aon_is_trim_finished()、ll_aon_get_trim_count_number() 读数完成状态和 TRIM_COUNT_NUM 计数值。
MEMCL ll_aon_set_bus_mode()、ll_aon_enter_v0_retention() AON bus、retention 和 RAM power-down 控制。
SLPCL/RSTCL ll_aon_request_light_sleep()、ll_aon_rstcl_assert_reset() AON sleep/reset 控制寄存器。
CLKGR ll_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 CDR ll_aon_i2stcdr_set_source()、ll_aon_i2srcdr_enable() AON 侧 I2S source、M/N 和 enable;source 位在 I2STCDR 中,TX/RX 共用。
SWC/FLAG/CHIPID ll_aon_get_swc2()、ll_aon_get_flag()、ll_aon_get_chipid() AON 软件寄存器、flag 和 chip id。

1.5 ll_pm.h

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

分组 典型接口 说明
LPCR ll_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/1 ll_cpm_set_power_switch_chain0_start_time()、ll_cpm_set_power_switch_chain2_start_time() power switch chain 时序。
OPCR ll_cpm_set_ahb_async_bridge_mode()、ll_cpm_enable_idle_clock_stop()、ll_cpm_disable_exclk_in_sleep() oscillator、idle、interrupt mask 和低功耗请求控制。
PSWCST status ll_cpm_get_pswcst0() power switch 状态读取。