当前文档版本为 v1.3.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

Solution: Membrane Keyboard

重要

此例程仅存在于特殊版本的SDK中,如有需要请联系Panchip。

1 功能概述

此sample为pan108xxA3(48pin芯片)在实体键盘板下的应用

具体支持的feature如下:

  • 通用功能:

    1. 按键模块:支持8×19 矩阵,支持标准按键/无冲按键(薄膜无硬件防冲功能,软件支持鬼键检测)

    2. 多层按键映射:目前默认实现4层,WIN/WIN(FN)/MAC/MAC(FN),BLE模式系统自动识别(Windows / macOS)。FN层主要实现F1 - F12多媒体按键,以及用户自定义事件,可扩展其它层

    3. QDEC滚轮模块:支持去抖的正交解码器,正反转实现快速音量大小调节

    4. LED模块:7 个可编程 RGB LED(WS2812 协议,SPI DMA 驱动),2个单色模式指示灯(NUM/CAPS),一个RGB模式指示灯,分别指示各模式下的连接状态

    5. 电量检测:ADC 电池电量监测

    6. 三模连接功能(2.4G/BLE/USB)

    7. 多级低功耗管理(待机 / 深度睡眠)

    8. 固件 OTA 升级(DFU via USB)

    9. EMI测试

2 环境要求

  • board: pan108xxA3(芯片型号)键盘板

  • USB升级工具(USB升级工具获取:https://docs.panchip.com/pan1080dk-doc/latest/docs-zdk/06_dev_tools/pan108x_toolbox_intro.html)

  • 键盘测试工具:KEYTEST.exe

3 编译和烧录

例程位置:zephyr\samples_panchip\solutions_hid\memb_kb

使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍

4 演示说明

芯片全部擦除还原默认状态,准备好烧录common_dongle的接收器(PAN271或PAN1010)

4.1 电池供电模式

硬件支持锂电池供电

1、电池供电模式下3.4V低压报警(模式指示灯M-LED红色快闪),3.4V进入休眠状态,在不同的灯效下可能会提前进入低压报警状态

2、电池供电模式下,无任何按键按下的情况下,30s 后关闭RGB灯光,2.4G模式60s 后进入休眠,BLE模式保持连接状态,30分钟后进入休眠

4.2 USB供电模式

USB供电后,键盘不进入休眠状态

4.3 用户交互说明(按键组合)

4.3.1 模式切换(短按)

按键组合

功能

说明

FN + 1

切换到 BLE 设备 1

连接已配对的蓝牙设备 1

FN + 2

切换到 BLE 设备 2

连接已配对的蓝牙设备 2

FN + 3

切换到 BLE 设备 3

连接已配对的蓝牙设备 3

FN + 4

切换到 2.4GHz PRF

使用 2.4GHz 接收器

FN + 5

切换到 USB 有线

使用 USB 数据线

4.3.2 配对操作(长按 ≥ 2s)

按键组合(长按)

功能

说明

FN + 1 长按

BLE 设备 1 重新配对

进入广播,等待新设备连接

FN + 2 长按

BLE 设备 2 重新配对

进入广播,等待新设备连接

FN + 3 长按

BLE 设备 3 重新配对

进入广播,等待新设备连接

FN + 4 长按

PRF 重新配对

重置 2.4GHz 配对信息,广播等待接收器

FN + C 长按

清除当前通道配对信息

删除当前通道(BLE 或 PRF)的配对信息

4.3.3 LED 控制(短按)

按键组合

功能

对应事件

FN + ESC

背光灯开/关

USER_EVENT_LED_RGB_ON_OFF

FN + Insert

切换背光灯灯效模式

USER_EVENT_LED_RGB_MODE_SWITCH

FN + PGUP

背光灯亮度增加

USER_EVENT_LED_RGB_BRIGHT_ADD

FN + PGDN

背光灯亮度降低

USER_EVENT_LED_RGB_BRIGHT_SUB

FN + ←

背光灯效果速度降低

USER_EVENT_LED_RGB_SPEED_SUB

FN + →

背光灯效果速度增加

USER_EVENT_LED_RGB_SPEED_ADD

4.3.4 功能测试

按键组合

功能

说明

FN + 9

模式指示灯开/关

方便测试键盘整机电流

4.4 EMI测试(RF测试模式)

环境要求:

  • PAN1080 键盘板

  • USB TYPE-C线

  • PAN1080 ToolBox下载

测试说明:

  • TX模式,如下图所示:

    image

    RF TEST TX模式

    发包数必须设为0,当前不支持发包数的设置

  • RX模式,如下图所示:

    image

    RF TEST RX模式

  • TX单载波模式,如下图所示:

    image

    RF TEST 单载波模式

4.5 USB升级(DFU)

USB DFU 升级操作可以参考 05_TOOLS\量产烧录工具\Panchip DFU Tool 最新版本的帮助内容内的操作说明,以下说明升级需要注意的点及原理

关于boot的文档可以参考https://docs.panchip.com/pan1080dk-doc/latest/docs-zdk/04_dev_guides/zephyr_bootloader_guidance.html

4.5.1 升级说明

双区升级: SDK中编译默认使用双区升级的方式(编译时选择prj.conf,APP分为slot0和slot1两个区,每个区为152KB,具体划分地址见上面文档描述),DFU升级时,待升级的固件先暂存在slot1,升级完成后搬运到 slot0 进行运行。

单区升级:

当客户应用程序比较大,单个slot(152KB)不够用时,可以考虑只用一个slot(将slot0和slot1合并),此时DFU升级会将直接放到slot0开始的位置。具体的实现方式是编译时选择prj_single_slot.conf文件。注意:这里只是切换了底层的boot固件,实际上要修改slot的大小还需修改工程下的memb_kb.overlay文件,在这个文件下加入以下内容:

/* Remove slot1 partition and increase slot0 partition for more code size */
/delete-node/ &slot0_partition;
/delete-node/ &slot1_partition;

&flash0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		slot0_partition: partition@30000 {
			label = "image-0";
			/* reg size 304K */
			reg = <0x00030000 0x0004C000>;
		};
	};
};

