杰理 SDK 文档中心
首页
首页
  • 项目概览

    • AD16N 系列芯片与 SDK 能力总览
  • 快速开始

    • 环境搭建与编译工具链
    • 编译构建指南
    • 烧录与固件升级
  • SDK 工程架构

    • SDK 目录结构与模块分层
    • 构建系统与批处理工具
    • BSP 板级支持包
  • mbox_flash 小音箱应用

    • 应用初始化与启动流程
    • 应用配置系统
    • 按键、UI 与用户交互
  • 音频子系统

    • 音频解码框架与调度
    • 音频格式解码器实现
    • MIDI 合成与播放
    • 音频编码与录音
    • EQ/DRC 与音效处理
    • DAC/ADC 音频接口与采样
  • 存储与文件系统

    • 媒体 IO 抽象层 MIO
    • 存储设备驱动
    • 文件系统支持
  • 平台系统库

    • 系统基础服务
    • CPU 平台与运行库
    • 固件升级与更新机制
    • 蓝牙与扩展连接接口
  • 电源与低功耗管理

    • 电源管理与低功耗设计
    • 锂电池充电管理
  • 硬件与文档参考

    • SDK 文档中心与版本发布记录
    • 芯片数据手册与硬件设计参考

AD16N 系列芯片与 SDK 能力总览

本页面向开发者系统介绍杰理科技 AD16N 系列通用 MCU SDK(仓库 fw-AD16N_GP-MCU_SDK)的芯片家族、SDK 分层架构、核心音频/控制能力、工程结构、编译烧录流程与配置方式,是一份从芯片选型到 SDK 使用的端到端总览。

Purpose and Scope

本页是 AD16N SDK 的能力总览页,回答三类问题:

  1. 芯片层面:AD16N 系列有哪些型号(AD160A/AD161A/AD162A/B/C/D/AD165A/C/D/AD166A/AD168A),各自封装、存储、外设与典型应用是什么;
  2. SDK 层面:仓库包含哪些分层(应用层、中间件、平台层、工具链),音频解码/编码/MIDI/设备/升级等能力如何组织;
  3. 开发流程层面:如何搭建环境、编译固件、烧录与 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外挂 FlashGPIOADC 通道AUD DAC直推耳机RTCLCD 段码产品定位
AD160A0QFN52×√3816立体声双 VCMO 立体声√√全封装音频 MCU
AD160A4QFN524Mbit×3316立体声双 VCMO 立体声√√全封装音频 MCU
AD161A0LQFP48×√3816立体声单声道√√音频 MCU
AD161A4LQFP484Mbit×3316立体声单声道√√音频 MCU
AD162A0SOP16×√106单声道×√×音频 MCU
AD162A4SOP164Mbit×106单声道×√×音频 MCU
AD165A0QSOP24×√1812单声道×√×音频 MCU
AD165A4QSOP244Mbit×1812单声道×√×音频 MCU
AD162B0SOP16××88立体声立体声 VCMO 直推√×插卡 MP3 播放器直推耳机
AD162B2SOP162Mbit×88立体声立体声 VCMO 直推√×插卡 MP3 播放器直推耳机
AD162C0SOP16××97立体声立体声 VCMO 直推√×小音箱
AD162C2SOP162Mbit×97立体声立体声 VCMO 直推√×小音箱
AD165C0QSOP24××1812立体声立体声 VCMO 直推√√小音箱
AD165C2QSOP242Mbit×1812立体声立体声 VCMO 直推√√小音箱
AD166A0QFN32×√2515立体声单声道√√音频 MCU
AD166A4QFN324Mbit×2515立体声单声道√√音频 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/音频 APIDAC/ADC 通路、采样率、EQ/DRC 控制
device/设备驱动FLASH/SD/U 盘/FAT 挂载接口
common/公共头文件通用类型、错误码、工具宏
config/配置头文件芯片配置、功能开关
sound_effect_list/ pcm_eq/音效算法音效链表、EQ 参数结构
msg/消息机制事件/消息队列 API
update/固件升级升级接口(U 盘/SD/串口)
apple_dock/Apple DockApple 认证/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 DeviceUSB 从设备(Speaker / MIC / HID / MSD)
LINEIN数字 LINEIN 和模拟直通 LINEIN
扩音扩音/喊话功能

适用领域:便携音箱、MP3 播放器、语音玩具、故事机、USB 音频设备等。

提示:mbox_flash 应用同时作为参考实现,展示如何组织消息循环、调用解码器/编码器/设备接口——新的产品应用(如故事机、学习机)可在此基础上裁剪或扩展。

开发流程

环境搭建

系统说明
Windows推荐 Code::Blocks IDE 编译
LinuxMakefile 命令行编译(需重写 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 烧录与升级):

  1. 开发板通过 USB 或 USB 升级工具连接 PC;
  2. 按住烧录按键复位/重新上电进入编程模式(或用升级工具进入);
  3. 打开 USB 升级工具,选择编译生成的固件;
  4. 点击下载,等待烧录完成。

生产烧写:量产/裸片场景使用一拖二、一拖八生产烧写工具。

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

来源:README.md 快速开始

验证工具链安装

# 验证工具链是否安装成功
clang --version

来源:README.md 环境搭建

命令行编译

# Windows 用户
双击 sdk/make_prompt.bat 打开命令行环境

# 编译
make -j4

# 显示编译详情
make VERBOSE=1 -j4

来源:README.md 快速开始 / 编译指南

切换 MIDI 版本模式

# 在 sdk/ 目录下,按需双击
midi_2byte.bat      # MIDI 2字节模式切换
midi_4byte.bat      # MIDI 4字节模式切换
MIDI_VER_SELECT.bat # MIDI 版本选择

来源:README.md 工程结构

失败模式、边界情况与注意事项

  • 库文件缺失: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–96K16bit 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 应用开发文档)