1. 环境介绍

本章节主要介绍软硬件开发环境。


1.1. 硬件环境介绍

AD16N FLASH方案硬件开发环境分为开发顶板和开发底板。

1.1.1. AD16N硬件开发环境

AD16N芯片框图如下图所示:

"AD16芯片框图"
AD16N使用的硬件环境开发板由底板和顶板两部分组成。
底板包含的模块如下图所示:
"AD16开发板“

其中模块:

模块

模块详情

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数码管;

顶板包含的模块如下图所示:

"DAD16N核心板“

图1 DAD16N核心板

按下顶板的“复位按键”后,系统会进行复位。

在线调试时,芯片OTP需要烧写usb bootloader(usbboot.bin)后才能使用USB升级。

可以通过强制升级工具升级。


1.2. 快速上手

1.2.1. 编译下载介绍

本节将介绍如何打开工程,编译下载后进入音乐模式:

1.2.1.1. 使用CodeBlocks打开工程(两种办法)

1.直接在目录下找到CBP文件,用codeblocks打开;

"打开CodeBlock工程方式一“

图2.1 打开CodeBlock工程方式一

2.打开codeblocks后,File->Open->找到选中CBP文件->打开;

"打开CodeBlock工程方式二“

图2.2 打开CodeBlock工程方式二

1.2.1.2. 打开工程后找到main.c文件

打开工程后会显示在左侧的Management,点击打开Sources -> apps -> app -> bsp -> start -> main.c,里面的c_main函数即是我们的工程的主函数。

"打开main.c文件“

图2.3 打开main.c文件

1.2.1.3. USB强制下载工具连接开发板

第一步:将USB强制下载工具的7号拨片拨至ON,其余拨片拨至OFF;
第二步:短按下载器的按键,让闪烁的绿灯灭灯,即进入下载模式;
"USB强制下载工具使用“

图2.4 USB强制下载工具使用

1.2.1.4. 编译下载程序并运行

点击codeblocks的编译(Build),如果有改动build_option或者库文件,需要点击全编译(Rebuild);

"CodeBlocks编译“

图 2.5 CodeBlocks编译

下方logs & others(快捷键F2)会显示下载结果,有下载完毕即下载成功;

"CodeBlocks编译下载成功“

图 2.6 CodeBlocks编译下载成功

使用Type-c供电,接上SDK默认打印口PA6,观察打印信息,开机打印信息如下,即小机运行成功;

"小机运行打印“

图 2.7 小机运行打印

1.2.2. 编译下载报错说明

如下图所示,AD16N SDK需使用杰理PI32V2 r1 large lto Complier编译器进行编译:

"AD16N CodeBlocks编译器选择“

图2.8 AD16N CodeBlocks编译器选择

首次编译时若出现如下图所示的报错信息,需保证将CodeBlocks软件安装在C盘目录下,并将JL工具链和编译器更新至最新版本即可;

"AD16N CodeBlocks编译器报错信息“

图2.9 AD16N CodeBlocks编译器报错信息


1.3. SDK工程配置

目前AD16N发布的SDK共有两个工程,分别是FLASH工程和OTP工程:

  • flash应用工程:

    该工程有小音箱以及玩具功能,能实现音箱解码、USB从机、Linein、midi、录音以及玩具内置flash解码功能;同时拥有AD、红外、矩阵按键、低功耗、EQ、VM等功能。

    "AD16N flash工程目录“

    图3.1 AD16N flash工程目录

  • mbox_otp应用工程:

    该工程有小音箱功能,能实现音箱解码、USB从机和Linein功能;同时拥有AD、红外按键、低功耗、EQ、设备记忆等功能。

"AD16N AD16N otp工程目录“

图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)即可!
"app_config.c配置“

图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时钟配置“

系统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低功耗保持

"app_config.h配置“

图3.4 app_config.h配置

1.3.3. APP配置文件《app_modules.h》介绍

应用配置文件《app_modules.h》中的宏定义能配置支持的编解码格式、以及APP模式相关的配置;每一个配置项都可独立开关,关闭没有用到的宏定义,可以 * 减少生成的代码量,节省程序空间和运行空间 * 。

"app_moduels.h配置“

图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