环境介绍 ========================================= 本章节主要介绍软硬件开发环境。 ^^^^^^^^^^^^^^^^^^^^ 硬件环境介绍 ################################ AD16N FLASH方案硬件开发环境分为开发顶板和开发底板。 AD16N硬件开发环境 ********************************* AD16N芯片框图如下图所示: .. image:: chip_attach.png :alt: "AD16芯片框图" :align: center | AD16N使用的硬件环境开发板由底板和顶板两部分组成。 | 底板包含的模块如下图所示: .. image:: dev-board.png :alt: "AD16开发板“ :align: center 其中模块: ================= ================================================================================================== 模块 模块详情 ================= ================================================================================================== 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数码管; ================= ================================================================================================== 顶板包含的模块如下图所示: .. image:: dev-core-board.png :alt: "DAD16N核心板“ :align: center .. centered:: 图1 DAD16N核心板 按下顶板的“复位按键”后,系统会进行复位。 在线调试时,芯片OTP需要烧写usb bootloader(usbboot.bin)后才能使用USB升级。 可以通过强制升级工具升级。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 快速上手 ################################ 编译下载介绍 *************************************** 本节将介绍如何打开工程,编译下载后进入音乐模式: 使用CodeBlocks打开工程(两种办法) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1.直接在目录下找到CBP文件,用codeblocks打开; .. image:: 2-1-codeblock-prj-1.png :alt: "打开CodeBlock工程方式一“ :align: center .. centered:: 图2.1 打开CodeBlock工程方式一 2.打开codeblocks后,File->Open->找到选中CBP文件->打开; .. image:: 2-1-codeblock-prj-2.png :alt: "打开CodeBlock工程方式二“ :align: center .. centered:: 图2.2 打开CodeBlock工程方式二 打开工程后找到main.c文件 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 打开工程后会显示在左侧的Management,点击打开Sources -> apps -> app -> bsp -> start -> main.c,里面的c_main函数即是我们的工程的主函数。 .. image:: 2-3-main-file.png :alt: "打开main.c文件“ :align: center .. centered:: 图2.3 打开main.c文件 USB强制下载工具连接开发板 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 第一步:将USB强制下载工具的7号拨片拨至ON,其余拨片拨至OFF; | 第二步:短按下载器的按键,让闪烁的绿灯灭灯,即进入下载模式; .. image:: 2-3-usb-download-tool.png :alt: "USB强制下载工具使用“ :align: center .. centered:: 图2.4 USB强制下载工具使用 编译下载程序并运行 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 点击codeblocks的编译(Build),如果有改动build_option或者库文件,需要点击全编译(Rebuild); .. image:: 2-5-usb-codeblocks-build.png :alt: "CodeBlocks编译“ :align: center .. centered:: 图 2.5 CodeBlocks编译 下方logs & others(快捷键F2)会显示下载结果,有下载完毕即下载成功; .. image:: 2-6-usb-codeblocks-build-succ.png :alt: "CodeBlocks编译下载成功“ :align: center .. centered:: 图 2.6 CodeBlocks编译下载成功 使用Type-c供电,接上SDK默认打印口PA6,观察打印信息,开机打印信息如下,即小机运行成功; .. image:: 2-7-ide-print.png :alt: "小机运行打印“ :align: center .. centered:: 图 2.7 小机运行打印 编译下载报错说明 *************************************** 如下图所示,AD16N SDK需使用杰理PI32V2 r1 large lto Complier编译器进行编译: .. image:: 2-8-codeblocks-options.png :alt: "AD16N CodeBlocks编译器选择“ :align: center .. centered:: 图2.8 AD16N CodeBlocks编译器选择 首次编译时若出现如下图所示的报错信息,需保证将CodeBlocks软件安装在C盘目录下,并将JL工具链和编译器更新至最新版本即可; .. image:: 2-9-codeblocks-err.png :alt: "AD16N CodeBlocks编译器报错信息“ :align: center .. centered:: 图2.9 AD16N CodeBlocks编译器报错信息 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SDK工程配置 ################################ 目前AD16N发布的SDK共有两个工程,分别是FLASH工程和OTP工程: * flash应用工程: 该工程有小音箱以及玩具功能,能实现音箱解码、USB从机、Linein、midi、录音以及玩具内置flash解码功能;同时拥有AD、红外、矩阵按键、低功耗、EQ、VM等功能。 .. image:: 3-1-ad16n-flash-prj-dir.png :alt: "AD16N flash工程目录“ :align: center .. centered:: 图3.1 AD16N flash工程目录 * mbox_otp应用工程: 该工程有小音箱功能,能实现音箱解码、USB从机和Linein功能;同时拥有AD、红外按键、低功耗、EQ、设备记忆等功能。 .. image:: 3-2-ad16n-otp-prj-dir.png :alt: "AD16N AD16N otp工程目录“ :align: center .. centered:: 图3.2 AD16N otp工程目录 应用配置文件《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)即可! .. image:: 3-3-app_config.c.png :alt: "app_config.c配置“ :align: center .. centered:: 图3.3 app_config.c配置 应用配置文件《app_config.h》介绍 *************************************************************************************** 应用配置文件《app_config.h》能配置与系统相关的配置: OTP / FLASH烧写配置(仅OTP方案SDK拥有该配置) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1、USE_FLASH_DEBUG:FLASH调试模式 :: ① 0:使用OTP烧写配置; ② 1:使用FLASH调试模式; 注:芯片OTP空间只能烧写一次,此宏置1用于USB调试;需要生成OTP烧写文件时,需要将此宏置0! .. _时钟配置: 时钟配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ =================== ============================================= 配置定义 含义 =================== ============================================= 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限制修改一定要阅读本章的“:ref:`AD16N超频说明`”!!!! .. image:: 3-6-clock_flash_spi_limit.png :alt: "系统flash spi时钟配置“ :align: center .. centered:: 系统flash spi时钟配置 Cache配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ========================= ============================================= 配置定义 含义 ========================= ============================================= CPU_USE_CACHE_WAY_NUMBER 配置cache_way,范围2~4 ========================= ============================================= 串口配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ =================== ============================================= 配置定义 含义 =================== ============================================= TCFG_UART_TX_PORT 串口打印输出引脚 TCFG_UART_BAUDRATE 串口打印波特率 =================== ============================================= 按键配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ========================= ============================================================================== 配置定义 含义 ========================= ============================================================================== 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口选择; ========================= ============================================================================== 低功耗配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ =================== ========================================================= 配置定义 含义 =================== ========================================================= POWER_WAKEUP_IO 低功耗唤醒I/O选择,具体请查看power_api.c中的配置 TCFG_VDDIOM_LEVEL VDDIO电压选择 =================== ========================================================= AUDIO配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1、SR_DEFAULT:默认DAC采样率,支持以下采样率 :: ① 8000; ② 11025; ③ 12000; ④ 16000; ⑤ 22050; ⑥ 24000; ⑦ 32000; ⑧ 44100; ⑨ 48000; ⑩ 64000; 11 88200; 12 96000; 充电模块配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ========================= ========================================================= 配置定义 含义 ========================= ========================================================= 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文件! SD模块配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ========================= ========================================================= 配置定义 含义 ========================= ========================================================= TFG_SD_EN SD卡模块使能 TFG_SDPG_ENABLE SD卡模块使用SD_PG(PC3)供电使能 ========================= ========================================================= EQ模块配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ========================= ========================================================= 配置定义 含义 ========================= ========================================================= AUDIO_EQ_ENABLE EQ模块使能总开关 TCFG_CFG_TOOL_ENABLE EQ配置工具使能,需要在线调试EQ时打开,默认关闭 ========================= ========================================================= 设备升级配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ========================= ========================================================= 配置定义 含义 ========================= ========================================================= TFG_DEV_UPGRADE_SUPPORT 设备升级使能 TFG_UPGRADE_FILE_NAME 设备升级ufw文件默认路径"/update.ufw" ========================= ========================================================= 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控制功能 .. _外挂FLASH配置(FLASH Configuration): 外挂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 ================================= ========================================================= 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低功耗保持 ================================= ========================================================= .. image:: 3-4-app_config.h.png :alt: "app_config.h配置“ :align: center .. centered:: 图3.4 app_config.h配置 APP配置文件《app_modules.h》介绍 ********************************************************************************* 应用配置文件《app_modules.h》中的宏定义能配置支持的编解码格式、以及APP模式相关的配置;每一个配置项都可独立开关,关闭没有用到的宏定义,可以 * 减少生成的代码量,节省程序空间和运行空间 * 。 .. image:: 3-5-app_moduels.h.png :alt: "app_moduels.h配置“ :align: center .. centered:: 图3.5 app_moduels.h配置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _AD16N超频说明: 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 支持 支持 ===================== ================== ================== ============================ .. centered:: 表 系统时钟支持情况 ======================= ================== ============================ 系统Flash波特率 内置系统Flash A0芯片外挂系统Flash ======================= ================== ============================ "<= 50Mhz" 支持 支持 ">=50mhz" & "<=96Mhz" 支持 不能直接支持 ">96MHZ" 不支持 不支持 ======================= ================== ============================ .. centered:: 表 系统Flash波特率支持情况 注:当使用A0芯片时,系统Flash需要外挂,由于Flash的型号以及性能,加上PCB布线等情况的影响,不能预测系统Flash波特率运行在超过50Mhz、甚至是到96MHZ的具体情况;在此种情况下,客户如果需要系统Flash波特率运行在超过50Mhz,需要自行评估。 本章“SDK工程配置” -> “应用配置文件《app_config.h》介绍” -> “:ref:`时钟配置`”有时钟配置的章节介绍。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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 ===================== ===================================== ====================================