2024年7月16日发(作者:烟欣可)
使用指南
N32WB03x SDK使用指南
简介
此文档的目的在于让使用者能够快速熟悉N32WB03x系列蓝牙SOC芯片的开发套件以及Keil
MDK-ARM的相关设定,以减少开发前期的准备时间,降低开发难度
1 / 12
目录
简介 ............................................................................................................................................................................. 1
1 SDK/开发固件文件目录结构 ................................................................................................................................... 3
1.1
FIRMWARE
................................................................................................................................................................... 3
1.2
MIDDLEWARE
............................................................................................................................................................... 3
1.3
UTILITIES
..................................................................................................................................................................... 4
1.4
PROJECTS
..................................................................................................................................................................... 4
2 项目配置与烧录 ....................................................................................................................................................... 6
2.1
编译环境安装............................................................................................................................................................ 6
2.2
固件支持包安装 ........................................................................................................................................................ 6
2.3
编译环境配置............................................................................................................................................................ 6
2.4
编译与下载................................................................................................................................................................ 7
2.5
BLE工程目录结构 ..................................................................................................................................................... 7
3 MEMORY分配 ......................................................................................................................................................... 9
3.1
F
LASH
分配 .................................................................................................................................................................. 9
3.2
RAM ........................................................................................................................................................................... 9
4 系统时钟 ................................................................................................................................................................. 10
4.1
不带蓝牙协议栈例程 .............................................................................................................................................. 10
4.2
蓝牙例程 ................................................................................................................................................................. 10
5 版本历史 ................................................................................................................................................................. 11
6 声明 ......................................................................................................................................................................... 12
2 / 12
1 SDK/开发固件文件目录结构
SDK 目录下是一个以固件库版本命名的文件,其中包含四个子文件夹:
1.1 firmware
◼ CMSIS:
微控制器软件接口标准,是Cortex-M处理器系列的与供应商无关的硬件抽象层, CMSIS提供了内核与外设、
实时操作系统和中间设备之间的通用接口。
⚫ 包含了用来访问内核的寄存器设备的名称定义,地址定义和配置函数。该接口包括调试通道定义。
⚫ 提供片上所有外设的定义,包括所有外设寄存器头文件、启动文件、系统初始化模板文件。
◼ n32wb03x_std_periph_driver:
芯片外设的标准驱动函数,包括.c 的源文件和.h 的头文件。用户可移植到项目中,快速完成对某个外设模
块的使用。
1.2 middleware
中间层固件,主要如下两个目录:
◼ Third_Party
⚫ FreeRTOS: FreeRTOS相关库
3 / 12
◼ Nationstech
⚫ ble_library: 蓝牙BLE相关库
◆ ns_ble_stack: ble蓝牙协议栈头文件
◆ ns_ble_profile: ble profile库源码
◆ ns_library: ble程序其他库源码,包含log,sleep和timer等
1.3 utilities
工具软件目录, 里面主要包含:
◼ dfu
dfu固件升级相关工具软件目录和调用这些工具的bat脚本
⚫ Image:使用bat脚本生成的bin文件和用于DFU演示的bin文件
⚫ JLink:烧录工具
⚫ Keys:用于生成dfu升级bin的密匙
⚫ NSAndroidUtil: DFU测试APK
⚫ NSUtil:串口升级工具软件和源码
1.4 projects
Projects目录包含开发板目录,开发板目录下包含:
◼ bsp:包含调试串口打印功能的log函数,用于外设例程在调试过程答应各种调试信息。
◼ application:应用例程,使用了多种外设或者功能需求的综合性例程
⚫ peripheral_alone: 外设综合例程,包含串口通信,TIM的PWM输出,ADC读取和转为电压,IO
输出,IO输入中断响应和RTC休眠唤醒
⚫ FreeRTOS:Freertos相关例程
◼ ble:蓝牙从机例程,通过对具体profile的蓝牙例程了解蓝牙程序开发的基本方法
⚫ dis:设备服务例程
⚫ hid_mouse: 蓝牙鼠标例程
⚫ rdtss: 蓝牙数传例程(128bit UUID),包含DFU空中升级项目选项
⚫ rdtss_16bit: 蓝牙数传例程(16bit UUID),包含DFU空中升级项目选项
⚫ rdtss_3s: 蓝牙数传例程(128bit UUID), 支持连接3个主机设备的多连接例程。
⚫ heart_rate: 蓝牙心率服务例程
4 / 12
⚫ blood_pressure: 蓝牙血压服务例程。
◼ ble_central:蓝牙主机例程
⚫ central_rdtsc:蓝牙数传服务主机例程。可以配合rdtss例程使用。
⚫ central_rdts_c&s:蓝牙数传服务主机和从机模式切换例程。可以配合rdtss或central_rdtsc例程使用。
⚫ central_rdtsc_3m:蓝牙数传服务主机例程,支持连接3个从机的多连接例程。
⚫ central_relay_1m1s:蓝牙数传服务中继例程,即一主一从同时工作。可以配合rdtss例程使用。
◼ dfu:设备固件升级例程
⚫ common: dfu公共库目录
⚫ app_ota:蓝牙空中升级例程
⚫ image_update:单bank模式下,image_update例程源码
⚫ app_usart:串口升级例程(跳转masterboot)
⚫ masterboot:固件升级boot,包含串口升级,固件校验和跳转
◼ prod_test: 量产测试例程
⚫ DTM_Test:标准HCI接口DTM指令测试例程,默认串口USART1(PB6和PB7),需要连接蓝牙
测试仪测试。
⚫ RF_Test:支持串口指令启动BLE TX,RX和定频测试,可以连接PC上位机发送指令。
◼ peripheral: 包含各个外设功能模块的例程项目,实现每个外设模块的基本功能应用开发,用户可以通过
这些例程项目快速了解芯片外设用法。
5 / 12
2 项目配置与烧录
2.1 编译环境安装
请安装KEIL MDK-ARM开发环境,版本要求为V5.00以上,建议使用V5.24.2.0。
2.2 固件支持包安装
双击运行N32WB03x_安装Keil芯片支持包。
2.3 编译环境配置
注:所有例程已经按如下配置完成,所以运行例程不需要重新配置编译环境。
◼ Target页的FLASH和RAM配置
⚫ 不包含ble功能项目
⚫ 包含ble功能项目target页
⚫ 带DFU功能项目,请参考《固件升级使用指南.PDF》
◼ Linker页
⚫ 勾选使用Target页的memory配置
⚫ 带ble项目需要加middlewaresNationstechble_libraryns_ble_stacksymdefsymbol_文件于
Misc control,注意包含蓝牙主机功能的程序使用的obj文件是symbol_g15_
6 / 12
◼ Debug页
⚫ 调试器选择CMSIS-DAP Debugger作为开发板上的NS-Link
⚫ Setting页面如下图
2.4 编译与下载
◼ 编译:点击菜单的build按钮
◼ 下载:点击菜单的download按钮
◼ 调试:点击菜单的start/stop debug session按钮
注意:下载程序后无法继续再下载
◼ 可能1: 代码中将SWDIO/SWDCLK用作其他用途,导致仿真接口失效。一般情况下不建议使用仿真引
脚用作其他功能设计
◼ 可能2: 芯片进入低功耗sleep模式,此时仿真接口失效,需要在唤醒状态下下载。
2.5 BLE工程目录结构
以rdtss蓝牙项目工程为例
◼ Project Target
⚫ N32WB03x: 蓝牙工程,不带DFU配置,一般ble项目只有这个target
⚫ OTA_IMG_1:带蓝牙OTA工程,配置为Bank1地址
⚫ OTA_IMG_2:带蓝牙OTA工程,配置为Bank2地址
7 / 12
◼ 目录结构如下
⚫ STARTUP:芯片启动文件
⚫ CMSIS:芯片内核配置
⚫ FWLB:芯片外设驱动库
⚫ BLE_STACK:蓝牙BLE协议栈
⚫ BLE_PROFILE:蓝牙BLE profile
⚫ NS_DUF(可选):蓝牙OTA固件升级相关库
⚫ Crypto(可选):蓝牙OTA固件升级使用的加密相关库
⚫ NS_LIB:蓝牙应用相关库
⚫ BLE_APP:蓝牙应用代码
⚫ USER:用户应用代码
⚫ CONFIG:配置文件
⚫ DOC:说明文档
8 / 12
3 Memory分配
3.1 Flash分配
N32WB031芯片FLASH地址范围是0x01000000 - 0x0107FFFF,总空间为512K字节,分为BankA、BankB两个
Bank,空间大小分别是256K字节,BankA地址范围是0x01000000 - 0x0103FFFF,BankB地址范围是
0x01040000 - 0x0107FFFF。用户代码运行范围只能是其中一个Bank,默认使用BankA。注意N32WB031KC
系列FLASH空间是256K,即只有BankA区域。
需要使用固件升级功能请参考《固件升级使用指南.PDF》里面的FLASH内存分布章节。
Start address: 0x1000000
Bank A
Start address: 0x1040000
Bank B
3.2 RAM
N32WB031芯片RAM地址范围是0x20000000 - 0x2000BFFF,可用空间为48K字节
◼ 如果使用蓝牙功能,蓝牙协议栈将占用0x20000000 - 0x20003FFF,总共16K字节RAM,用户代码可以
使用0x20004000 - 0x2000BFFF,总共32K字节RAM
◼ 如果不用蓝牙功能,则用户代码可以使用全部48K字节RAM
Start address: 0x20000000
Start address: 0x20000000
BLE Stack 16K Byte
Start address: 0x20004000
User code 48K Byte
不使用蓝牙协议栈
User code 32K Byte
使用蓝牙协议栈
9 / 12
4 系统时钟
4.1 不带蓝牙协议栈例程
系统时钟源可以选择HSE或者HSI,所有外设例程默认使用HSI 64M作为系统时钟源。低速时钟源可以选择
外部晶体LSE 32.768K或者内部LSI 32K时钟源。
4.2 蓝牙例程
所有蓝牙例程默认使用HSI 64M作为系统时钟源,使用LSI作为低速时钟源,必须外接32M晶体为蓝牙射频
专用时钟源。系统时钟源不建议更改,低速时钟源可以选择外部晶体LSE 32.768K或者内部LSI 32K时钟源,
但是只能在蓝牙协议栈初始化函数里配置LSI或者LSE并初始化低速时钟源,用户代码后续不能切换低速时
钟源,否则将影响蓝牙协议栈的功能。
10 / 12
5 版本历史
日期
2021.08.05
2021.12.22
2022.03.31
版本
V1.0
V1.1
V1.2
修改
初始版本
添加主机例程部分描述
章节1.5添加蓝牙血压服务和主从切换例程。
章节2.2替换FLM文件描述为安装Pack包。
章节2.3增加主机OBJ文件描述。
章节3.1增加256K Flash版本芯片描述。
2022.12.29 V1.3 章节1.1移除doc章节
章节1.4增加例程描述:rdtss_3s, rdtsc_3m, DTM_Test和RF_Test.
11 / 12
6 声明
国民技术股份有限公司(以下简称国民技术)保有不事先通知而修改的权利。国民技术认为提供的信息准
确可信,尽管这样,国民技术对准确性和可靠性不承担任何责任。购买前请获取器件说明的最新版本。在
法律允许的最大范围内,任何明示、暗示或保证,包括但不限于适销性、特定用途适用性和第三方知识产
权侵权责任,国民技术概不承担不承认。在任何情况下,国民技术均不对因使用本产品而产生的任何直接、
间接、偶然、特殊、惩戒性或后果性损害负责,即使已告知可能发生此类损害。不建议应用于与生命相关
的设备和系统。国民技术对本手册拥有专属产权。未经明确许可,任何人不得以任何理由对本手册的全部
或部分进行使用、复制、修改、抄录、传播。
12 / 12
2024年7月16日发(作者:烟欣可)
使用指南
N32WB03x SDK使用指南
简介
此文档的目的在于让使用者能够快速熟悉N32WB03x系列蓝牙SOC芯片的开发套件以及Keil
MDK-ARM的相关设定,以减少开发前期的准备时间,降低开发难度
1 / 12
目录
简介 ............................................................................................................................................................................. 1
1 SDK/开发固件文件目录结构 ................................................................................................................................... 3
1.1
FIRMWARE
................................................................................................................................................................... 3
1.2
MIDDLEWARE
............................................................................................................................................................... 3
1.3
UTILITIES
..................................................................................................................................................................... 4
1.4
PROJECTS
..................................................................................................................................................................... 4
2 项目配置与烧录 ....................................................................................................................................................... 6
2.1
编译环境安装............................................................................................................................................................ 6
2.2
固件支持包安装 ........................................................................................................................................................ 6
2.3
编译环境配置............................................................................................................................................................ 6
2.4
编译与下载................................................................................................................................................................ 7
2.5
BLE工程目录结构 ..................................................................................................................................................... 7
3 MEMORY分配 ......................................................................................................................................................... 9
3.1
F
LASH
分配 .................................................................................................................................................................. 9
3.2
RAM ........................................................................................................................................................................... 9
4 系统时钟 ................................................................................................................................................................. 10
4.1
不带蓝牙协议栈例程 .............................................................................................................................................. 10
4.2
蓝牙例程 ................................................................................................................................................................. 10
5 版本历史 ................................................................................................................................................................. 11
6 声明 ......................................................................................................................................................................... 12
2 / 12
1 SDK/开发固件文件目录结构
SDK 目录下是一个以固件库版本命名的文件,其中包含四个子文件夹:
1.1 firmware
◼ CMSIS:
微控制器软件接口标准,是Cortex-M处理器系列的与供应商无关的硬件抽象层, CMSIS提供了内核与外设、
实时操作系统和中间设备之间的通用接口。
⚫ 包含了用来访问内核的寄存器设备的名称定义,地址定义和配置函数。该接口包括调试通道定义。
⚫ 提供片上所有外设的定义,包括所有外设寄存器头文件、启动文件、系统初始化模板文件。
◼ n32wb03x_std_periph_driver:
芯片外设的标准驱动函数,包括.c 的源文件和.h 的头文件。用户可移植到项目中,快速完成对某个外设模
块的使用。
1.2 middleware
中间层固件,主要如下两个目录:
◼ Third_Party
⚫ FreeRTOS: FreeRTOS相关库
3 / 12
◼ Nationstech
⚫ ble_library: 蓝牙BLE相关库
◆ ns_ble_stack: ble蓝牙协议栈头文件
◆ ns_ble_profile: ble profile库源码
◆ ns_library: ble程序其他库源码,包含log,sleep和timer等
1.3 utilities
工具软件目录, 里面主要包含:
◼ dfu
dfu固件升级相关工具软件目录和调用这些工具的bat脚本
⚫ Image:使用bat脚本生成的bin文件和用于DFU演示的bin文件
⚫ JLink:烧录工具
⚫ Keys:用于生成dfu升级bin的密匙
⚫ NSAndroidUtil: DFU测试APK
⚫ NSUtil:串口升级工具软件和源码
1.4 projects
Projects目录包含开发板目录,开发板目录下包含:
◼ bsp:包含调试串口打印功能的log函数,用于外设例程在调试过程答应各种调试信息。
◼ application:应用例程,使用了多种外设或者功能需求的综合性例程
⚫ peripheral_alone: 外设综合例程,包含串口通信,TIM的PWM输出,ADC读取和转为电压,IO
输出,IO输入中断响应和RTC休眠唤醒
⚫ FreeRTOS:Freertos相关例程
◼ ble:蓝牙从机例程,通过对具体profile的蓝牙例程了解蓝牙程序开发的基本方法
⚫ dis:设备服务例程
⚫ hid_mouse: 蓝牙鼠标例程
⚫ rdtss: 蓝牙数传例程(128bit UUID),包含DFU空中升级项目选项
⚫ rdtss_16bit: 蓝牙数传例程(16bit UUID),包含DFU空中升级项目选项
⚫ rdtss_3s: 蓝牙数传例程(128bit UUID), 支持连接3个主机设备的多连接例程。
⚫ heart_rate: 蓝牙心率服务例程
4 / 12
⚫ blood_pressure: 蓝牙血压服务例程。
◼ ble_central:蓝牙主机例程
⚫ central_rdtsc:蓝牙数传服务主机例程。可以配合rdtss例程使用。
⚫ central_rdts_c&s:蓝牙数传服务主机和从机模式切换例程。可以配合rdtss或central_rdtsc例程使用。
⚫ central_rdtsc_3m:蓝牙数传服务主机例程,支持连接3个从机的多连接例程。
⚫ central_relay_1m1s:蓝牙数传服务中继例程,即一主一从同时工作。可以配合rdtss例程使用。
◼ dfu:设备固件升级例程
⚫ common: dfu公共库目录
⚫ app_ota:蓝牙空中升级例程
⚫ image_update:单bank模式下,image_update例程源码
⚫ app_usart:串口升级例程(跳转masterboot)
⚫ masterboot:固件升级boot,包含串口升级,固件校验和跳转
◼ prod_test: 量产测试例程
⚫ DTM_Test:标准HCI接口DTM指令测试例程,默认串口USART1(PB6和PB7),需要连接蓝牙
测试仪测试。
⚫ RF_Test:支持串口指令启动BLE TX,RX和定频测试,可以连接PC上位机发送指令。
◼ peripheral: 包含各个外设功能模块的例程项目,实现每个外设模块的基本功能应用开发,用户可以通过
这些例程项目快速了解芯片外设用法。
5 / 12
2 项目配置与烧录
2.1 编译环境安装
请安装KEIL MDK-ARM开发环境,版本要求为V5.00以上,建议使用V5.24.2.0。
2.2 固件支持包安装
双击运行N32WB03x_安装Keil芯片支持包。
2.3 编译环境配置
注:所有例程已经按如下配置完成,所以运行例程不需要重新配置编译环境。
◼ Target页的FLASH和RAM配置
⚫ 不包含ble功能项目
⚫ 包含ble功能项目target页
⚫ 带DFU功能项目,请参考《固件升级使用指南.PDF》
◼ Linker页
⚫ 勾选使用Target页的memory配置
⚫ 带ble项目需要加middlewaresNationstechble_libraryns_ble_stacksymdefsymbol_文件于
Misc control,注意包含蓝牙主机功能的程序使用的obj文件是symbol_g15_
6 / 12
◼ Debug页
⚫ 调试器选择CMSIS-DAP Debugger作为开发板上的NS-Link
⚫ Setting页面如下图
2.4 编译与下载
◼ 编译:点击菜单的build按钮
◼ 下载:点击菜单的download按钮
◼ 调试:点击菜单的start/stop debug session按钮
注意:下载程序后无法继续再下载
◼ 可能1: 代码中将SWDIO/SWDCLK用作其他用途,导致仿真接口失效。一般情况下不建议使用仿真引
脚用作其他功能设计
◼ 可能2: 芯片进入低功耗sleep模式,此时仿真接口失效,需要在唤醒状态下下载。
2.5 BLE工程目录结构
以rdtss蓝牙项目工程为例
◼ Project Target
⚫ N32WB03x: 蓝牙工程,不带DFU配置,一般ble项目只有这个target
⚫ OTA_IMG_1:带蓝牙OTA工程,配置为Bank1地址
⚫ OTA_IMG_2:带蓝牙OTA工程,配置为Bank2地址
7 / 12
◼ 目录结构如下
⚫ STARTUP:芯片启动文件
⚫ CMSIS:芯片内核配置
⚫ FWLB:芯片外设驱动库
⚫ BLE_STACK:蓝牙BLE协议栈
⚫ BLE_PROFILE:蓝牙BLE profile
⚫ NS_DUF(可选):蓝牙OTA固件升级相关库
⚫ Crypto(可选):蓝牙OTA固件升级使用的加密相关库
⚫ NS_LIB:蓝牙应用相关库
⚫ BLE_APP:蓝牙应用代码
⚫ USER:用户应用代码
⚫ CONFIG:配置文件
⚫ DOC:说明文档
8 / 12
3 Memory分配
3.1 Flash分配
N32WB031芯片FLASH地址范围是0x01000000 - 0x0107FFFF,总空间为512K字节,分为BankA、BankB两个
Bank,空间大小分别是256K字节,BankA地址范围是0x01000000 - 0x0103FFFF,BankB地址范围是
0x01040000 - 0x0107FFFF。用户代码运行范围只能是其中一个Bank,默认使用BankA。注意N32WB031KC
系列FLASH空间是256K,即只有BankA区域。
需要使用固件升级功能请参考《固件升级使用指南.PDF》里面的FLASH内存分布章节。
Start address: 0x1000000
Bank A
Start address: 0x1040000
Bank B
3.2 RAM
N32WB031芯片RAM地址范围是0x20000000 - 0x2000BFFF,可用空间为48K字节
◼ 如果使用蓝牙功能,蓝牙协议栈将占用0x20000000 - 0x20003FFF,总共16K字节RAM,用户代码可以
使用0x20004000 - 0x2000BFFF,总共32K字节RAM
◼ 如果不用蓝牙功能,则用户代码可以使用全部48K字节RAM
Start address: 0x20000000
Start address: 0x20000000
BLE Stack 16K Byte
Start address: 0x20004000
User code 48K Byte
不使用蓝牙协议栈
User code 32K Byte
使用蓝牙协议栈
9 / 12
4 系统时钟
4.1 不带蓝牙协议栈例程
系统时钟源可以选择HSE或者HSI,所有外设例程默认使用HSI 64M作为系统时钟源。低速时钟源可以选择
外部晶体LSE 32.768K或者内部LSI 32K时钟源。
4.2 蓝牙例程
所有蓝牙例程默认使用HSI 64M作为系统时钟源,使用LSI作为低速时钟源,必须外接32M晶体为蓝牙射频
专用时钟源。系统时钟源不建议更改,低速时钟源可以选择外部晶体LSE 32.768K或者内部LSI 32K时钟源,
但是只能在蓝牙协议栈初始化函数里配置LSI或者LSE并初始化低速时钟源,用户代码后续不能切换低速时
钟源,否则将影响蓝牙协议栈的功能。
10 / 12
5 版本历史
日期
2021.08.05
2021.12.22
2022.03.31
版本
V1.0
V1.1
V1.2
修改
初始版本
添加主机例程部分描述
章节1.5添加蓝牙血压服务和主从切换例程。
章节2.2替换FLM文件描述为安装Pack包。
章节2.3增加主机OBJ文件描述。
章节3.1增加256K Flash版本芯片描述。
2022.12.29 V1.3 章节1.1移除doc章节
章节1.4增加例程描述:rdtss_3s, rdtsc_3m, DTM_Test和RF_Test.
11 / 12
6 声明
国民技术股份有限公司(以下简称国民技术)保有不事先通知而修改的权利。国民技术认为提供的信息准
确可信,尽管这样,国民技术对准确性和可靠性不承担任何责任。购买前请获取器件说明的最新版本。在
法律允许的最大范围内,任何明示、暗示或保证,包括但不限于适销性、特定用途适用性和第三方知识产
权侵权责任,国民技术概不承担不承认。在任何情况下,国民技术均不对因使用本产品而产生的任何直接、
间接、偶然、特殊、惩戒性或后果性损害负责,即使已告知可能发生此类损害。不建议应用于与生命相关
的设备和系统。国民技术对本手册拥有专属产权。未经明确许可,任何人不得以任何理由对本手册的全部
或部分进行使用、复制、修改、抄录、传播。
12 / 12