4.5.2 boot自定义编译说明

如果需要自定义更新mcuboot固件,需要注意以下对应关系,建议操作步骤如下

编译mcuboot,注意控制好相关的宏(CONFIG_MCUBOOT_PAN_USB_DFU或者CONFIG_MCUBOOT_PAN_USB_SPI)开启及编译board的选择

以自定义编译键盘固件为例

ZAL工具编译mcuboot工程,编译board选择xxa1,提前修改01_SDK\bootloader\mcuboot\boot\zephyr\prj.conf或者01_SDK\bootloader\mcuboot\boot\zephyr\prj_single_slot.conf内的宏,之后进行编译。编译后,将编译出的mcuboot.xxx文件复制到01_SDK\modules\hal\panchip\panplat\pan1080\bootloader\images\bootdfu_for_mouse目录下,替换目录下已有的5个文件(注意区分是否为single slot版本),之后再重新编译APP即可。

4.5.3 注意事项

使用具有保护功能的boot时,boot的VID为0x046D,PID为0xC077,usb name 为 boot dfu

通过上位机工具量产烧录工具\Panchip DFU Tool升级时,可以参考工具内文档说明的步骤进行升级,注意选择支持强制升级的版本

PS

程序运行在boot区时,点击重启芯片可以跳转到app区域,程序升级正常之前,重新上电即可继续升级正确固件

4.6 DeviceTool使用

配合上位机工具键鼠专用工具\PAN108x工具\MouseDeviceTool可以进行产线USB信息测试及单载波测试,具体操作可以参考工具内说明文档

默认界面支持自定义消息开发

显示界面可以切换到USB设置测试功能界面

5 开发说明

5.1 硬件架构说明

5.1.1 主要外设

