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 状态读取。 |