1. 环境介绍
本章节主要介绍软硬件开发环境。
1.1. 硬件环境介绍
AD16N FLASH方案硬件开发环境分为开发顶板和开发底板。
1.1.1. AD16N硬件开发环境
AD16N芯片框图如下图所示:
AD16N使用的硬件环境开发板由底板和顶板两部分组成。底板包含的模块如下图所示:![]()
其中模块:
模块
模块详情
TF卡模块
可驱动一线模式的TF卡,支持IO供电以及内部SD_PG供电;
USB模块
可连接U盘或者PC从机,或通过VPWR给开发板供电或充电;U盘由VBAT经过升压后供电,具体请参考开发板原理图;
TYPE C模块
可连接PC从机,或通过VPWR给开发板供电或充电;
VBAT电源模块
可正极接VBAT+,负极接VBAT-,并短接VBAT到MCU_VBAT;注:VBAT供电电压不可超过4.3V
AD按键模块
可支持6个AD按键,外接10k上拉电阻;
红外接收模块
可用于接收红外信号,需将IRVDD与IOVDD短接;
双声道功放模块
可支持双声道功放输出以及功放mute;
MIC模块
可连接麦克风,OTP方案暂不支持MIC输入;
耳机模块
可连接3.5mm耳机;
Linein模块
可支持双声道Linein以及检测;
数码管模块
可连接7脚MP3数码管;
顶板包含的模块如下图所示:
![]()
图1 DAD16N核心板
按下顶板的“复位按键”后,系统会进行复位。
在线调试时,芯片OTP需要烧写usb bootloader(usbboot.bin)后才能使用USB升级。
可以通过强制升级工具升级。
1.2. 快速上手
1.2.1. 编译下载介绍
本节将介绍如何打开工程,编译下载后进入音乐模式:
1.2.1.1. 使用CodeBlocks打开工程(两种办法)
1.直接在目录下找到CBP文件,用codeblocks打开;
![]()
图2.1 打开CodeBlock工程方式一
2.打开codeblocks后,File->Open->找到选中CBP文件->打开;
![]()
图2.2 打开CodeBlock工程方式二
1.2.1.2. 打开工程后找到main.c文件
打开工程后会显示在左侧的Management,点击打开Sources -> apps -> app -> bsp -> start -> main.c,里面的c_main函数即是我们的工程的主函数。
![]()
图2.3 打开main.c文件
1.2.1.3. USB强制下载工具连接开发板
第一步:将USB强制下载工具的7号拨片拨至ON,其余拨片拨至OFF;第二步:短按下载器的按键,让闪烁的绿灯灭灯,即进入下载模式;![]()
图2.4 USB强制下载工具使用
1.2.1.4. 编译下载程序并运行
点击codeblocks的编译(Build),如果有改动build_option或者库文件,需要点击全编译(Rebuild);
![]()
图 2.5 CodeBlocks编译
下方logs & others(快捷键F2)会显示下载结果,有下载完毕即下载成功;
![]()
图 2.6 CodeBlocks编译下载成功
使用Type-c供电,接上SDK默认打印口PA6,观察打印信息,开机打印信息如下,即小机运行成功;
![]()
图 2.7 小机运行打印
1.2.2. 编译下载报错说明
如下图所示,AD16N SDK需使用杰理PI32V2 r1 large lto Complier编译器进行编译:
![]()
图2.8 AD16N CodeBlocks编译器选择
首次编译时若出现如下图所示的报错信息,需保证将CodeBlocks软件安装在C盘目录下,并将JL工具链和编译器更新至最新版本即可;
![]()
图2.9 AD16N CodeBlocks编译器报错信息
1.3. SDK工程配置
目前AD16N发布的SDK共有两个工程,分别是FLASH工程和OTP工程:
flash应用工程:
该工程有小音箱以及玩具功能,能实现音箱解码、USB从机、Linein、midi、录音以及玩具内置flash解码功能;同时拥有AD、红外、矩阵按键、低功耗、EQ、VM等功能。
![]()
图3.1 AD16N flash工程目录
mbox_otp应用工程:
该工程有小音箱功能,能实现音箱解码、USB从机和Linein功能;同时拥有AD、红外按键、低功耗、EQ、设备记忆等功能。
![]()
图3.2 AD16N otp工程目录
1.3.1. 应用配置文件《app_config.c》介绍
应用配置文件《app_config.c》能配置与系统相关的配置:
1、中断优先级;
2、config_asser:内核异常打印。
① 0:关闭内核异常打印; ② 1:开启内核异常打印; 注:生产的工程要关闭内核异常打印,内核异常打印会关闭看门狗并且while(1)停留!3、config_exception_enable:异常模块使能。
① 0:不使能; ② 1:使能;4、config_exception_unit_lite_lite_enable:显示内核异常触发单元的寄存器。
① 0:不显示; ② 1:显示;5、config_exception_unit_lite_enable:显示内核异常触发单元的id信息。
① 0:不显示; ② 1:显示;6、config_exception_dev_lite_enable:显示内核异常触发单元的dev信息。
① 0:不显示; ② 1:显示;7、config_audio_adc_enable:audio adc模块使能。
① 0:不使用audio adc模块; ② 1:使用audio adc模块;8、config_audio_eq_enable:audio eq模块使能。
① 0:不使用audio eq模块; ② 1:使用audio eq模块;9、config_usbslave_ctl_mic:usb从机模式控制麦克风。
① 0:不使能; ② 1:使能;10、config_vcm_cap_addon:vcom外挂电容配置,需根据封装以及用料进行配置。
① 0:vcom不挂电容; ② 1:vcom外挂电容,可改善音质;11、audio_dac_vcmo0_enable / audio_dac_vcmo1_enable:vcm0 / vcm1使能配置。
① 0:vcm0 / vcm1不输出电压; ② 1:vcm0 / vcm1输出audio中间电位,dac或adc可省去隔直电容;12、config_dac_points_combine:双声道解码数据合成输出配置(DAC差分输出时配置)。
/* 样点合成公式:L*Lgain/Totalgain + R*Rgain/Totalgain */ ① config_dac_points_Lgain / config_dac_points_Rgain:左/右声道增益; ② config_dac_points_Totalgain:增益计算因子;13、audio_adc_mic_pga_6db:audio_adc前级增益配置。
① 0:0dB; ② 1:6dB;14、audio_adc_mic_pga_g:audio_adc后级增益配置。
① 详情请查看《audio_adc.h》文件中的AUDIO_MICPGA_G枚举成员;15、audio_adc_aux_pga_g:数字linein增益配置。
① 详情请查看《audio_adc.h》文件中的AUDIO_MICPGA_G枚举成员;16、libs_debug:打印总开关。
① FALSE:关闭打印; ② TRUE:开启打印;17、log_tag_const_x_yyyy:分支打印开关,仅仅在打印总开关打开的时候有效。
① x=i:控制打印函数(log_info / log_info_hexdump)的打印开关; ② x=d:控制打印函数(log_debug / log_debug_hexdump)的打印开关; ③ x=e:控制打印函数(log_error / log_error_hexdump)的打印开关; ④ x=c:控制打印函数(log_char)的打印开关; ⑤ yyyy:控制相应的打印块; 注:若要打开相应打印,将CONFIG_DEBUG_LIBS(0)改为CONFIG_DEBUG_LIBS(1)即可!![]()
图3.3 app_config.c配置
1.3.2. 应用配置文件《app_config.h》介绍
应用配置文件《app_config.h》能配置与系统相关的配置:
1.3.2.1. OTP / FLASH烧写配置(仅OTP方案SDK拥有该配置)
1、USE_FLASH_DEBUG:FLASH调试模式
① 0:使用OTP烧写配置; ② 1:使用FLASH调试模式; 注:芯片OTP空间只能烧写一次,此宏置1用于USB调试;需要生成OTP烧写文件时,需要将此宏置0!
1.3.2.2. 时钟配置
配置定义
含义
TCFG_PLL_SEL
系统时钟源
TCFG_PLL_DIV
系统时钟源一级分频
TCFG_HSB_DIV
系统时钟源二级分频
注1:选择系统时钟时,优先调整二级分频,无法满足所需要的时钟下再调整一级分频!
V1.3.0版本及往后的SDK支持最高超频到192MHz系统时钟,存放代码的系统flash spi波特率默认不超过50MHz,最高可超频到96MHz;
用户可通过修改clock.c文件的SPI_MAX_CLK变量提高spi时钟,但需要确保电源环境稳定且A0芯片自选Flash支持该速度!
如下图,21行的静态变量“static u32 SPI_MAX_CLK = 50 * MHz_UNIT; ”是系统flash波特率的限制,修改其值可以改变系统flash spi波特率的上限!
注: 系统时钟超过160Mhz使用,系统flash波特率的50Mhz限制修改一定要阅读本章的“AD16N超频说明”!!!!
![]()
系统flash spi时钟配置
1.3.2.3. Cache配置
配置定义
含义
CPU_USE_CACHE_WAY_NUMBER
配置cache_way,范围2~4
1.3.2.4. 串口配置
配置定义
含义
TCFG_UART_TX_PORT
串口打印输出引脚
TCFG_UART_BAUDRATE
串口打印波特率
1.3.2.5. 按键配置
配置定义
含义
KEY_DOUBLE_CLICK_EN
使能按键多击
KEY_IO_EN
IO按键使能
KEY_AD_EN
AD按键使能
KEY_IR_EN
红外按键使能
KEY_MATRIX_EN
矩阵按键使能
KEY_TOUCH_EN
触摸按键使能
D_HAS_KEY_VOICE
按键音使能
AD_KEY_CH_SEL
AD按键采集通道选择,具体查看saradc.h文件
AD_KEY_IO_SEL
AD按键采集I/O选择,需要与采集通道匹配
IR_KEY_IO
红外按键采集I/O口选择;
IR_KEY_TIMER
红外按键采集定时器选择;
IR_KEY_IRQ_IDX
红外按键采集定时器中断号选择,需要与选择的定时器匹配;注:按键部分功能需要在key.h中配置!
TOUCH_KEY_IO_SEL
触摸按键I/O口选择;
1.3.2.6. 低功耗配置
配置定义
含义
POWER_WAKEUP_IO
低功耗唤醒I/O选择,具体请查看power_api.c中的配置
TCFG_VDDIOM_LEVEL
VDDIO电压选择
1.3.2.7. AUDIO配置
1、SR_DEFAULT:默认DAC采样率,支持以下采样率
① 8000; ② 11025; ③ 12000; ④ 16000; ⑤ 22050; ⑥ 24000; ⑦ 32000; ⑧ 44100; ⑨ 48000; ⑩ 64000; 11 88200; 12 96000;
1.3.2.8. 充电模块配置
配置定义
含义
TCFG_CHARGE_ENABLE
充电模块使能
TCFG_CHARGE_FULL_V
充满电压选择
TCFG_CHARGE_FULL_MA
充满电流选择
TCFG_CHARGE_MA
最大充电电流选择
TCFG_CHARGE_TRICKLE_MA
涓流电流选择
1、TCFG_CHARGE_FULL_V:充满电压选择
① CHARGE_FULL_V_4041:最小充满电压;; ② ...... ③ CHARGE_FULL_V_4534:最大充满电压;2、TCFG_CHARGE_FULL_MA:充满电流选择
① CHARGE_FULL_mA_DIV5:充电电流达到恒流充电电流的1/5时,判断已充满电;; ② ...... ③ CHARGE_FULL_mA_DIVD20:充电电流达到恒流充电电流的1/20时,判断已充满电;3、TCFG_CHARGE_MA:最大充电电流选择
① CHARGE_mA_20:最小恒流充电电流20mA;; ② ...... ③ CHARGE_mA_180:最大恒流充电电流180mA;4、TCFG_CHARGE_TRICKLE_MA:涓流电流选择
注:充电功能部分配置请查看charge.h文件!
1.3.2.9. SD模块配置
配置定义
含义
TFG_SD_EN
SD卡模块使能
TFG_SDPG_ENABLE
SD卡模块使用SD_PG(PC3)供电使能
1.3.2.10. EQ模块配置
配置定义
含义
AUDIO_EQ_ENABLE
EQ模块使能总开关
TCFG_CFG_TOOL_ENABLE
EQ配置工具使能,需要在线调试EQ时打开,默认关闭
1.3.2.11. 设备升级配置
配置定义
含义
TFG_DEV_UPGRADE_SUPPORT
设备升级使能
TFG_UPGRADE_FILE_NAME
设备升级ufw文件默认路径”/update.ufw”
1.3.2.12. USB模块配置
配置定义
含义
TCFG_PC_ENABLE
PC模块使能
TCFG_USB_EXFLASH_UDISK_ENABLE
外掛FLASH模拟U盘使能
TCFG_UDISK_ENABLE
U盘模块使能
USB_DEVICE_CLASS_CONFIG
USB从机功能选择
1、USB_DEVICE_CLASS_CONFIG:USB从机功能选择
① MASSSTORAGE_CLASS:大容量存储(读卡器)功能; ② SPEAKER_CLASS:AUDIO功能; ③ HID_CLASS:HID控制功能
1.3.2.13. 外挂FLASH配置(FLASH Configuration)
配置定义
含义
TFG_EXT_FLASH_EN
外挂flash使能
TFG_SPI_HW_NUM
外挂flash使用的硬件spi组
TFG_SPI_UNIDIR_MODE_EN
外挂flash单线模式使能,flash do与di短接并连接到do的i/o引脚
TFG_SPI_WORK_MODE
spi模式选择
TFG_SPI_READ_DATA_WIDTH
spi位宽选择
TFG_SPI_CS_PORT_SEL
spi cs引脚选择
TFG_SPI_CS_PORT
spi cs引脚选择,用于配置ini文件下载数据到外挂flash
TFG_SPI_CLK_PORT_SEL
spi clk引脚选择
TFG_SPI_CLK_PORT
spi clk引脚选择,用于配置ini文件下载数据到外挂flash
TFG_SPI_DO_PORT_SEL
spi do引脚选择
TFG_SPI_DO_PORT
spi do引脚选择,用于配置ini文件下载数据到外挂flash
TFG_SPI_DI_PORT_SEL
spi di引脚选择
TFG_SPI_DI_PORT
spi di引脚选择,用于配置ini文件下载数据到外挂flash
1.3.2.14. UI显示配置
配置定义
含义
LED_5X7
LED数码管使能,会占用部分I/O,请查看app.h中的引脚分布
LCD_4X8_EN
LCD断码屏使能,会占用部分I/O,请查看驱动文件中的引脚分配
KEY_MATRIX_LCD_REUSE_EN
矩阵按键与LCD复用宏
POWERDOWN_KEEP_LCD
LCD断码屏powerdown低功耗保持
![]()
图3.4 app_config.h配置
1.3.3. APP配置文件《app_modules.h》介绍
应用配置文件《app_modules.h》中的宏定义能配置支持的编解码格式、以及APP模式相关的配置;每一个配置项都可独立开关,关闭没有用到的宏定义,可以 * 减少生成的代码量,节省程序空间和运行空间 * 。
![]()
图3.5 app_moduels.h配置
1.4. AD16N超频说明
在release_v1.3.0之前的SDK AD16N的系统时钟最高运行160Mhz,内部的系统Flash的波特率限制不超过50Mhz;
在release_v1.3.0的SDK系统时钟最高放宽192Mhz,内置的系统Flash的波特率限制可在一定条件下放宽到96Mhz!
系统时钟不超过 |
内核电压挡位 |
内置系统Flash |
A0芯片外挂系统Flash |
---|---|---|---|
128Mhz |
1.20v |
支持 |
支持 |
160mhz |
1.32v |
支持 |
支持 |
192Mhz |
1.38v |
支持 |
支持 |
表 系统时钟支持情况
系统Flash波特率 |
内置系统Flash |
A0芯片外挂系统Flash |
---|---|---|
“<= 50Mhz” |
支持 |
支持 |
“>=50mhz” & “<=96Mhz” |
支持 |
不能直接支持 |
“>96MHZ” |
不支持 |
不支持 |
表 系统Flash波特率支持情况
注:当使用A0芯片时,系统Flash需要外挂,由于Flash的型号以及性能,加上PCB布线等情况的影响,不能预测系统Flash波特率运行在超过50Mhz、甚至是到96MHZ的具体情况;在此种情况下,客户如果需要系统Flash波特率运行在超过50Mhz,需要自行评估。
本章“SDK工程配置” -> “应用配置文件《app_config.h》介绍” -> “时钟配置”有时钟配置的章节介绍。
1.5. AD16N启动时间
AD16的启动时间如下(测试芯片为uboot启动芯片),第一行是公版SDK默认配置
冷启动(跑到main函数) |
softoff启动时间(从触发唤醒跑到main) |
mask_io_cfg |
---|---|---|
31.24412ms |
8.89977ms |
sfc_fas_boot:1; do_flash_reset:0 |
32.41109ms |
10.98155ms |
sfc_fas_boot:1; do_flash_reset:1 |
31.34513ms |
24.72249ms |
sfc_fas_boot:0; do_flash_reset:0 |
31.15557ms |
26.71502ms |
sfc_fas_boot:0; do_flash_reset:1 |