1. SDK说明

2025年3月发布的 AD24N SDK 工程,SDK命名为 AD24N-release_v1.0.0 ,其含义为:

  • AD24N:代表AD24系列芯片,例如AD242、AD245等

  • v1.0.0:表示当前SDK版本号

"新版本SDK名称说明"

新版本SDK名称说明

本章节分下面三个部分进行介绍:
  1. SDK工程选择”;

  2. SDK相关配置文件”;

  3. SDK工程裁切”;


1.1. SDK工程选择

SDK一般会有以下工程:
  1. voice_toy工程:该工程有完整发声玩具功能,能实现解码、MIDI功能;同时将VM、按键、休眠应用在工程中;使用4 cache way,所以 CPU指令运行效率最高

  2. voice_enhanced工程:该工程包含voice_toy工程所有功能,使用2 cache way,多腾出了8K RAM 给开发使用,支持了完整的FAT文件系统驱动;

  1. voice_enhanced玩具应用篇,链接->”玩具应用篇(voice_enhanced)

目前芯片支持的工程如下:

芯片/工程

voice_enhanced

voice_toy

AD24N

如何进入对应工程:
"voice_toy工程目录“

下面介绍voice_toy工程占用的一些硬件资源

  1. 芯片的串口使用情况:

    芯片

    AD24N

    UART0

    √(作为打印)

    UART1

    √(无使用)

    UART2

    ×

  2. 芯片的timer定时器使用情况:

    芯片

    AD24N

    TIMER0

    √(无使用)

    TIMER1

    √(无使用)

    TIMER2

    √(红外按键)

    TIMER3

    ×

  3. 芯片的软中断使用情况:

    芯片

    AD24N

    IRQ_SOFT0

    √(解码)

    IRQ_SOFT1

    √(编码)

    IRQ_SOFT2

    √(红外按键)

    IRQ_SOFT3

    √(录音写数据)

    IRQ_SOFT4

    √(未使用)

    IRQ_SOFT5

    √(未使用)

    IRQ_SOFT6

    √(未使用)

    IRQ_SOFT7

    √(未使用)

  4. 芯片的IO口(PA口类)使用情况:

    芯片

    AD24N

    PA0

    PA1

    √(ADkey、唤醒口)

    PA2

    √(SD卡CMD脚、矩阵按键)

    PA3

    √(SD卡DAT脚、矩阵按键)

    PA4

    √(打印)

    PA5

    √(外挂flash片选口、矩阵按键)

    PA6

    PA7

    PA8

    √(MCLR)

    PA9

    √(触摸按键、红外按键)

    PA10

    √(触摸按键、矩阵按键、外挂flash_di)

    PA11

    √(触摸按键、矩阵按键、外挂flash_clk)

    PA12

    √(外挂flash_d0)

    PA13

    PA14

    PA15

    √(SD卡CLK脚)

  5. 芯片的IO口(PB口类)使用情况:

    芯片

    AD24N

    PB0

    √(DAC输出口)

    PB1

    PB2

    PB3


1.2. SDK相关配置文件

SDK相关配置 与 五个文件相关:
  1. 《app_config.c》:“应用配置文件《app_config.c》介绍”;

  2. 《app_config.h》:“应用配置文件《app_config.h》介绍”;

  3. 《cpu_config.c》:“芯片相关配置配置文件《cpu_config.c》介绍”;

  4. 《board_cfg.c》:“模块IO相关配置配置文件《board_cfg.c》介绍”;

  5. 《app_modules.c》:“应用APP配置文件《app_modules.h》介绍”;

  6. 其他配置介绍:“其他配置介绍”;

下面介绍这五个文件和一些额外其他的配置。


1.2.1. 应用配置文件《app_config.c》介绍

《app_config.c》主要配置 与系统相关的配置:

文件路径为: app/src/对应工程/

注:voice_toy工程与voice_enhanced工程共用app/src/voice_func/app_config.c

1、ISR Configuration 中断优先级配置

中断优先级;
*注:控制各个模块的中断优先级!*

2、vm_sfc Configuration vm_sfc优先级配置

config_spi_code_user_cache:vm_sfc放code区
    1:放置在code区
    0:放置在

3、midi Configuration midi配置

const int MAINTRACK_USE_CHN  = 0;    //0:用track号来区分  1:用channel号来区分。
const int MAX_DEC_PLAYER_CNT = 8;    //midi乐谱解码最大同时发声的key数,范围[1,31]
const int MAX_CTR_PLAYER_CNT = 8;    //midi琴最大同时发声的key数,范围[1,31]
const int NOTE_OFF_TRIGGER   = 0;    //midi琴note_off回调 1:time传0时,不会回调 0:time传0时,回调
const int MIDI_MAX_MARK_CNT  = 0;    //midi解码最大支持的mark数