PAN1080 SoC
├── BLE 5.x 射频(内置)
├── 2.4GHz PRF 射频(内置,兼容 XN297/NRF24L01+)
├── USB FS(全速)控制器
├── SPI0(主模式,驱动 WS2812 LED,DMA 传输)
├── ADC(电池电量采样)
├── QDEC(正交解码,音量旋钮)
├── GPIO(按键矩阵,USB插入检测)
└── NVS Flash(配对信息、LED信息存储)

5.1.2 引脚分配

引脚

功能

说明

P14 P15 P52 P31 P40 P41 P42 P43

ROW0~ROW7

上拉输入,检测按键

P22 P37 P36 P35 P34 P32 P33 P57 P56 P55 P54 P47 P46 P45 P26 P17 P16 P11 P01

COL0~COL18

开漏输出,逐列扫描

P13

USB_CHECK_PIN

USB 插拔检测

P12

LED_RGB_POWER

ARGB LED 总电源

P42

74HC595 数据(DS)

LED 移位寄存器数据(与按键矩阵IO共用)

P43

74HC595 移位时钟(SHCP)

LED 移位寄存器时钟(与按键矩阵IO共用)

P44

74HC595 锁存时钟(STCP)

LED 移位寄存器锁存

P20

QDEC A相(Z0)

音量旋钮

P21

QDEC B相(Z1)

音量旋钮

P02

USB DM

USB口

P03

USB DP

USB口

P10

ADC

ADC检测口

5.2 软件架构说明

memb_kb基于zephyr架构,进行多线程编程,线程静态初始化后,根据优先级进行先后初始化,之后各个线程运行至while(1)等待相应的信号量,以此通过控制信号量控制各个线程的调度关系

5.2.1 目录结构

samples_panchip/solutions_hid/memb_kb/
├── CMakeLists.txt                    # 构建入口,定义源文件列表
├── Kconfig                           # 配置选项定义
├── prj.conf                          # 主工程配置(功能开关)
├── prj_single_slot.conf              # DFU单区升级变体配置
├── sample.yaml                       # 工程元数据
├── memb_kb.overlay                   # 设备树覆盖(引脚、外设绑定)
│
├── src/                              # ★ 主源代码目录
│   ├── main.c                        # 系统初始化、模式检测、主循环入口
│   ├── common.h                      # 全局定义:宏、枚举、结构体、线程声明
│   │
│   │   # 三模通信模块
│   ├── keyboard_ble.c                # BLE蓝牙通信 (HOG协议)
│   ├── keyboard_prf.c                # 2.4G私有RF通信 (XN297协议)
│   ├── keyboard_usb.c                # USB HID通信
│   │
│   │   # 2.4G RF 子模块
│   ├── keyboard_prf_pair.c           # 2.4G配对逻辑
│   ├── keyboard_prf_freq_hop.c       # 2.4G跳频算法
│   ├── keyboard_prf_isr.c            # 2.4G中断回调处理
│   │
│   │   # 输入/输出模块
│   ├── keyboard_key.c                # 矩阵扫描、按键去抖、FN 组合键处理、LED、RGB实际执行
│   ├── keyboard_led.c                # LED 驱动(74HC595 + WS2812 + SPI DMA)
│   ├── keyboard_led_effect.c         # RGB灯效实现
│   ├── keyboard_qdec.c               # 正交编码器(音量旋钮)
│   │
│   │   # 系统管理模块
│   ├── keyboard_pm.c                 # 电源管理(深睡眠/待机)
│   ├── keyboard_battery.c            # 电池电量检测、看门狗喂狗
│   │
│   │   # 功能扩展模块
│   ├── keyboard_usb_dfu.c            # USB DFU固件升级
│   ├── keyboard_emi.c                # EMI测试模式
│   ├── keyboard_debug.c              # 调试工具(无用,可以移除)
│   ├── keyboard_test_report_rate.c   # 报告率测试(无用,可以移除)
│   │
│   └── utilities.c                   # 工具函数(NVS存储)
│
└── usb1.1/                           # ★ USB 1.1协议栈
    ├── usb_panchip.h/c               # Panchip USB驱动接口
    ├── musbfsfc.h/c                  # USB全速控制器
    ├── endpoint.h/c                  # 端点管理
    ├── endpoint0.h/c                 # USB 枚举相关
    └── descript.h                    # USB描述符定义

