杰理 SDK 文档中心
首页
首页
  • 概述与快速开始

    • SDK 总览与芯片能力
    • 环境搭建与编译构建
    • 烧录与固件升级
    • 文档与版本资源
  • 应用与示例方案

    • demo 示例工程
    • WiFi 摄像头方案 (wifi_camera)
    • WiFi 音箱方案 (wifi_soundbox)
    • WiFi 婴儿监护方案 (wifi_bbm)
    • 公共应用模块库
    • 示例代码库 (example)
  • 系统架构与平台

    • 总体架构与工程分层
    • 系统启动与运行框架
    • 芯片驱动与板级适配
    • 设备管理与文件系统
    • 系统工具库与算法
  • 音频子系统

    • 音频框架与处理节点
    • 音频编解码与音效
    • 播放器与录音器
    • 语音交互与 AI 唤醒
    • LE Audio 与蓝牙音频
    • 音频调试与歌词
  • 视频与显示子系统

    • 摄像头驱动与 ISP
    • 视频编码与图像处理
    • 显示与 GPU 加速
    • 屏幕镜像 (screen_mirror)
  • 无线连接与网络

    • 蓝牙协议栈 (双模蓝牙)
    • WiFi 协议栈与配网
    • 网络协议栈
    • 云平台与 IoT 协议
  • UI 子系统

    • LVGL 集成与应用
    • UI 工程与工具链
  • 配置系统

    • 功能配置
    • 板级配置
    • 网络与蓝牙配置
    • 音频配置与提示音
  • 工具与测试

    • 产测与射频测试工具
    • 固件升级与更新机制
    • 调试与日志工具
  • 硬件参考设计

    • 原理图参考设计
    • 芯片数据手册

demo 示例工程

AC792N AIoT SDK(fw-AC792_SDK)中位于 sdk/apps/demo/ 下的 7 个最小功能示例工程集合,用于演示 BLE、经典蓝牙 EDR、WiFi STA/AP、WiFi 扩展联网、音频采集播放、LVGL UI 显示等单项能力,是开发者评估芯片功能、学习 API 用法与创建新工程的起点。

Purpose and Scope

本文档介绍 AC792N SDK 中 demo 示例工程(目录 sdk/apps/demo/)的整体情况,包括:

  • 7 个示例工程(demo_hello、demo_ble、demo_edr、demo_wifi、demo_wifi_ext、demo_audio、demo_ui)各自的用途、路径与编译目标;
  • 每个 demo 的标准工程目录结构(入口 app_main.c、板级配置 board/wl83/、应用配置 include/app_config.h 等);
  • demo 与 SDK 公共组件(sdk/apps/common/)及平台预编译库(sdk/cpu/wl83/liba/)之间的依赖关系;
  • 编译、烧录与上电运行的整体流程。

不涵盖的内容:sdk/apps/wifi_camera/、sdk/apps/wifi_soundbox/、sdk/apps/wifi_bbm/ 等完整量产方案工程属于各自的方案页面;蓝牙 Profile、音频编解码、LVGL 图形库、WiFi 协议栈等公共组件的内部实现细节由对应的组件页面负责。demo 仅演示这些能力的“最小可用”用法,本文档不重复展开这些底层机制。

开发前请同时阅读 AC792 SDK 在线文档中心,仓库本身不含开发文档,仅含 SDK 代码与示例工程(见 README.md)。

Overview

AC792N 是杰理科技推出的 WiFi 802.11b/g/n + 双模蓝牙 V5.4 AIoT 多媒体 SoC,内部集成主频 320MHz 的双核浮点 DSP,并完整集成音频(ADC/DAC)、视频(DVP/MIPI 摄像头 + ISP)、显示(MIPI/RGB 推屏 + LVGL/AWTK + GPU2.5D)与丰富外设(GPIO、IIC、SPI、UART、USB、ADC、RTC 等)。SDK 为 wl83 平台(AC7921A / AC7922A / AC7922C / AC7923A / AC7923B / AC7923C / AC7925A / AC7925B / AC7925C / AC7926A)提供四类应用工程:wifi_camera、wifi_soundbox、wifi_bbm 与 demo(见 README.md 芯片平台表)。

demo 示例工程的定位:

  • 能力展示:每个 demo 聚焦一项(或少量组合)芯片能力,以最小的代码量展示该能力的完整调用链路;
  • 参考起点:开发者可以复制某个 demo 工程,在其基础上修改 board/wl83/ 板级配置与 app_main.c 业务逻辑,快速搭建新产品原型;
  • 编译验证:每个 demo 都有独立的 make 目标(如 ac792n_demo_demo_ble),可独立编译出可烧录固件,用于验证开发环境与硬件平台。

典型使用场景:

场景推荐 demo
验证编译环境 / 最小系统启动demo_hello
低功耗蓝牙数据透传demo_ble
经典蓝牙(音乐/SPP/发射/解码)demo_edr
WiFi STA/AP 联网demo_wifi
外部 WiFi 模组扩展联网demo_wifi_ext
音频采集/播放/编解码demo_audio
LVGL UI 显示 / 图层 / 触摸demo_ui

Architecture

demo 示例工程并不是孤立的,它们位于 SDK 的应用层,向下依赖公共组件与平台预编译库。整体架构如下:

flowchart TD
    subgraph sg_Demos["sdk/apps/demo — 7 个功能示例"]
        Hello["demo_hello"]
        Ble["demo_ble"]
        Edr["demo_edr"]
        Wifi["demo_wifi"]
        WifiExt["demo_wifi_ext"]
        Audio["demo_audio"]
        Ui["demo_ui"]
    end
    subgraph sg_Common["sdk/apps/common — 公共组件"]
        Cfg["config(蓝牙 Profile / 用户配置 / 日志)"]
        Lvgl["lvgl_v8(LVGL 图形库)"]
    end
    subgraph sg_Cpu["sdk/cpu/wl83"]
        Liba["liba(预编译 *.a 静态库)"]
        Tools["tools(烧录工具)"]
    end
    Hello --> Cfg
    Ble --> Cfg
    Edr --> Cfg
    Wifi --> Cfg
    WifiExt --> Cfg
    Audio --> Cfg
    Ui --> Cfg
    Ui --> Lvgl
    Ble --> Liba
    Edr --> Liba
    Wifi --> Liba
    WifiExt --> Liba
    Audio --> Liba
    Ui --> Liba
    Hello --> Liba

架构说明:

  • 应用层(demo):每个 demo 工程自包含入口(app_main.c)、板级配置(board/wl83/)与应用配置(include/app_config.h),是开发者主要修改的对象;
  • 公共组件层(common):sdk/apps/common/ 提供蓝牙 Profile 配置、用户配置、日志(config 子目录)、LVGL 图形库(lvgl_v8)等可复用能力,所有 demo 共享;
  • 平台层(cpu/wl83):sdk/cpu/wl83/liba/ 存放预编译的 *.a 静态库(协议栈/驱动),demo 编译时必须链接这些库;sdk/cpu/wl83/tools/ 提供烧录工具。

该分层设计的意图是:业务代码与平台实现解耦。demo 工程只写应用逻辑与板级差异,芯片驱动、蓝牙/WiFi 协议栈等以预编译库形式提供,既保护了知识产权,也保证了不同工程编译的一致性。

各 Demo 详解

Demo 清单与功能矩阵

README.md 与 README-en.md 明确记录了 7 个 demo 的路径、演示功能与编译目标。其中英文版 README 的 “Functional Demo Matrix” 一节汇总如下(原文见 README-en.md):

Demo路径演示功能make 目标
demo_hellosdk/apps/demo/demo_hello/最小工程启动(Hello World 类)ac792n_demo_demo_hello
demo_blesdk/apps/demo/demo_ble/BLE 低功耗蓝牙数据传输ac792n_demo_demo_ble
demo_edrsdk/apps/demo/demo_edr/经典蓝牙 EDR(音乐 / SPP / 发射 / 解码)ac792n_demo_demo_edr
demo_wifisdk/apps/demo/demo_wifi/WiFi STA / AP 组网ac792n_demo_demo_wifi
demo_wifi_extsdk/apps/demo/demo_wifi_ext/外部 WiFi 模组扩展联网ac792n_demo_demo_wifi_ext
demo_audiosdk/apps/demo/demo_audio/音频采集 / 播放 / 编解码ac792n_demo_demo_audio
demo_uisdk/apps/demo/demo_ui/LVGL UI 显示 / 图层 / 触摸ac792n_demo_demo_ui

表中 demo_hello 一行依据 README-en.md 的矩阵上下文与 README.md 中 “7 个功能 demo(ble/wifi/wifi_ext/edr/ui/hello/audio)” 的列举整理;编译目标命名遵循 ac792n_demo_<demo名> 的统一规则。

Demo 在 SDK 中的位置

README.md 的工程结构章节把 demo 归入应用层(apps),原文结构如下(见 README.md):

├── apps/wifi_bbm/         # 婴儿监护器 / 带屏视频监护方案
└── apps/demo/             # 7 个功能 demo(ble/wifi/wifi_ext/edr/ui/hello/audio)

更完整的层级关系(摘录自 README-en.md):

│   │   ├── wifi_bbm/         # 📌 Baby monitor solution
│   │   └── demo/             # 📌 7 functional demos
│   ├── cpu/wl83/             # CPU platform code + prebuilt libraries (liba) + flashing tools (tools)