4、malloc Configuration malloc配置

MM_ASSERT:MALLOC内部断言打印使能
    FALSE:关闭malloc内部断言打印;
    TRUE:打开malloc内部断言打印,默认打开;

5、update Configuration 升级配置

//升级使用的区域,0:VM区, 1:eeprom区
const u8 dev_update_use_eeprom = 0;
//设备升级时,是否保持住io的状态
const u8 dev_update_keep_io_status = 0;
//设备升级时,用到的电源引脚
const u8 dev_update_power_io = -1;
//ufw升级文件的vid要求: 0:vid要相同  1:vid要不一样 2:升级文件vid > 当前设备vid 3:升级文件vid < 当前设备vid
const u8 ufw_vid_need_to_be_different = 0;

6、src Configuration src配置

//软件重采样quality影响运算速度,可选范围3~8,默认选8
const u8 resample_quality  = 8;

7、sdmmc Configuration sdmmc配置

//sd空闲后挂起的最大cnt值,单位时间是sd检测函数的时间,即sd空闲后每次检测函数cnt就加1,为0时,则每次读写完都会发挂起命令
const u8 is_sdx_active_cnt_max = 20;

8、UART Configuration uart配置

const u8 lib_config_uart_flow_enable = 0;
//浮点打印,仅仅作用在AD17N,AD18N
const int printf_support_float = 0;

9、debug Configuration 异常配置

const u8 config_asser = 1;
该变量控制异常时行为,也控制断言ASSERT行为
控制异常行为:0:异常复位;1:异常打印卡死
控制断言ASSERT行为:0:断言时直接操作用户的断言处理函数;1:断言时增加断言位置打印再操作用户的断言处理函数;
断言部分详细介绍可参考 `其他配置介绍` 部分的断言ASSERT部分介绍

10、log Configuration 打印开关配置

各模块的打印总开关

1.2.2. 应用配置文件《app_config.h》介绍

《app_config.h》能配置与系统相关的配置:

文件路径为: app/src/对应工程/

注:voice_toy工程与voice_enhanced工程共用app/src/voice_func/app_config.h

  1. voice_toy工程:该工程有完整发声玩具功能,能实现解码、MIDI功能;同时将VM、按键、休眠应用在工程中;使用4 cache way,所以**CPU指令运行效率最高**。

  2. voice_enhanced工程

1、KEY VOICE Configuration 按键音配置

KEY_VOICE_EN:控制按键音开关配置

2、KEY Configuration 按键模块开关配置

KEY_IO_EN:IO按键开关配置
KEY_AD_EN:AD按键开关配置
KEY_MATRIX_EN:矩阵按键开关配置
KEY_IR_EN:红外按键开关配置
KEY_TOUCH_EN:触摸按键开关配置

3、Vm Mode Configuration VM模块配置

USE_NEW_VM:选择旧版VM(该版本已不维护)
USE_OLD_VM:选择新版VM
SYS_MEMORY_SELECT:默认选择新版VM

4、EXFLASH Configuration 外挂模块配置

TCFG_FLASH_SPI_TYPE_SELECT:外挂flash选择硬件spi还是软件spi(若选择硬件spi则默认使用SPI1)
SPI_SD_IO_REUSE:spi引脚是否与sd卡io复用
TFG_SPI_UNIDIR_MODE_EN:外挂flash是否使用1线模式;

5、USB Configuration USB模块配置

TCFG_PC_ENABLE:是否开启PC模块
TCFG_USB_MSD_CDROM_ENABLE:是否开启USB_MSD_CDROM
TCFG_USB_EXFLASH_UDISK_ENABLE:是否开启外挂flash用作u盘模块
TCFG_UDISK_ENABLE:是否开启u盘模块
TCFG_HID_HOST_ENABLE:是否开启主机HID功能(该功能暂不支持)
TCFG_ADB_ENABLE:该功能暂不支持
TCFG_AOA_ENABLE:该功能暂不支持
TCFG_PUSH_CODE_ENABLE:该功能暂不支持

TCFG_USB_PORT_CHARGE:USB是否默认用作充电模式
TCFG_USB_DM_MULTIPLEX_WITH_SD_DAT0:USBDM是否与SD卡IO复用

USB_DEVICE_CLASS_CONFIG:USB从机模式支持的class

6、PMU Configuration PMU模块配置