5.2.2 线程结构

线程列表

线程名

优先级

栈大小

职责

thread_key

1(高)

1024 B

矩阵扫描、按键处理、LED 刷新、电源管理

thread_prf

1(高)

1024 B

2.4GHz 数据发送、跳频管理

thread_usb

2

512 B

USB HID 数据发送

thread_emi

2

512 B

EMI 测试模式

thread_report_rate

2

512 B

上报率测试(跟主体功能无关,可以去掉)

thread_ble

3

1024 B

BLE HID 数据发送

thread_battery

7(低)

768 B

电池电量采样(1秒周期)

主要线程间同步(信号量)

主要线程间同步(信号量)

5.3 主要流程介绍

5.3.1 系统启动流程

系统启动流程

5.3.2 按键数据流

按键数据流

5.3.3 三模切换流程

三模切换流程

5.4 模块详细说明

5.4.1 主控模块 (main.c)

职责: 系统初始化、模式检测与初始化

// 工作模式枚举
enum keyboard_work_mode_t {
    keyboard_null_mode,      // 0: 无效模式
    keyboard_usb_mode,       // 1: USB有线模式
    keyboard_prf_mode,       // 2: 2.4G私有RF模式 (默认)
    keyboard_ble_mode,       // 3: BLE蓝牙模式
    keyboard_emi_mode,       // 4: EMI测试模式
};

初始化流程:

  1. 使能LVR (低电压复位)

  2. 检测复位原因 (正常启动/待机唤醒)

  3. 配置时钟 (DPLL 48MHz, APB1/2分频)

  4. 初始化Flash NVS存储

  5. 加载USB配置 (VID/PID/字符串描述符)

  6. 初始化各外设 (LED/按键/ADC/GPIO)

  7. 检测工作模式 (从NVS读取)

  8. 初始化对应模式模块

  9. 启动看门狗

5.4.2 按键扫描模块 (keyboard_key.c)

矩阵规格: 8行 × 19列 = 152键位

扫描流程:

1.get_key_row_state_change(KEY_SCAN_DEBOUNCE_CNT); //获取行列矩阵变化状态,包含去抖和鬼键处理
2.get_key_value();  //记录矩阵变化的具体位置
3.get_key_update_data(); //判断变化的具体动作:短按,长按,释放等操作
4.keyboard_report_handle(); //将变化的键值存入环形缓冲区,释放信号量通知各线程
5.get_volume_data(); //QDEC(音量旋钮)变化检测以及对应处理

按键状态机:

按键状态机

按键类型:

Report ID

类型

大小

说明

0x01(USB模式无ID)

标准键盘

8 字节

修饰键 + Reserved + 6 个普通键

0x02

无冲键盘

16 字节

支持 120 键全键无冲

0x03

多媒体

3 字节

播放/暂停/音量等

0x04

电源控制

2 字节

睡眠/唤醒/关机

0x05

鼠标

8 字节

移动/按键(模拟鼠标功能)

0x06

厂商自定义

64 字节

自定义功能

5.4.3 BLE通信模块 (keyboard_ble.c)

协议: HID over GATT Profile (HOGP)

GATT服务结构:

HID Service (UUID: 0x1812)
├── HID Information Characteristic
├── Report Map Characteristic (HID描述符)
├── Protocol Mode Characteristic
├── Report Characteristic (标准键盘) [Input + Output]
├── Report Characteristic (无冲键盘) [Input]
├── Report Characteristic (多媒体) [Input]
├── Report Characteristic (电源控制) [Input]
├── Report Characteristic (鼠标) [Input]
├── Report Characteristic (厂商) [Input + Output]
├── Boot Keyboard Input/Output
├── Boot Mouse Input
└── Control Point

