用户工程底层配置
备注
使用底层初始化和配置相关API需要在链接器中正确关联静态库 lowlevel,并在用户程序(.c)中
包含头文件 lowlevel.h。
本章节介绍用户工程代码需要根据实际运行场景进行配置的底层外设的设置方法(API), 一般推荐将
对应代码置于 ./src/app.c 下属 app_init() 函数中。以下为典型的 app_init() 函数范例:
__attribute__((aligned(4), optimize("Os"))) void app_init(void)
{
/* 可选:设置系统时钟和NOR控制器时钟 */
/* 配置和使能OSC_CORE时钟@100MHz */
clock_osc_core_set(OSC_Core_Frequency_100MHz);
clock_osc_core_enable();
/* 使用OSC_CORE时钟1分频作为系统时钟源,即 System Clock = 100MHz *
clock_sysclk_set(Sysclk_Sel_Osc_Core, Clock_Source_Div_1);
/* 使用系统时钟2分频作为NOR控制器时钟,即 Norc Clock = 50MHz */
clock_norclk_set(Clock_Source_Div_2);
/* 必要:设置IOVCC电压 */
sys_set_iovcc(__SYS_IOVCC_3v2);
/* 可选:ADC初始化 */
adc_sys_init(__ADC_VMIC_3v0, __ADC_Samplerate_16khz, __ADC_Gain_44db, Disable);
}
系统时钟和NOR控制器时钟
重要
扩展阅读:时钟源
用户根据需要调用
clock_sysclk_set()对系统时钟(System Clock)频率进行设置,从而确定CPU/SRAM/DMA的工作速度。根据用户对系统时钟频率的需求,用户可能需要首先配置和开启上游高频时钟源。用户根据需要调用
clock_norclk_set()对NOR Flash控制器速度进行设置,其来自系统时钟的直接分频。NOR速度不超过50MHz即可满足大多数场景需求。若用户不调用
clock_sysclk_set(),系统时钟由SDK默认配置为OSC_AUDIO时钟,即49.152MHz。若用户不调用
clock_norclk_set(),Nor Flash速度由SDK默认配置为系统时钟2分频。
API链接:
IOVCC电压
重要
扩展阅读:电源管理单元 (PMU)
用户需要根据实际方案的供电电压,调用
sys_set_iovcc()对IOVCC进行设置,推荐配置如下:
关闭IOVCC的方法:调用 pmu_iovcc_disable()。
ADC配置
工程中若需要使用adc,必须调用 adc_sys_init() 对adc初始化。如使用gpadc或使用ADC采集mic音频。
API说明
-
enum __sys_iovcc_t
iovcc电压范围
__SYS_IOVCC_2v0: vmic电压2.0V
__SYS_IOVCC_2v2: vmic电压2.2V
__SYS_IOVCC_2v4: vmic电压2.4V
__SYS_IOVCC_2v6: vmic电压2.6V
__SYS_IOVCC_2v8: vmic电压2.8V
__SYS_IOVCC_3v0: vmic电压3.0V
__SYS_IOVCC_3v2: vmic电压3.2V
__SYS_IOVCC_3v4: vmic电压3.4V
-
enum __adc_vimc_t
vmic电压范围
__ADC_VMIC_2v0: vmic电压2.0V
__ADC_VMIC_2v2: vmic电压2.2V
__ADC_VMIC_2v4: vmic电压2.4V
__ADC_VMIC_2v6: vmic电压2.6V
__ADC_VMIC_2v8: vmic电压2.8V
__ADC_VMIC_3v0: vmic电压3.0V
__ADC_VMIC_3v2: vmic电压3.2V
__ADC_VMIC_3v4: vmic电压3.4V
-
enum __adc_samplerate_t
adc采样率
__ADC_Samplerate_8khz: adc采样率8khz
__ADC_Samplerate_16khz: adc采样率16khz
__ADC_Samplerate_24khz: adc采样率24khz
__ADC_Samplerate_32khz: adc采样率32khz
__ADC_Samplerate_48khz: adc采样率48khz
-
enum __adc_gain_t
adc主通道增益
__ADC_Gain_0db: adc增益为0
__ADC_Gain_17db: adc增益为17db
__ADC_Gain_20db: adc增益为20db
__ADC_Gain_24db: adc增益为24db
__ADC_Gain_28db: adc增益为28db
__ADC_Gain_32db: adc增益为32db
__ADC_Gain_36db: adc增益为36db
__ADC_Gain_40db: adc增益为40db
__ADC_Gain_44db: adc增益为44db
-
void adc_sys_init(__adc_vimc_t vmic, __adc_samplerate_t samplerate_khz, __adc_gain_t gain, soc_enable_t gpadc_en)
adc初始化
- 参数
vmic – 指定vmic电压,__adc_vimc_t中选择。
samplerate_khz – 指定主通道采样率,在__adc_samplerate_t中选择。
gain – mic增益,__adc_gain_t中选择。
gpadc_en – 次通道GPADC使能。Disable或Enable。
- Note
不使用mic采集音频,只使用gpadc,对mic采样率和增益无要求
-
void adc_sys_set_samplerate(__adc_samplerate_t samplerate_khz)
修改adc通道采样率
- 参数
samplerate_khz – 修改采样率,在__adc_samplerate_t中选择。
-
void adc_sys_set_gain(__adc_gain_t gain)
adc主通道增益选择
- 参数
gain – 修改增益,在__adc_gain_t中选择。
-
int32_t sys_set_iovcc(__sys_iovcc_t iovcc)
调整iovcc电压
- 参数
iovcc – iovcc电压挡位,选参:__sys_iovcc_t
- 返回
0
-
void sys_set_vmic(__adc_vimc_t vmic)
调整iovcc电压
- 参数
vmic – 调整vmic电压,__adc_vimc_t中选择。
- 返回
0
-
void sys_get_vcc()
获取vcc电压
- 返回
vcc上电压,单位毫伏(mV)
- Note
调用改函数前必须先调用adc_sys_init(),确保adc初始化,否则函数会卡死。
-
void adc_diff_mic_pin_init(void)
初始化差分MIC的相关引脚(GPIO24~26),并对外部电容进行充电。
- 返回
无。
-
void adc_diff_mic_pin_deinit(void)
去初始化差分MIC的相关引脚(GPIO24~26)。
- 返回
无。
-
void adc_single_end_mic_pin_init(void)
初始化单端MIC的相关引脚(GPIO24~25),并对外部电容进行充电。
- 返回
无。
-
void adc_single_end_mic_pin_deinit(void)
去初始化单端MIC的相关引脚。
- 返回
无。