TCFG_LOWPOWER_POWER_SEL:电源模式设置,只能固定使用LD0
TCFG_LOWPOWER_BTOSC_DISABLE:低功耗模式下BTOSC是否保持(无效参数)
TCFG_LOWPOWER_LOWPOWER_SEL:控制芯片进入powerdown还是poweroff
TCFG_LOWPOWER_PATTERN:选择软关机的方式(无效参数)
TCFG_LOWPOWER_VDDIOM_LEVEL:强VDDIO等级配置
TCFG_LOWPOWER_VDDIOW_LEVEL:弱VDDIO等级配置
TCFG_LOWPOWER_OSC_TYPE:固定低功耗lptimer使用LRC
TCFG_LOWPOWER_SOFF:控制softoff功能开关(无效参数)

1.2.3. 芯片相关配置配置文件《cpu_config.c》介绍

《cpu_config.c》主要配置 与芯片相关的配置:

文件路径为: app/src/对应工程/对应芯片

注:voice_toy工程与voice_enhanced工程共用app/src/voice_func/cpu/对应芯片/cpu_config.c

1、audio电源配置

/* ***********************
* 在不同供电场景下config_adda_voltage_mode配置不同的值:
* 0:高压供电vbat,工作电压在2.7v ~ 5.4v之间
* 1:低压供电到iovdd&vbat,工作电压在1.8v ~ 3.6v之间
* 注:低压供电时,iovdd需要和vabt短接;
* 注:此项配置只会影响到audio dac & audio adc的性能;不会对APA性能产生影响
* ************************/
const unsigned char config_adda_low_voltage_mode = 0;

2、audio模块配置

AD24N AUDIO & APA 工作依赖常量

Audio DAC

Audio ADC

Audio APA

au_const_apa_en

au_const_dac_digital_en

au_const_dac_analog_en

au_const_adda_common_en

AD24N AUDIO & APA 工作依赖常量

const u8 au_const_apa_en = 1;
const u8 au_const_dac_digital_en = 1;
const u8 au_const_dac_analog_en = 1;
const u8 au_const_adda_common_en = 1;

3、audio_adc模块配置

const char MIC_PGA_G        = 14;    //0 ~ 14,无效参数

const bool audio_adc_diff_mic_mode = 0;// 差分amic使能(N端固定PA15) 0:单端amic  1:差分amic
const bool audio_adc_diff_aux_mode = 0;// 差分aux使能(N端固定PA15) 0:单端aux  1:差分aux

const AUADC_PERFORM_MODE    auadc_perf_mode = AUADC_STANDARD_PERF; //audio_adc性能
const AUDIO_MIC_RS_MODE     auadc_mic_rs_pwr_mode = MIC_RS_INSIDE; //偏置电阻选择
const AUDIO_MICPGA_G        audio_adc_mic_pga_g = AUMIC_27db;//后级增益
const AUDIO_MICBIAS_RS      audio_adc_mic_bias_rs = AUMIC_1k5;//micbias内部偏置电阻选择
const AUDIO_MICLDO_VS       audio_adc_mic_ldo_vs = AUMIC_2v0;//micldo偏置电压选择

const AUDIO_MIC_INPUT_PORT  audio_adc_mic_input_port = MIC_INPUT_ANA1_PB1;//mic_in输入口
const AUDIO_MIC_INPUT_PORT  audio_adc_aux_input_port = MIC_INPUT_ANA2_PA14;//linein_in输入口

1.2.4. 模块IO相关配置配置文件《board_cfg.c》介绍

《board_cfg.c》 主要配置 对应芯片使用的各模块使用到的IO。

文件路径为: app/src/对应工程/对应芯片

1、UART Configuration 串口模块

UART_OUTPUT_CH_PORT: 串口IO,支持任意IO

2、KEY Configuration 按键模块

AD_KEY_CH_SEL:AD按键选择
IR_KEY_IO_SEL:IO按键选择
TCFG_ADKEY_IR_IO_REUSE:AD按键是否与红外IO复用
X_ADC_CH_SEL:矩阵按键x轴IO选择(要求是AD口)
Y_PORT_SEL:矩阵按键y轴IO选择(普通IO即可)
TOUCH_KEY_SEL:触摸按键

3、POWER WAKEUP IO Configuration 唤醒IO配置

POWER_WAKEUP_IO:唤醒IO

4、EXFLASH PORT Configuration 外挂flash配置

//port select for hardware spi
//support any io
EXFLASH_CS_PORT_SEL:硬件外挂flash片选脚
EXFLASH_CLK_PORT_SEL:硬件外挂flash时钟脚
EXFLASH_D0_PORT_SEL :硬件外挂flash D0脚
EXFLASH_D1_PORT_SEL:硬件外挂flash D1脚

//select for soft spi
//support any io
A_CLK_BIT         软件spi时钟脚
A_CLK_PORT(x)
A_D0_BIT          软件spi D0脚
A_D0_PORT(x)
A_D1_BIT          软件spi D1脚
A_D1_PORT(x)