README-en.md 对 sdk/apps/demo/ 的定位说明是:“Functional examples: 7 minimal demo projects to reference or modify”(7 个最小示例工程,供参考或修改,见 README-en.md)。这句话点明了 demo 工程的设计意图:最小化、可参考、可修改。

工程目录结构剖析

所有 demo 工程遵循一致的标准目录布局(以 demo_ble 为例,结构经仓库文件列表确认):

sdk/apps/demo/demo_ble/
├── app_main.c              # 工程入口(应用主逻辑)
├── bt_ble/
│   └── ble.c               # BLE 业务实现
├── include/
│   └── app_config.h        # 应用级配置(使能/裁剪功能)
└── board/wl83/
    ├── board.c             # 板级驱动初始化(引脚、外设)
    ├── board_config.h      # 板级配置宏
    ├── board_demo.h        # 板级示例声明/宏
    ├── chip_cfg.h          # 芯片级配置
    ├── Makefile            # 该工程的编译脚本
    └── AC792N_DEMO_DEMO_BLE.cbp # Code::Blocks 工程文件

各文件职责

文件职责设计意图
app_main.c应用入口,负责系统初始化与业务主循环每个 demo 的差异化业务从这里开始,是开发者修改的第一现场
include/app_config.h应用配置头文件,宏开关控制功能裁剪通过宏配置实现“同一个 demo 适配多种需求”,避免改代码
board/wl83/board.c板级初始化:GPIO、时钟、外设(IIC/SPI/UART/USB 等)将“硬件差异”收敛到 board 层,业务代码无需感知具体板型
board/wl83/board_config.h板级配置宏(引脚复用、外设使能)换板只需改板级配置,不动业务
board/wl83/chip_cfg.h芯片级配置(存储、时钟、电源等)芯片平台差异的隔离层
board/wl83/Makefile编译脚本,定义该工程的构建规则与源文件列表每个 demo 独立编译,互不影响
AC792N_DEMO_DEMO_*.cbpCode::Blocks 工程文件便于在 IDE 中打开、编译与调试
bt_ble/ble.c(仅 BLE 相关 demo)蓝牙业务逻辑,如广播、连接、透传业务模块按功能划分子目录,保持工程整洁

设计意图:为什么每个 demo 都自带 board 目录?

因为 board 层是“工程私有”的:不同的 demo 使用不同的外设组合(如 demo_ui 需要显示与触摸引脚、demo_audio 需要 I2S/ADC 引脚、demo_ble 则可能全部复用为 GPIO),把板级配置放在每个工程内部,可以保证:

  1. 独立可编译:每个 demo 不依赖其他工程的板级文件,单独拷贝即可使用;
  2. 快速换板:量产方案(wifi_camera 等)与 demo 共用同一套 board 目录模式,开发者从 demo 迁移到方案工程时心智模型一致;
  3. 最小依赖:demo 只依赖 sdk/apps/common/ 公共组件与 sdk/cpu/wl83/liba/ 预编译库,不依赖任何兄弟 demo。

核心流程:从示例到固件

以 demo_ble 为例,从获取 SDK 到设备上运行的整体流程如下:

flowchart LR
    A["选择 demo(如 demo_ble)"] --> B["按硬件修改 board/wl83 板级配置"]
    B --> C["按需求配置 include/app_config.h"]
    C --> D["执行 make ac792n_demo_demo_ble"]
    D --> E["链接 cpu/wl83/liba 预编译库"]
    E --> F["生成可烧录固件"]
    F --> G["使用 tools 烧录到 AC792N 开发板"]
    G --> H["上电运行:从 app_main.c 入口启动"]

设备端上电后的运行框架(各 demo 均以 app_main.c 为入口,具体调用序列以各 demo 源码为准):

sequenceDiagram
    participant B as 开发板
    participant M as app_main.c(工程入口)
    participant C as 公共组件(common/config)
    participant L as 业务模块(ble.c / lvgl 等)
    B->>M: 上电复位,进入应用入口
    M->>C: 初始化平台与公共配置(时钟/日志/蓝牙 Profile 等)
    C-->>M: 平台初始化完成
    M->>L: 按 app_config.h 宏开关启动业务模块
    L-->>M: 业务模块就绪
    L-->>B: 对外呈现功能(BLE 广播透传 / UI 显示 / 音频输出等)

使用示例

示例 1:确认 demo 在工程树中的位置

在开始任何 demo 开发前,先确认 SDK 工程树中 apps 层的划分(摘自 README.md):

├── apps/wifi_bbm/         # 婴儿监护器 / 带屏视频监护方案
└── apps/demo/             # 7 个功能 demo(ble/wifi/wifi_ext/edr/ui/hello/audio)

