匠芯创 D126 Wi-Fi / BLE 使用
本文以 匠芯创(ArtInChip)D126FxR-DEMO-V1-1 为板卡参考,结合项目提供的 D126 无线调试笔记,说明产品规格、无线硬件连接和软件启动流程。核心流程是先通过 SDIO 初始化 AIC8800DW 并下载蓝牙补丁,再通过 UART3 HCI 启动 NimBLE BLE 示例。
适用范围
板卡规格来自匠芯创官方开发板文档;封装内 AIC8800DW 连接、引脚复用、补丁选择和示例日志来自项目调试笔记。笔记未注明 SDK 提交版本,以下步骤需与实际 Luban-Lite 工程核对,不代表所有 D126 封装或 SDK 版本通用。本次文档整理未进行实板验证。
产品规格
| 项目 | 官方开发板配置 |
|---|---|
| 开发板 | D126FxR-DEMO-V1-1 |
| 封装 | BGA124 |
| 内存与存储 | 8/16 MB PSRAM;16 MB SPI NOR |
| 显示与触控 | MIPI + CTP |
| 通信 | RS485、CAN、UART |
| 无线与扩展 | SDIO WiFi、TF-Card |
| 多媒体 | Camera、Audio |
上述为开发板配置,不应直接视为所有 D126 料号的固定配置。官方页面未列出 Wi-Fi 标准、频段、BLE 版本或射频性能,本文不作推断。来源:匠芯创 D126 开发板文档。