5、SMMC PORT Configuration SD卡IO配置

SDMMC_IO_USE_CROSSBAR:默认为1即可。

//support any io
SDMMC_CLK_IO:SD卡时钟脚(CLK)
SDMMC_CMD_IO:SD卡命令脚(CMD)
SDMMC_DAT_IO:SD卡数据脚(DATA)

1.2.5. 其他配置介绍

1、断言ASSERT处理(对应芯片的cpu.h)
断言分为 驱动断言(assert_d) 和 系统断言(ASSERT)。
驱动断言(assert_d)为 相关驱动使用的断言行为,通常为while1,建议用户不要使用和修改该断言。
系统断言(ASSERT)为 系统外部使用的断言行为,用户可以在cpu_assert_debug函数里自定义断言的行为。
"断言行为“

1.2.6. 应用APP配置文件《app_modules.h》介绍

各个工程下有对应cpu的应用配置文件《app_modules.h》,其中的宏定义能配置支持的编解码格式、以及APP模式相关的配置;

每一个配置项都可独立开关,关闭没有用到的宏定义,可以 * 减少生成的代码量,节省程序空间和运行空间 * 。

该文件中出现的宏,即该工程拥有的功能;对于默认为0的宏,使能为1即可正常使用;

1.2.6.1. 解码模块

宏定义

含义

DECODER_UMP3_EN

UMP3解码使能;

DECODER_MP3_ST_EN

标准MP3解码使能(mbox独有);

DECODER_WAV_EN

WAV解码使能(mbox独有);

DECODER_F1A_EN

F1A解码使能;

DECODER_MIDI_EN

MIDI解码使能;

DECODER_MIDI_KEYBOARD_EN

MIDI琴解码使能;

DECODER_A_EN

A格式解码使能;

HAS_MIO_EN

MIO功能使能;

1.2.6.2. 音频算法模块

宏定义

含义

AUDIO_SPEED_EN

变速变调算法使能

SPEAKER_EN

扩音使能;

VO_PITCH_EN

变音算法使能;

VO_CHANGE_EN

动物变声算法使能;

PCM_EQ_EN

EQ算法使能;

ECHO_EN

ECHO算法模块使能;

ANS_EN

音频降噪算法模块使能;

1.2.6.3. 驱动模块功能

宏定义

含义

EXT_FLASH_EN

外挂FLASH使能,使用外挂FLASH需要打开该宏;

TFG_SD_EN

SD卡模块使能,使用SD卡需要打开该宏;

1.2.6.4. 芯片应用功能

宏定义

含义

RECORD_MODE_EN

录音模式使能;

LINEIN_MODE_EN

LINEIN(AUX)模式使能;

SIMPLE_DEC_EN

多路解码模式使能;

LOUDSPEAKER_EN

扩音模式使能;

FM_EN

FM模块使能;

"app_moduels.h配置“

app_modules.h配置

1.2.6.5. 芯片Codeblocks宏定义功能

宏定义

含义

AUDIO_ADC_EN

AUDIO ADC使能;

ENCODER_EN

编码使能,有该配置即支持编码功能;

EEPROM_EN

EEPROM使能,使用EEPROM需要打开该宏,并在SDK工程中添加相应的c文件以及h文件;

"CodeBlocks 宏定义配置“

1.3. SDK工程裁切

SDK自带了app_modules.h模块管理机制;

裁切工程只需将app_modules.h中需要关闭的宏定义配置为0即可;

"裁剪某个算法库“

1.3.1. 如何将压缩格式从工程中移除

目前发布的AD24N SDK里面支持UMP3、A两种格式的压缩,在开发过程中如果不需要支持某些格式,那么可以将相关的代码删除。这样可以极大的节省生成的代码大小;

下面以移除UMP3压缩格式为例介绍,主要分三步:
① 移除相关的库文件;
② 移除相关的源文件;
③ 删除源码使用到的地方定义;

1.3.1.1. 裁切压缩第一步

打开<Project build option>窗口,删除mp3编码库的库包含:

"裁剪某个压缩库“

注:部分宏配置需要在《app_modules.h》中关闭!详情请见上文《裁切解码第一步》

1.3.1.2. 裁切压缩第二步

移除工程目录app\src\common\decoder\list\下的压缩源文件:

"裁剪某个压缩库“

1.3.1.3. 裁切压缩第三步

在文件app\post_build\sh54\app_ld.c中删除相关格式用到的资源定义,切记此文件在不可放在工程中编译,如果添加进了工程,一定要将其编译和链接包含取消掉。

"裁剪某个压缩库“

1.3.1.4. 裁切压缩第四步

修改一些编译错误,这里主要指在在程序中对编码接口的调用:

"裁剪某个压缩库“