多设备配对:

  • 支持3台BLE设备同时配对 (CONFIG_BT_MAX_PAIRED=3)

  • 设备名称: PanKB-MB{ID} (ID = 0/1/2,对应设备 1/2/3)

  • 设备地址存储在NVS: ble/peer0, ble/peer1, ble/peer2

连接参数:

// 默认连接参数
CONFIG_BT_PERIPHERAL_PREF_MIN_INT=6    // 7.5ms
CONFIG_BT_PERIPHERAL_PREF_MAX_INT=6    // 7.5ms
CONFIG_BT_PERIPHERAL_PREF_LATENCY=30   // 跳过30个连接事件
CONFIG_BT_PERIPHERAL_PREF_TIMEOUT=200  // 2秒超时

配对流程:

BLE 配对流程

5.4.4 PRF通信模块

核心配置 (keyboard_prf.c)

参数

说明

工作模式

PRF_MODE_ENHANCE

增强模式

芯片兼容

XN297

兼容PANCHIP系列接收器

物理层速率

2 Mbps

CRC

16-bit

发射功率(配对中)

-30 dBm

降低干扰

发射功率(已配对)

+7 dBm

最大功率

地址长度

4 字节

RX 超时

100 us

配对协议 (keyboard_prf_pair.c)

PRF 配对协议流程

配对流程:

  1. 键盘使用公共地址 {0x7b, 0x41, 0x29, 0x72} 在公共频道 2412MHz 发送配对请求

  2. Dongle 收到后回复 ACK,携带 Dongle 的 MAC 地址

  3. 键盘保存配对信息到 NVS (prf/paired_flag, prf/pair_mac_addr)

  4. 基于配对地址计算私有通信地址和跳频序列

  5. 切换到私有地址和跳频模式进行正常通信

跳频算法 (keyboard_prf_freq_hop.c)
// 基于设备地址生成8个跳频频道
void calculate_combo_freq(uint8_t *addr); // 由接收器 MAC 地址计算确定

跳频触发条件:

  • 连续 FREQ_HOP_NOACK_THREHOLD (默认5次) 未收到ACK

  • 自动切换到下一个频道重试

  • 遍历8个频道直到收到响应

数据包格式
┌──────────┬──────────┬───────────┬──────────────┬─────────────┐
│ 设备类型  │   seq    │  oppo_seq │   数据类型    │    数据     │
│  1 byte  │  1 byte  │  1 byte   │    1 byte    │   N bytes   │
└──────────┴──────────┴───────────┴──────────────┴─────────────┘

设备类型:
  - 0x00: 鼠标
  - 0x01: 键盘
  - 0x02: 大键盘
  - 0xFF: Dongle

数据类型 (高4位:主类型, 低4位:子类型):
  - 0x00: 空数据
  - 0x10: USB EP0 数据 (默认没有用到)
  - 0x11: USB EP1 数据 (标准键)
  - 0x12: USB EP2 数据 (多媒体/全键/鼠标)
  - 0x13: USB EP3 数据 (厂商:主要是用于驱动数据透传)
  - 0x20: 重传数据
  - 0x30: 自定义数据 (比如电量信息,休眠挂起等其它自定义消息)

seq: 发送序列号, 每次发送递增
oppo_seq: 对端序列号, 用于ACK确认
整体状态机

PRF 整体状态机

5.4.5 USB通信模块 (keyboard_usb.c)

端点配置:

端点

方向

用途

EP1

IN

标准键盘报告 (8字节)

EP2

IN/OUT

无冲/多媒体/全键/鼠标

EP3

IN/OUT

厂商自定义数据

EP0

IN/OUT

控制传输 (枚举/SET_REPORT)

USB状态机:

enum usb_stat_t {
    usb_none,       // 未初始化
    usb_active,     // 活跃状态
    usb_suspending, // 正在挂起
    usb_suspended,  // 已挂起 (可唤醒)
    usb_resuming,   // 正在恢复
};

USB状态机 USB插入检测:

  • 使用 GPIO P13 检测 USB插入和拔出

  • 插入时初始化 USB 时钟和中断

  • 拔出时关闭 USB 时钟

5.4.6 LED 模块 (keyboard_led.c)

硬件架构

LED分为2部分:背光灯和LED状态指示灯

  1. 背光灯(7×WS2812 RGB)

    • 每个RGB:24 位数据(8G + 8R + 8B,WS2812 格式)

    • 总数据:7 × 24 = 168 位/帧

    • 传输方式:SPI DMA,传输完成触发 ISR

  2. LED指示灯

    • 74HC595 移位寄存器控制NUM/CAP以及模式指示灯

背光灯效果模式

模式

说明

LED_MODE_FLOW_RAINBOW

彩虹流动

LED_MODE_FLOW_SINGLE

单色流动

LED_MODE_STATIC_R/Y/G/C/B/P/W

静态单色(红/黄/绿/青/蓝/紫/白)

LED_MODE_STATIC_MIX

多色混合静态

LED_MODE_BREATH

呼吸效果

LED_MODE_RAINBOW_CYCLE

彩虹循环

LED_MODE_CHASE

追逐效果

LED_MODE_WINDOW

窗口效果

亮度等级: 0(关)~ 4(最亮) 速度等级: 1(最慢)~ 5(最快)

LED 状态指示灯

状态

LED 表现

触发条件

BLE 配对中(通道1)

蓝色快闪

进入 BLE 配对广播

BLE 已连接(通道1)

蓝色常亮

BLE 连接建立

BLE 断开(通道1)

蓝色慢闪

BLE 连接断开

PRF 配对中

绿色快闪

进入 PRF 配对广播

PRF 已连接

绿色常亮

PRF 连接建立

PRF 断开

绿色慢闪

PRF 连接断开

USB 已连接

白色常亮

USB 枚举完成

USB 断开

白色慢闪

USB 断开/挂起

低电量

红色闪烁

电池电量低于阈值

5.4.7. 电池管理模块 (keyboard_battery.c)

ADC 采样参数

参数

说明

采样周期

1000 ms

每秒采样一次

平均次数

5 次

滤波

参考电压

1200 mV

电量阈值

阈值常量

ADC 值

动作

KB_LOW_POWER_ALARM

872

低电告警,LED 红色闪烁

KB_POWER_DOWN

824

电量严重不足,关机

电量上报
  • 通过 BLE BAS(Battery Service)上报给主机

  • 通过 LED 颜色/闪烁频率指示电量状态

5.5. 电源管理策略

5.5.1 2.4G低功耗状态

2.4G低功耗状态

5.5.2 BLE低功耗状态

BLE低功耗状态

5.5.3 低功耗模式配置

模式

唤醒源

RAM保持

Active

-

Idle (ble模式保留连接状态)

GPIO中断

Deep Sleep

GPIO中断

Standby (M1)

GPIO中断

5.6. 参数保存

NVS Flash 存储键值

键名

大小

说明

prf/paired_flag

1 字节

PRF 是否已配对

prf/pair_mac_addr

6 字节

PRF 接收器 MAC

prf/work_mode

1 字节

当前工作模式

ble/peer_addr/0~2

6 字节 ×3

BLE 对端地址

ble/own_addr/0~2

6 字节 ×3

BLE 本端地址

ble/dev_id

1 字节

当前 BLE 设备号

led/led_rgb_status

6 字节

RGB模式/亮度/速度/开关/状态

usb/vid

2 字节

USB VID

usb/pid

2 字节

USB PID

usb/str1

变长

USB 厂商字符串

usb/str2

变长

USB 产品字符串