图片来源:匠芯创官方开发板文档,版权归原权利人。硬件设计请参考官方原理图。
硬件连接
更新后的项目笔记推测 D126 封装内包含 D12P SoC 与 AIC8800DW 射频两块硅片;这属于项目推测,尚未由原厂封装资料确认。CPU 运行 Luban-Lite 和 NimBLE;Wi-Fi 与 BLE 分别使用以下数据链路。这里的端口名是 SoC 信号名,不是开发板排针编号,不要据此直接外接跳线。
| 链路 | 引脚 / 复用 | 作用 |
|---|---|---|
| SDMC1 / SDIO | PE.12~PE.17,功能 8 | 下载 Wi-Fi 固件、蓝牙补丁,并传输 Wi-Fi 数据 |
| UART3 TX | PB.18,功能 7 | CPU → 蓝牙控制器 |
| UART3 RX | PB.19,功能 7 | 蓝牙控制器 → CPU |
| UART3 流控 | PB.20、PB.21,功能 7 | RTS/CTS;两脚具体对应关系需查实际 pinmux |
| Wi-Fi 电源控制 | PE.18,功能 1 | GPIO 电源使能 |
| 蓝牙电源控制 | PE.20,功能 1 | GPIO 电源使能 |
| 唤醒 | PA.6,功能 1 | GPIO 唤醒控制 |
笔记中三根控制 GPIO 拉高后射频工作;应由对应驱动管理,并按实际板卡确认电平及上电时序,不随意增加手动 GPIO 操作。
BLE HCI 使用 UART3、1500000 baud、8N1、H4、RTS/CTS 硬件流控。串口参数必须与下载到射频侧的蓝牙补丁一致。
D126 CPU
├─ SDMC1 / SDIO ──> AIC8800DW:Wi-Fi 固件、蓝牙补丁、Wi-Fi 数据
├─ UART3 / H4 <──> 蓝牙控制器:NimBLE HCI
└─ GPIO ──> 电源使能与唤醒软件 Quickstart
1. 选择板级工程
官方开发板页面给出的工程信息如下;应在对应 SDK 中选取配置,而不是把配置名当作终端命令执行。
| 项目 | 路径 / 名称 |
|---|---|
| 工程目录 | target/d12p/d126-demo124-nor/ |
| 默认配置 | d12p_d126-demo124-nor_rt-thread_helloworld_defconfig |
| 固件路径 | output/d12p_d126-demo124-nor_rt-thread_helloworld/images/d12p_d126-demo124-nor_v1.0.0.img |
此默认工程是板卡起点,不能据此认定已启用 NimBLE 或 ble_hr。先按所用 SDK 的构建、烧录说明跑通串口控制台,再完成以下配置。
2. 配置 pinmux 和 Wi-Fi 驱动
- PE.12~PE.17 选择功能 8,接到 SDMC1,并将 SDMC1 配置为 SDIO。
- PB.18~PB.21 选择功能 7,接到 UART3。
- PE.18、PE.20、PA.6 选择功能 1,交由无线驱动作为 GPIO 控制。
- Wi-Fi 芯片选择 AIC8800DW,配置上述电源与唤醒脚。
- 打开
enable BT support,让无线初始化同时下载蓝牙补丁。
菜单层级、配置符号和文件位置可能随 SDK 改变;不要直接套用其他芯片的板级配置。
3. 核对蓝牙补丁分支
项目笔记要求:在 aicbt_patch_trap_data_load() 中,DW 与 DC 使用同一 DC-H 分支,不使用 D80 补丁。记录中的 chip_sub_id=2 对应:
fw_adid_8800dc_u02hfw_patch_8800dc_u02h
这是特定芯片版本的记录,不要强制把所有设备的 chip_sub_id 改成 2。先检查实际读出的芯片信息和 SDK 补丁匹配逻辑;补丁不匹配可能导致下载失败或控制器不应答。
4. 配置 NimBLE HCI
将 NimBLE HCI 设备指向 uart3,使用 H4,核对 1500000、8N1 和 RTS/CTS。启用包含 ble_hr 命令的心率示例。
项目笔记中特别区分了 D126 的 UART3 与另一份 D133 外置模块示例中的 UART2;本方案不要直接复制 UART2 配置。
5. 先初始化无线,再启动 BLE
在板端控制台执行:
wifi -d mode sta wlan0等待固件与补丁下载完成。笔记中的成功日志为:
wifi open ok随后执行:
ble_hr期望看到:
GAP procedure initiated: advertise使用手机 BLE 扫描工具查找 blehr_sensor。这是笔记记录的示例名称,固件可修改它。扫描到广播只说明 BLE 广播链路已工作,不代表所有 GATT 功能都已验证。
Wi-Fi 初始化不等于联网成功
wifi -d mode sta wlan0 用于本示例的 STA 初始化。连接路由器、配置凭据、获取 IP 和网络通信测试,应使用当前 SDK 提供的 Wi-Fi 命令说明;本文不假定该命令已经完成这些步骤。
常见问题
匠芯创 D126 的 Wi-Fi 与 BLE 共用 UART 吗?
按本项目笔记,Wi-Fi 数据和固件、蓝牙补丁下载走 SDMC1 / SDIO;NimBLE 的蓝牙 HCI 走 UART3。两条链路承担不同任务。
为什么要先运行 wifi 命令,再运行 ble_hr?
本示例通过 Wi-Fi 初始化路径下载蓝牙补丁。先等待 wifi open ok,再运行 ble_hr,避免在控制器尚未准备好时启动 BLE。
手机应扫描到什么 BLE 名称?
笔记中的心率示例广播名为 blehr_sensor。出现广播不等于 Wi-Fi 已联网,也不代表所有 GATT 功能已验证。
D126 封装内确定有两块硅片吗?
目前仅为项目笔记推测,不能当作原厂已确认的封装规格。
相关教程:匠芯创 D125 cJTAG 实板调试:FT232H 与 OpenOCD。
排查顺序
| 现象 | 优先检查 |
|---|---|
| 找不到 wifi 或 ble_hr 命令 | 驱动、命令组件与心率示例是否编入固件 |
| 无 wifi open ok | SDMC1 / SDIO pinmux、电源 GPIO、AIC8800DW 选择及下载日志 |
| 补丁下载中断或控制器不应答 | 芯片版本、DC-H / D80 分支、实际补丁文件 |
| Wi-Fi 初始化成功但 BLE 无响应 | BT support、UART3、1500000、H4、RTS/CTS |
| 已出现 advertise 但手机找不到 | 示例广播名、扫描权限、距离、天线与射频硬件 |
| 已广播但无法联网 | 分别检查 BLE 与 Wi-Fi;广播成功不代表 Wi-Fi 已关联或获取 IP |
建议保留上电到失败位置的完整日志、SDK 版本、配置差异和实际芯片版本,避免只凭最后一行报错判断原因。
资料与验证边界
- 匠芯创 D126 开发板文档:板卡规格、工程配置及两张板卡图片。
- D126FxR-DEMO-V1-1 原理图:硬件核对入口。
- 项目提供的 D126 无线调试笔记:SDIO / UART3 / GPIO 映射、补丁分支、命令及日志。尚缺 SDK 提交号和可复现实板测试记录。