示例 2:查看英文 README 中的 Demo 功能矩阵

功能矩阵是选择 demo 的最快途径(摘自 README-en.md):

DemoPathDemonstrated Featuremake target
demo_blesdk/apps/demo/demo_ble/BLE low-energy data transferac792n_demo_demo_ble
demo_edrsdk/apps/demo/demo_edr/Classic Bluetooth EDR (music/SPP/emitter/decode)ac792n_demo_demo_edr
demo_wifisdk/apps/demo/demo_wifi/WiFi STA/AP networkingac792n_demo_demo_wifi
demo_wifi_extsdk/apps/demo/demo_wifi_ext/External WiFi extended networkingac792n_demo_demo_wifi_ext
demo_audiosdk/apps/demo/demo_audio/Audio capture/playback/codecac792n_demo_demo_audio
demo_uisdk/apps/demo/demo_ui/LVGL UI display/layers/touchac792n_demo_demo_ui

示例 3:定位 demo 的源码入口文件

仓库文件列表确认每个 demo 的入口与配置文件的物理位置,例如 BLE demo 的关键文件:

  • 入口:sdk/apps/demo/demo_ble/app_main.c
  • BLE 业务:sdk/apps/demo/demo_ble/bt_ble/ble.c
  • 应用配置:sdk/apps/demo/demo_ble/include/app_config.h
  • 板级配置:sdk/apps/demo/demo_ble/board/wl83/board.c、board_config.h、board_demo.h、chip_cfg.h
  • 构建文件:sdk/apps/demo/demo_ble/board/wl83/Makefile、AC792N_DEMO_DEMO_BLE.cbp

各 demo 的 app_main.c 与业务模块源码可直接点击上方目录链接在仓库中浏览;本文档侧重工程级组织方式,具体 API 调用细节请结合各 demo 源码与在线文档中心阅读。

配置说明

demo 工程的配置分散在三个层级,形成“应用 → 板级 → 芯片”的配置链,与架构分层一一对应:

配置层文件典型配置项(以文件存在性为依据)修改时机
应用级include/app_config.h功能宏开关(使能/裁剪业务模块)决定该 demo 跑哪些功能
板级board/wl83/board_config.h、board.c引脚复用、外设初始化(IIC/SPI/UART/USB 等)更换硬件板型时必改
芯片级board/wl83/chip_cfg.h存储、时钟、电源等芯片平台参数更换芯片型号/封装时修改

说明:以上配置项为按文件职责归纳的典型内容;各 demo 的具体宏定义与默认值请直接阅读对应头文件(app_config.h / board_config.h / chip_cfg.h),本文档不展开罗列,避免与实际头文件内容产生偏差。

注意事项与边界情况

  • demo ≠ 量产方案:demo 是“最小可用”示例,用于验证单项能力。量产级功能(如网络配网、断线重连、OTA、音视频组合应用)请参考 wifi_camera / wifi_soundbox / wifi_bbm 方案工程;
  • 必须链接预编译库:demo 工程编译依赖 sdk/cpu/wl83/liba/ 下的 *.a 静态库,仓库仅提供代码与工程,需配合对应平台的库文件方可编译(见 README.md 概述);
  • 板级差异:同一 demo 在 AC7921A ~ AC7926A 不同型号/封装上运行时,需核对 chip_cfg.h 与 board_config.h,尤其是存储容量(如 0 无内存 / 2/4/8 Mbit Flash / A 1M×16 SDRAM / F 8M×16 DDR1 / G 16M×16 DDR1 等后缀规则,见 README.md);
  • 并发与资源:demo 演示单一能力时资源占用低;将多个 demo 功能合并进一个工程时,需关注蓝牙/WiFi 共存(PTA 分时)、DSP 双核任务划分与 SRAM(384KB)/外扩内存预算;
  • 故障排查起点:demo 上电无现象时,按“芯片级配置 → 板级引脚 → 应用宏开关 → 预编译库版本”顺序排查,与 SDK 目录分层一致。

相关链接

  • README.md(SDK 总览与工程结构)
  • README-en.md(英文总览与 Demo 功能矩阵)
  • AC792 SDK 在线文档中心
  • 兄弟方案工程:sdk/apps/wifi_camera/(WiFi 视频方案)、sdk/apps/wifi_soundbox/(WiFi 音箱方案)、sdk/apps/wifi_bbm/(婴儿监护器方案)
  • 公共组件:sdk/apps/common/config/(蓝牙 Profile / 用户配置 / 日志)、sdk/apps/common/lvgl_v8/(LVGL 图形库)
  • 平台依赖:sdk/cpu/wl83/liba/(预编译库)、sdk/cpu/wl83/tools/(烧录工具)
Next
WiFi 摄像头方案 (wifi_camera)