FFR 信息区

  • 位置:Flash IVT 之后 0x302C0 偏移 64 字节

  • 内容:CID = CONFIG_APP_CID = 0x07D10005(应用标识,DFU防止误升级)

5.7. 配置说明

5.7.1 prj.conf 关键配置

# 串口打印配置(当需要开启打印时修改为y或者屏蔽这几个宏)
CONFIG_SERIAL=n
CONFIG_UART_INTERRUPT_DRIVEN=n
CONFIG_CONSOLE=n
CONFIG_UART_CONSOLE=n
CONFIG_PRINTK=n

# BLE配置 (可修改VID/PID/广播名称)
CONFIG_BT_DIS_PNP_VID_SRC=2
CONFIG_BT_DIS_PNP_VID=0x07d1
CONFIG_BT_DIS_PNP_PID=0x0005
CONFIG_BT_DIS_PNP_VER=1
CONFIG_BT_DEVICE_NAME="PanKB-MB"


# BOOT固件选择 (如果要修改为单区升级,使能CONFIG_SINGLE_APPLICATION_SLOT_APP=y)
CONFIG_MCUBOOT_IMAGE_TYPE=1

5.7.2 设备树配置 (memb_kb.overlay)

memb_kb.overlay的作用是使用下面的配置信息覆盖底层默认的配置

/ {
    chosen {
        zephyr,console = &uart0;
    };
};

/* 重新修改串口打印口 */
&uart0 {
    current-speed = <115200>;
    pinctrl-0 = <&p3_0_uart0_tx>;
    status = "okay";
};

/* 设置时钟源 */
&dpll {
    /* f(dpll_output) = f(dpll_input) / clock_div * clock_mult */
    clocks = <&clk_xth>;
    clock-div = <2>;
    clock-mult = <3>;  /* 48MHz */
    status = "okay";
};

/* 设置主频和总线分频 */
&rcc {
    clock-names = "clk_system", "clk_slow";
    clocks = <&dpll &clk_rcl>;
    clock-frequency-system = <48000000>;
    clock-frequency-slow = <32000>;
    ahb-prescaler = <1>;
    apb1-prescaler = <1>;
    apb2-prescaler = <4>;
};

/* 默认系统为A/B升级,如果flash不够,想修改为单区升级,加入下面内容,注意要配合CONFIG_SINGLE_APPLICATION_SLOT_APP=y使用 */
/* Remove slot1 partition and increase slot0 partition for more code size */
/delete-node/ &slot0_partition;
/delete-node/ &slot1_partition;

&flash0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		slot0_partition: partition@30000 {
			label = "image-0";
			/* reg size 304K */
			reg = <0x00030000 0x0004C000>;
		};
	};
};

6 补充说明

补充说明当前功耗测试情况,支持中遇到的问题(供参考)及已知仍可能存在的问题

6.1 功耗说明

LED开启的情况下,电流跟具体灯效有关,所以测试时需要关闭LED灯,按FN + ESC 打开/关闭背光RGB灯。NUM/CAPS指示灯通过对应的NUMCaps键关闭和打开。模式指示灯M-LED默认是常开的,通过 FN + 9打开和关闭。

2.4G功耗

模式

工作 mA

空闲 uA

(休眠 standby) uA

2.4G

1 - 1.3

900

40

蓝牙功耗

模式

工作mA

空闲 uA

一级休眠(30S关灯后)uA

无按键30分钟(休眠 deepsleep) uA

BLE

1.3 - 2

980

300

40

6.2 蓝牙启动时间说明

2.4G和蓝牙启动需要对controller进行初始化,controller初始化时间可以由log观测,目前测试启动时间为66ms

7 RAM/Flash资源使用情况

根据需求,可以选择512K/1M Flash 进行使用,以下以xxa3 board编译为例

Memory region         Used Size  Region Size  %age Used
           FLASH:      124312 B       152 KB     79.87%
            SRAM:       44492 B        54 KB     80.46%