跳转至

板级配置使用说明


1. 概述

本文为CI14LP系列芯片SDK板级适配文档,旨在介绍当开发人员使用非SDK标准板时,如何修改SDK,使其适配新的板子。


2. 使用说明

板级配置代码路径:SDK\driver\boards

2.1. 代码结构

源文件 说明
board.c / board.h 板级配置接口
CI-L0XGS01D-V10.h CI标准板L0XGS01D配置头文件(SDK默认板)
CI-14LP-TEST-V10.h CI标准板14LP-TEST配置头文件

board.h通过 user_config.h 中的宏自动关联芯片与板级头文件:

#define CI_CHIP_TYPE              3422              //芯片型号,关联 driver\ci14lp_chip_driver\ci3422.h
#define BOARD_CONFIG_FILE         "CI-L0XGS01D-V10.h"  //板级配置源文件关联到CI-L0XGS01D-V10.h

其中 CI_CHIP_TYPE 通过 INCLUDE_BOARD_HEADER(PREFEX, CI_CHIP_TYPE) 自动包含 ci3422.h 芯片头文件,BOARD_CONFIG_FILE 则包含具体的板级引脚配置头文件。

板级配置头文件内容以宏定义为主,涵盖:

配置类别 主要宏
时钟配置 USE_EXT_OSC4M_PLL_SRC(外部4M晶振)、USE_EXT_OSC32K(外部32K晶振)、PLL_SRC_FREQUENCY、SRC_32K_FREQUENCY
麦克风输入 MIC_DIFF_SINGLE(差分/单端输入选择)
CORE电压引脚 CORE_VOLTAGE_PAD(固定PA2)
低功耗退出引脚 EXIT_DEEP_LOWPOWER_PIN、触发方式
UART0/½引脚 UARTx_TX_PIN、UARTx_RX_PIN、UARTx_PIN_EN、UARTx_OPEN_DRAIN_EN、UARTx_TX_PULL、UARTx_RX_PULL
IIS引脚 EXT_IIS_PIN_A_EN/B_EN、EXT_IIS_LRCLK/SCLK/MCLK/SDI/SDO_PIN及REUSE
IIC0/1引脚 IICx_SDA_PIN、IICx_SCL_PIN、IICx_PIN_EN、IICx_SDA_PULL、IICx_SCL_PULL
SPI引脚 SPI_PIN_EN、SPI_CS_PIN、SPI_RXD_PIN、SPI_TXD_PIN、SPI_CLK_PIN
PWM0~3引脚 PWMx_PIN
TIMER capture引脚 TIMERx_CAPTURE_PIN
KEY_SCAN引脚 KEY_SCAN行列引脚

2.2. 新板添加步骤

当开发者需要使用SDK没有对应配置头文件的新板时,需要按照如下步骤进行添加;若SDK中已有配置源文件,只需要按照步骤二关联当前板子即可。

2.2.1. 步骤一:添加源文件

添加新板头文件,例如CI-xxx.h。添加方法:复制CI-L0XGS01D-V10.h到 SDK\driver\boards 中,并将其重命名为CI-xxx.h,并修改源文件中对应的接口中的内容(按2.1节表格逐项核对引脚分配),若需新增接口查看步骤三。

注意

新板头文件中的 BD_SURPPORT_CHIP_NAME 需与所支持的芯片型号一致(如3422),同时注意保留”固定不可修改”的宏(如CORE电压引脚相关配置)原值。

2.2.2. 步骤二:关联新板源文件

在 SDK\driver\boards 下添加好新板的源文件之后,需要将新板源文件与当前SDK关联起来。关联方法:打开工程代码,修改 projects\offline_asr_sample\src\user_config.h 中的宏定义,且修改板子芯片型号,使新的板级配置源文件被关联。

#define CI_CHIP_TYPE                3422         //修改板子的芯片型号
#define BOARD_CONFIG_FILE           "CI-xxx.h"   //板级配置源文件关联到CI-xxx.h

2.2.3. 步骤三:新增接口添加说明

(1) 在board.c文件中添加接口实现。board.c/board.h中已提供的板级接口如下:

接口 说明
pad_config_for_uart 引脚复用配置为UART功能
pad_config_for_iis 引脚复用配置为IIS功能
pad_config_for_power_amplifier 引脚复用配置为GPIO,用于控制功放使能
power_amplifier_on / off 开启/关闭功放使能
pad_config_for_i2c 引脚复用配置为IIC功能
pad_config_for_spi 引脚复用配置为SPI功能
pad_config_for_pwm 引脚复用配置为PWM功能
pad_config_for_timer_capture 引脚复用配置为TIMER的capture功能
pad_config_for_key_scan 引脚复用配置为KEY_SCAN按键扫描功能
pad_config_for_core_voltage 引脚用于core电压配置
main_set_core_voltage_1_1v 设置core电压为1.1V
pad_config_for_madc_dmic 引脚复用配置为madc的数字dmic功能
pad_config_for_dcodec_dmic 引脚复用配置为dcodec的数字dmic功能
pad_config_for_dcodec_dac 引脚复用配置为dcodec的pwm输出功能
audio_in_codec_registe 录音codec注册
audio_play_out_codec_registe 播音codec注册
audio_pre_rslt_out_codec_init 语音前处理结果IIS输出初始化
clear_aon_core_audio_buffer 清理AON核音频BUFFER数据
board_clk_source_set 选择晶振/RC作为时钟源

(2) 在board.h文件中添加函数声明,并按照需要在CI-xxx.h中补充对应引脚宏。

2.3. 波特率校准联动

当新板使用内部RC(USE_EXT_OSC4M_PLL_SRC = 0)时,board.h会自动强制开启波特率校准功能(UART_BAUDRATE_CALIBRATE = 1),详见 ☞《SDK波特率校准功能说明》。

#if (USE_EXT_OSC4M_PLL_SRC == 0)     //使用内部RC时,建议开启波特率自适应(需要电控增加对应支持)。
#undef UART_BAUDRATE_CALIBRATE
#define UART_BAUDRATE_CALIBRATE         1  // 是否使能波特率校准功能。开启后,连续发包间隔必须大于1ms,否则可能丢包。
#endif