AD16N 系列芯片与 SDK 能力总览
本页面向开发者系统介绍杰理科技 AD16N 系列通用 MCU SDK(仓库 fw-AD16N_GP-MCU_SDK)的芯片家族、SDK 分层架构、核心音频/控制能力、工程结构、编译烧录流程与配置方式,是一份从芯片选型到 SDK 使用的端到端总览。
Purpose and Scope
本页是 AD16N SDK 的能力总览页,回答三类问题:
- 芯片层面:AD16N 系列有哪些型号(AD160A/AD161A/AD162A/B/C/D/AD165A/C/D/AD166A/AD168A),各自封装、存储、外设与典型应用是什么;
- SDK 层面:仓库包含哪些分层(应用层、中间件、平台层、工具链),音频解码/编码/MIDI/设备/升级等能力如何组织;
- 开发流程层面:如何搭建环境、编译固件、烧录与 OTA 升级,以及核心配置文件
app_config.h的作用。
以下话题属于兄弟页面的范畴,本页只做指引、不展开:
- 具体应用(小音箱/音频播放)的逐模块实现细节 → 参见「应用工程 mbox_flash」相关页面;
- MIDI 合成与播放的协议与开发方法 → 参见 MIDI 相关页面(外部文档:杰理 MIDI 应用开发文档);
- 各芯片规格书、原理图、硬件设计指南 → 仓库
doc/目录中的 PDF 资料。
概述
fw-AD16N_GP-MCU_SDK 是杰理科技为 AD16N 系列 32 位语音 MCU 提供的通用固件开发包,采用「开源应用源码 + 预编译库(.a)」的交付模式:仓库内可见全部应用层与 BSP 源码,而解码器、编码器、音效等算法以库文件形式提供,需配合对应命名规则的库进行链接。
SDK 面向三大类产品场景,见下表(来自 README.md):
| 应用类型 | 典型产品 |
|---|---|
| 语音玩具 | 故事机、学习机、MIDI 乐器 |
| 小音箱 | MP3 音乐播放器、录音笔、扩音器 |
| 通用 MCU | 智能控制、传感器采集、USB 音频设备 |
设计上,该系列芯片以低成本音频处理 + 丰富外设为核心卖点:内置音频编解码(16bit DAC 双声道 + 16bit ADC 单声道,支持 8K–96K 采样率)、多段 EQ/DRC、硬件重采样、变速变调(需系统时钟 100MHz 以上)、关机功耗低至 1.7µA+,并内置锂电池充电管理(最大 120mA)与 32KB OTP(可直接运行代码、无需外挂 Flash)。
架构
SDK 采用典型的分层架构:应用层(App)→ 中间件/能力层(解码器、编码器、音频、设备、消息、升级)→ 平台层(BSP、CPU、配置)→ 硬件层(芯片与板级外设)。预编译库位于 apps/include_lib/ 下,与源码通过头文件解耦。
flowchart TD
subgraph sg_App["应用层 apps/app"]
App["mbox_flash 应用<br/>小音箱 / 音频播放"]
BSP["bsp 板级支持包"]
PostBuild["post_build<br/>编译后处理"]
end
subgraph sg_Middleware["中间件 / 能力层 apps/include_lib"]
Decoder["decoder 解码器 API"]
Encoder["encoder 编码器 API"]
Audio["audio 音频 API"]
Device["device 设备驱动"]
Msg["msg 消息机制"]
Update["update 固件升级"]
Effects["sound_effect_list / pcm_eq 音效"]
AppleDock["apple_dock"]
LibA["liba 预编译库 .a"]
end
subgraph sg_Platform["平台 / 工具层 sdk"]
CPU["cpu 平台头文件"]
Config["config 配置头文件"]
Tools["tools 编译工具链脚本"]
Makefile["Makefile / .cbp 工程"]
end
subgraph sg_HW["硬件层"]
Chip["AD16N SoC<br/>AD160A/AD161A/AD162/AD165/AD166/AD168"]
Peri["FLASH / SD / U 盘 / USB / MIC / DAC"]
end
App --> BSP
App --> Decoder
App --> Encoder
App --> Audio
App --> Device
App --> Msg
App --> Update
App --> Effects
App --> AppleDock
Decoder --> LibA
Encoder --> LibA
Audio --> LibA
Device --> LibA
BSP --> CPU
BSP --> Config
Makefile --> Tools
PostBuild --> Tools
CPU --> Chip
Device --> Peri
Chip --> Peri
架构要点解读:
- 应用层与能力层解耦:
mbox_flash应用只依赖include_lib/下的头文件(API 契约),算法实现藏在liba/预编译库中。这种「头文件 + 静态库」模式既保护了算法知识产权,又保证了不同芯片型号间应用代码可移植。 - BSP 承上启下:
bsp/将芯片寄存器操作封装为板级接口,cpu/提供平台相关头文件,使应用代码不直接触碰寄存器。 - 构建双入口:Windows 推荐 Code::Blocks(
.cbp工程),命令行统一走顶层Makefile(make -j4),tools/中的脚本(如make_prompt.bat)为 Windows 命令行编译预置环境变量。
工程目录结构的完整树形说明见 README.md。
芯片系列总览
芯片家族与封装选型
AD16N 系列覆盖从最小封装(SOP8)到大封装(QFN52/LQFP48)的完整产品梯度。根据 doc/README.md 选型说明 与 README.md 芯片支持章节,芯片家族可按封装与应用场景归纳如下:
flowchart LR
subgraph sg_Family["AD16N 系列"]
AD160["AD160A<br/>QFN52 全功能"]
AD161["AD161A<br/>LQFP48"]
AD162["AD162A/B/C/D<br/>SOP16"]
AD165["AD165A/C/D<br/>QSOP24"]
AD166["AD166A<br/>QFN32"]
AD168["AD168A<br/>SOP8 最小"]
end
subgraph sg_App2["典型应用"]
MCU1["通用 MCU / LCD 音频"]
SPK1["小音箱 / 音频播放"]
MP3_1["插卡 MP3 直推耳机"]
MCU2["通用 MCU"]
end
AD160 --> MCU1
AD161 --> MCU1
AD162 --> SPK1
AD162 --> MP3_1
AD165 --> SPK1
AD166 --> MCU2
AD168 --> SPK1
关键选型参数对比
下表摘自仓库选型说明(doc/README.md),列出各型号的核心差异。所有型号共性参数:供电范围 2.7V–5V、关机功耗 2uA、内置 10bit ADC、FUSB(USB 全速)、SPI×1 / I2C×1 / UART×2 / SDIO×1 / QDEC×1 / 2812LED×1 / IRDA、TIM PWM×3 / MCPWM 2 对、支持 锂电池充电。
| 型号 | 封装 | 内置 Flash | 外挂 Flash | GPIO | ADC 通道 | AUD DAC | 直推耳机 | RTC | LCD 段码 | 产品定位 |
|---|---|---|---|---|---|---|---|---|---|---|
| AD160A0 | QFN52 | × | √ | 38 | 16 | 立体声 | 双 VCMO 立体声 | √ | √ | 全封装音频 MCU |
| AD160A4 | QFN52 | 4Mbit | × | 33 | 16 | 立体声 | 双 VCMO 立体声 | √ | √ | 全封装音频 MCU |
| AD161A0 | LQFP48 | × | √ | 38 | 16 | 立体声 | 单声道 | √ | √ | 音频 MCU |
| AD161A4 | LQFP48 | 4Mbit | × | 33 | 16 | 立体声 | 单声道 | √ | √ | 音频 MCU |
| AD162A0 | SOP16 | × | √ | 10 | 6 | 单声道 | × | √ | × | 音频 MCU |
| AD162A4 | SOP16 | 4Mbit | × | 10 | 6 | 单声道 | × | √ | × | 音频 MCU |
| AD165A0 | QSOP24 | × | √ | 18 | 12 | 单声道 | × | √ | × | 音频 MCU |
| AD165A4 | QSOP24 | 4Mbit | × | 18 | 12 | 单声道 | × | √ | × | 音频 MCU |
| AD162B0 | SOP16 | × | × | 8 | 8 | 立体声 | 立体声 VCMO 直推 | √ | × | 插卡 MP3 播放器直推耳机 |
| AD162B2 | SOP16 | 2Mbit | × | 8 | 8 | 立体声 | 立体声 VCMO 直推 | √ | × | 插卡 MP3 播放器直推耳机 |
| AD162C0 | SOP16 | × | × | 9 | 7 | 立体声 | 立体声 VCMO 直推 | √ | × | 小音箱 |
| AD162C2 | SOP16 | 2Mbit | × | 9 | 7 | 立体声 | 立体声 VCMO 直推 | √ | × | 小音箱 |
| AD165C0 | QSOP24 | × | × | 18 | 12 | 立体声 | 立体声 VCMO 直推 | √ | √ | 小音箱 |
| AD165C2 | QSOP24 | 2Mbit | × | 18 | 12 | 立体声 | 立体声 VCMO 直推 | √ | √ | 小音箱 |
| AD166A0 | QFN32 | × | √ | 25 | 15 | 立体声 | 单声道 | √ | √ | 音频 MCU |
| AD166A4 | QFN32 | 4Mbit | × | 25 | 15 | 立体声 | 单声道 | √ | √ | 音频 MCU |
选型决策要点(设计意图):
- 后缀数字表示内置系统 Flash 容量(A0 无内置、A4 内置 4Mbit、B2/C2 内置 2Mbit),内置 Flash 型号可省去外挂 SPI Flash 的成本与占板面积,适合小封装产品(SOP16/QSOP24)。
- A 系列(AD160A/161A/166A)强调外设丰富度(最多 38 个 GPIO、段码 LCD、RTC),面向通用 MCU + 音频控制类应用;B/C 系列(162B/C、165C)面向小音箱,突出立体声 VCMO 直推耳机与充电管理,去掉 LCD/RTC 以降低成本。
- 除 AD168A 外,
doc/README.md选型表还覆盖 SOP8 最小封装型号(表中未逐行列出),用于极致低成本的小音箱/语音玩具。
芯片参数差异速查(SDK 视角)
不同芯片的 GPIO 数量、ADC 通道、DAC 声道数直接影响 BSP 与 app_config.h 的外设配置。开发时需通过 Makefile target 或 app_config.h 指定芯片型号,SDK 会根据型号裁剪可用外设(详见下文「配置说明」)。
SDK 核心能力
音频解码与播放
- 私有格式解码:支持
.a/.b/.e、.f1a/.f1b/.f1c/.f1x等多种杰理私有音频格式; - 标准格式解码:MP3、WMA、WAV 硬件解码;
- MIDI 合成播放:支持 MIDI 合成与播放(仓库提供
midi_2byte.bat/midi_4byte.bat/MIDI_VER_SELECT.bat用于切换 MIDI 版本与字节模式,见 README.md 工程结构); - 多路并发播放:最多支持
.a/.b/.e+.f1a/.f1b/.f1c两路音频同时解码播放,适合「背景音乐 + 提示音」或「人声 + 音效」叠加场景; - 变速变调:音频变速变调播放,需系统时钟 100MHz 以上;
- 硬件重采样:内置硬件重采样,适配不同采样率音源与 DAC 输出。
音频编码(录音)
支持 MP2、UMP3、A 等格式编码录音,配合 16bit ADC 单声道输入(8K–96K 采样率)实现录音笔、喊话/扩音等应用。
音效与音频通路
- 多段 EQ:支持多段 EQ 配置,配合
pcm_eq/与sound_effect_list/音效算法目录做音色调整; - DRC 限幅器:动态范围压缩/限幅,保护扬声器并提升听感;
- 内置编解码:16bit DAC 双声道输出 + 16bit ADC 单声道输入;
- LINEIN:数字 LINEIN 与模拟直通 LINEIN(见 README.md 应用与示例)。
存储与设备
- 多介质:内置/外置 FLASH、SD/MMC 卡、U 盘,统一走 FAT 文件系统;
- USB Device:支持 Speaker / MIC / HID / MSD 复合设备;
- 充电管理:内置锂电池充电管理,最大 120mA;
- OTP:32KB 一次性可编程存储器,可直接运行代码,无需外挂 Flash 即可工作。
低功耗
关机功耗低至 1.7µA+(选型表标注 2uA),配合 RTC(部分型号)与 GPIO 唤醒,适合电池供电的便携产品。
能力组织(include_lib 目录语义)
| 目录 | 职责 | 典型头文件内容 |
|---|---|---|
cpu/ | CPU 平台头文件 | 芯片寄存器、平台类型定义 |
decoder/ | 解码器 API | 播放句柄、解码回调、格式选择 |
encoder/ | 编码器 API | 录音句柄、码率/格式参数 |
audio/ | 音频 API | DAC/ADC 通路、采样率、EQ/DRC 控制 |
device/ | 设备驱动 | FLASH/SD/U 盘/FAT 挂载接口 |
common/ | 公共头文件 | 通用类型、错误码、工具宏 |
config/ | 配置头文件 | 芯片配置、功能开关 |
sound_effect_list/ pcm_eq/ | 音效算法 | 音效链表、EQ 参数结构 |
msg/ | 消息机制 | 事件/消息队列 API |
update/ | 固件升级 | 升级接口(U 盘/SD/串口) |
apple_dock/ | Apple Dock | Apple 认证/MFI 相关接口 |
liba/ | 预编译库 | 各能力对应的 .a 静态库 |
应用层通过上述头文件调用能力层,链接时由
liba/提供实现 —— 这是 SDK「源码 + 库」混合交付模式的关键。
应用与示例
SDK 目前提供一个小音箱/音频播放应用工程 mbox_flash,位于 sdk/apps/app/src/mbox_flash/(工程文件 sdk/AD16N_mbox_flash.cbp,支持 AD16N 全系列)。其功能矩阵如下(README.md 应用与示例):
| 功能 | 说明 |
|---|---|
| 音乐播放 | 本地/外置 FLASH、SD 卡、U 盘文件播放(MP3/WMA/WAV/.a/.b/.e/.f1a/.f1b/.f1c 等) |
| MIDI 演奏 | MIDI 合成与播放 |
| 录音 | MP2/UMP3/A 格式编码录音 |
| USB Device | USB 从设备(Speaker / MIC / HID / MSD) |
| LINEIN | 数字 LINEIN 和模拟直通 LINEIN |
| 扩音 | 扩音/喊话功能 |
适用领域:便携音箱、MP3 播放器、语音玩具、故事机、USB 音频设备等。
提示:mbox_flash 应用同时作为参考实现,展示如何组织消息循环、调用解码器/编码器/设备接口——新的产品应用(如故事机、学习机)可在此基础上裁剪或扩展。
开发流程
环境搭建
| 系统 | 说明 |
|---|---|
| Windows | 推荐 Code::Blocks IDE 编译 |
| Linux | Makefile 命令行编译(需重写 download_sh.c 脚本适配 Linux) |
| macOS | 需自行配置交叉编译工具链 |
工具链为杰理编译工具链(Linux 下解压到 /opt/jieli,确保 /opt/jieli/pi32/bin/clang 存在),烧录使用 USB 升级工具(开发)或 生产烧写工具(量产裸片,一拖二/一拖八)。
编译
# Windows 用户:双击 sdk/make_prompt.bat 打开命令行环境后执行
make -j4
# 显示编译详情
make VERBOSE=1 -j4
# 清理
make clean
命令与常见编译错误见 README.md 编译指南。典型错误:
clang: command not found(工具链未装/环境变量未配)、cannot find -lxxx(apps/include_lib/liba/缺少对应.a库)。
烧录与升级
sequenceDiagram
participant Dev as 开发者
participant IDE as Code::Blocks / Makefile
participant TC as 杰理编译工具链 (clang)
participant FW as 固件产物 (post_build)
participant Tool as USB 升级工具
participant Board as 目标板 (AD16N)
Dev->>IDE: 打开 AD16N_mbox_flash.cbp 或执行 make
IDE->>TC: 编译链接 (源码 + liba)
TC-->>IDE: 生成固件
IDE-->>FW: 固件输出到 post_build/
Dev->>Board: 连接 USB / 按住烧录键复位进入编程模式
Dev->>Tool: 选择固件文件
Tool->>Board: 下载固件 (首次烧录)
Board-->>Tool: 校验完成
Note over Board: 量产: 使用一拖二/一拖八生产烧写工具<br/>升级: U 盘/SD 卡/串口 OTA 双备份升级
开发期烧录步骤(README.md 烧录与升级):
- 开发板通过 USB 或 USB 升级工具连接 PC;
- 按住烧录按键复位/重新上电进入编程模式(或用升级工具进入);
- 打开 USB 升级工具,选择编译生成的固件;
- 点击下载,等待烧录完成。
生产烧写:量产/裸片场景使用一拖二、一拖八生产烧写工具。
OTA 升级:支持自定义双备份固件升级,常见方式为 U 盘升级、SD 卡升级、串口升级。
配置说明
SDK 的核心配置入口是 sdk/apps/app/src/mbox_flash/app_config.h(README.md 配置说明)。该头文件控制目标应用的功能开关,常见可配置项包括:
| 配置项 | 说明 |
|---|---|
| 芯片型号选择 | 指定编译目标芯片(配合 Makefile target 生效) |
| FLASH 类型 | 内置/外挂 Flash 切换,外挂 Flash 通过 SPI Flash 控制器访问 |
| 功能开关 | 各应用功能(播放/录音/MIDI/USB/LINEIN/扩音等)的使能宏 |
| 外设配置 | GPIO 复用、采样率、DAC/ADC 通路、EQ/DRC 参数 |
修改功能开关后需重新编译;若更换芯片型号,请同步核对 Makefile target 与
app_config.h中的芯片配置是否匹配,否则可能出现链接错误(见 README.md 常见问题)。
使用示例
克隆仓库并进入工程目录
git clone https://gitee.com/Jieli-Tech/fw-AD16N.git
cd fw-AD16N/sdk
验证工具链安装
# 验证工具链是否安装成功
clang --version
命令行编译
# Windows 用户
双击 sdk/make_prompt.bat 打开命令行环境
# 编译
make -j4
# 显示编译详情
make VERBOSE=1 -j4
切换 MIDI 版本模式
# 在 sdk/ 目录下,按需双击
midi_2byte.bat # MIDI 2字节模式切换
midi_4byte.bat # MIDI 4字节模式切换
MIDI_VER_SELECT.bat # MIDI 版本选择
失败模式、边界情况与注意事项
- 库文件缺失:
cannot find -lxxx表示apps/include_lib/liba/缺少匹配芯片/命名规则的.a库——SDK 是「源码 + 预编译库」模式,缺库时无法通过改源码绕过,需向杰理获取对应版本库文件。 - 芯片型号不匹配:Makefile target 与
app_config.h芯片配置不一致会导致链接错误或外设行为异常;切换型号(如 AD162 → AD166)时 GPIO/ADC/DAC 通道数变化,需同步调整 BSP 与配置。 - 工具链环境问题:
clang: command not found或make: command not found,Windows 下务必通过sdk/make_prompt.bat进入预置环境。 - Linux 适配:
download_sh.c需重写以适配 Linux 环境,否则编译后处理阶段可能失败。 - 外置 Flash 访问:使用外挂 Flash 时通过 SPI Flash 控制器访问,需在配置中指定 Flash 类型,否则系统启动/文件系统挂载异常。
- 变速变调时钟约束:变速变调功能需要系统时钟 100MHz 以上,低主频配置下该功能不可用——这是典型的硬件能力边界,需在功能裁剪时注意。
- 烧录前状态:烧录前必须确保 USB 升级工具连接正常且目标板进入编程模式(按住烧录键复位),否则下载会失败。
性能与功耗特征
| 指标 | 数值 | 说明 |
|---|---|---|
| 关机功耗 | 1.7µA+(选型表标注 2uA) | 电池供电产品续航的关键指标 |
| 供电范围 | 2.7V–5V | 宽压供电,兼容 3.7V 锂电池与 USB 5V |
| 充电电流 | 最大 120mA | 内置锂电池充电管理 |
| 采样率 | 8K–96K | 16bit ADC/DAC |
| 并发解码 | 2 路 | .a/.b/.e + .f1a/.f1b/.f1c 同时播放 |
| 变速变调 | 需 100MHz+ | 系统时钟约束 |
编译性能建议:使用 make -jN(N 为并行任务数)加速编译;调试手段包括 UART 串口日志与空闲 GPIO 输出调试波形(见 README.md 调试技巧)。
扩展点
- 新增应用工程:参照
sdk/apps/app/src/mbox_flash/的组织方式,在apps/app/src/下新建应用目录,并添加对应的.cbp工程或 Makefile target。 - 功能裁剪/扩展:通过
app_config.h的功能开关宏启用或关闭解码格式、录音、MIDI、USB、LINEIN、扩音等能力。 - 新芯片型号适配:在
include_lib/cpu/与config/中按芯片型号补充平台头文件与配置,配合 BSP 实现板级适配。 - 升级方式扩展:基于
include_lib/update/的升级接口可扩展新的 OTA 传输通道(仓库已支持 U 盘/SD 卡/串口双备份升级)。 - 音效定制:通过
sound_effect_list/与pcm_eq/目录的音效链表与 EQ 参数结构定制音色。
社区与支持
| 资源 | 链接 |
|---|---|
| 杰理工具在线文档 | doc.zh-jieli.com/Tools |
| SDK 版本历史 | AD16N_FLASH_SDK_发布版本信息.pdf |
| SDK 手册 | AD16N_开源SDK手册_V1.2.pdf |
| 芯片选型表 | 选型表 · 选型说明 |
| MIDI 开发手册 | 杰理 MIDI 应用开发文档 |
| FAE 支持 | FAE 支持仓库 |
| 问题反馈 | Gitee Issues |
相关链接
- README.md(SDK 总述)
- README-en.md(英文版说明)
- doc/README.md(芯片选型说明)
- doc/(规格书、原理图、硬件设计指南)
- 具体应用工程实现 → 参见「应用工程 mbox_flash」页面(小音箱/音频播放应用)
- MIDI 合成与播放 → 参见 MIDI 相关页面(外部文档:杰理 MIDI 应用开发文档)