xAN1503006_BLE静态秘钥在51822程序中的实现
Nordic nRF51822介绍
Nordic nRF51822介绍一、为什么大家会选择蓝牙nRF51822 ?nRF51822是功能强大、高灵活性的多协议SoC,非常适用于Bluetooth®低功耗和2.4GHz超低功耗无线应用。
nRF51822 基于配备 256kB flash + 16kB RAM的32位ARM® Cortex™ M0 CPU 而构建。
嵌入式2.4GHz收发器支持蓝牙低功耗及2.4GHz操作,其中2.4GHz模式与 Nordic Semiconductor的nRF24L 系列产品无线兼容。
nRF51822 还具备丰富的模拟和数字周边产品,可以在无需 CPU 参与的情况下通过可编程周边产品互联(PPI)系统进行互动。
灵活的31引脚GPIO映射方案可使I/O(例如串行接口、PWM 和正弦解调器)根据PCB需求指示映射到任何设备引脚。
这可实现完全的设计灵活性及引脚位置和功能。
nRF51822支持S110蓝牙低功耗协议堆栈及2.4GHz协议堆栈(包括Gazell),这两种协议堆栈在nRF518软件开发套件中均免费提供。
nRF51822 需要单独供电,如果供电范围在 1.8-3.6V之间,用户可选择使用芯片上的线性整流器,如果供电范围在 2.1-3.6V 之间,可以选择直流1.8V 模式和芯片上的DCDC 变压器。
DC-DC变压器的使用可在工作期间动态控制,并使nRF51822工作期间的射频峰值电流低于10 mA @ 3V供电(TX @ 0 dBm & RX)。
二、蓝牙nRF51822特点1.单芯片,高灵活性,2.4GHz多协议设备;2.32位ARM Cortex M0 CPU内核;3.256KB flash 16KB RAM;4.支持S110蓝牙低功耗协议堆栈;5.S110需要80kB内存空间;6.线程安全和运行时保护;7.事件驱动API;8.与nRF24L系列无线兼容;9.3种数据率(2Mbps/1Mbps/250kbps);10.+4dBm输出功率;11.-92.5dBm敏感度、蓝牙低功耗;12.用于最大化能源效率应用和代码简化的PPI系统;13.具备对每个周边产品进行自动能源管理的灵活能源管理系统;14.用于模拟和数字I/O的可配置I/O映射。
NRF51822-Eval-Kit-用户手册
6
NRF51822 Eval Kit 用户手册
微雪电子
2.5 各程序功能简介
a) 以下所有程序路径为:<code path>\BLE4.0\nrf51822\Board\pca10001 且所有跳线都已连接。 b) 下表中的步骤序号,请参考表格下方的备注栏。 c) 操作涉及步骤②的,下载方法请参考上文“编译下载 ble_app_hrs 测试程序”。 d) 其他的程序下载方法请参考上文“编译下载 blinky_example 测试程序”
核心板介绍:
Core51822参数:
主控芯片:nRF51822 通信距离: 30m (条件: 空旷区域 / 1M速率) 工作频段:2.4GHz 工作电压:2.0V ~ 3.6V 温度范围:-40℃ ~ 85℃ 尺寸:24.5mm x 32.26mm(PCB) 接口: 除P0.26和P0.27外, 所有I/O 接口 排针间距:2.00mm 两侧排针间距:18.00mm 天线:板载天线
NRF51822 Eval Kit 用户手册
微雪电子
NRF51822 Eval Kit 用户手册
产品介绍:
nRF51822是一款为超低功耗无线应用(ULP wirelesss applications)打造的多协议单芯片解决方案。 它整合了Nordic一流的无线传送器,同时支持Bluetooth(R) low energy 和专用的2.4GHz协议栈。
微雪电子
图 5.
KEIL下载报错
答: 请确保正确安装SDK,Flash Dodnload 设置如下:
图 6.
Flash Dodnload 设置
8
NRF51822 Eval Kit 用户手册 问: 阅读完该手册后,如何进一步学习? 答: 请仔细阅读chip PDF文件夹中相关文档,以及官方提供的参考手册: 资料包\code\BLE4.0\Documentation\index.html。
STM32- nRF51822蓝牙低功耗(BLE)系统解决方案
AN4605应用笔记STM32- nRF51822蓝牙低功耗(BLE)系统解决方案介绍本应用笔记介绍了蓝牙低功耗(BLE)嵌入式软件(X-CUBE-nRF51DRV)实现对STM32L0系列和nRF51822,并解释如何界面自己的应用程序,并创建BLE服务。
在X-CUBE-nRF51DRV主要特点如下:•与北欧提供的BLE型材兼容性•应用程序集成就绪•易于附加在STM32L0系列低功耗解决方案BLE•极低STM32L0 CPU负载(HRS 1秒更新率0.127%)•没有对STM32L0系列延迟要求•小STM32L0内存占用在X-CUBE-nRF51DRV软件是基于STM32CubeL0 HAL驱动程序(见第2节)。
同时提供了使用北欧BLE服务于客户STM32L0应用实例。
该参考硬件平台是STM32-nRF51822基于STM32Nucleo / 64上和Wavetek公司蓝牙LE与盾北欧BLE模块nRF51822。
注:X-CUBE-nRF51DRV可以移植到其它STM32系列。
目录1引用。
72 STM32Cube概述。
83,嵌入式软件的定义。
9 4入门。
114.1 BLE系统描述。
0.114.2特性。
0.114.3硬件/软件的快速设置。
125参考平台。
13 5.1接口描述。
13 5.2 UART 4线接口。
145.3重置系统。
145.3.1上电复位。
155.3.2系统复位。
155.4器件编程。
166嵌入式软件的描述。
186.1 UART接口。
186.1.1 BLE SD FW模块。
196.1.2低功耗经理。
206.1.3中断。
206.1.4语境经理。
206.1.5配置。
21当BLE功能使用6.1.6 STM32资源需求。
216.1.7集成。
226.1.8可移植性。
226.2定时器接口。
236.2.1 BLE SD FW模块。
256.2.2初始化。
256.2.3用户模块。
266.2.4中断。
46.2.5语境经理。
NRF51822 DFU使用笔记
DFU使用笔记BLE空中升级修订历史2017-2-8K[公司地址]目录1. 概述 (1)2. 服务创建 (1)3. 操作流程 (2)3.1下载dfu Bootload (2)3.2准备升级的image (2)3.3执行升级 (2)4. 交互过程 (3)1. 概述DFU(Device Firmware Updates设备固件升级),一般指的是在产品已经发布后,通过某种方式,更改产品的固件,来完成产品的bug修复和新特性的支持。
DFU的方式有很多种,本文档只讨论使用OTA(Over-the-Air空中升级)的方式。
DFU控制器通过BLE将升级程序传输到待升级的设备中,待升级设备将自己完成固件替换,如图1.1为两者角色关系。
一般为手机APP MWV602图1.1 角色关系注:关于DFU Controler,目前使用的是nRF Toolbox工具,现在完成的进度是手机和MWV602完成两者交互过程,并没有完成协议栈分区以及Flash实际程序更新。
由于Flash变更、协议栈以及时间的关系,没有进行下一步工作。
nRF Toolbox是Nordic公司的APP,没有对源码进行任何修改,MWV602的DFU也是从官方移植过来。
蓝牙SIG组织并没有规定DFU的传输协议,由厂商自由发挥,本文档参考的是Nordic 定义的一套升级协议。
2. 服务创建DFU升级服务使用了两个特征值,一个特征值用于传输升级程序,另外一个特征值用于完成整个控制信息,两者缺一不可。
表2.1 特征值要求创建服务后的效果如图2.1所示。
图2.1 dongle发现的DFU服务3. 操作流程3.1 下载dfu Bootload打开DFU工程所在路径:{…}\jm_soc_1.1\Project\prj_dfu\Keil直接下载即可。
3.2 准备升级的image1)获取app的二进制镜像文件,在Keil环境下可添加以下命令生成。
fromelf --bin --output . <outfile.bin><infile.axf>假设生成的文件名称为ble_app_hrs.bin。
蓝牙 nRF51822 应用
蓝牙nRF51822 应用(基于低功耗蓝牙技术的温湿度传感器节点的设计)关键字:低功耗蓝牙温湿度传感器nRF51822 SHT11随着兼容蓝牙4.0标准的智能手机逐步普及,低功耗蓝牙技术也面临着越来越广泛的应用。
本设计采用了nRF51822和SHT11设计了一种基于低功耗蓝牙技术的温湿度传感器节点,能够将节点位置的温度和湿度发送给主机用于显示,可广泛应用于家庭、车间、仓库的温湿度监控。
1.引言在智能家居和物联网飞速发展的背景下,基于蓝牙4.0标准的低功耗蓝牙(Bluetooth Low Energy,BLE)技术正被逐步地为人们重视。
随着兼容蓝牙4.0标准的智能手机逐步普及,低功耗蓝牙技术也面临着越来越广泛的应用。
本设计采用了基于BLE技术的nRF51822蓝牙SoC芯片和SHT11温湿度传感器设计了一种基于低功耗蓝牙技术的温湿度传感器节点,能够将节点位置的温度和湿度发送给主机用于显示,可广泛应用于家庭、车间、仓库的温湿度监控。
节点采用了低功耗设计,可用一枚纽扣电池供电,实际使用时间可达1年以上。
2.系统结构本设计的系统结构如图1所示,系统的处理器模块由nRF51822构成,温湿度传感器件采用SHT11,电源采用纽扣电池供电;由处理器模块、温湿度传感器模块、天线模块、电源模块构成的节点与主机通过2.4GHz的低功耗蓝牙信号通信,主机采用智能手机运行信息采集显示的APP。
多个节点可利用应用层协议与主机组成星形网络。
图1 系统结构图3.硬件电路温湿度传感器节点硬件的系统构成如图2所示。
图2 硬件系统结构图3.1 处理器模块处理器模块选用Nordic公司的nRF51822芯片。
nRF51822是具有CORTEX-M0低功耗内核,支持BLE、Gazell等多协议的低功耗高速率射频收发器的SoC。
其具有高集成度、低成本、处理能力强、低功耗、小体积等优势,非常适合低功耗蓝牙产品的应用。
该芯片具有以下特性:具有Cortex-M0内核,片上256KB FLASH,16KB RAM,片内包含支持BLE协议的2.4GHz射频收发器。
nRF51822芯片上的BLE蓝牙协议栈
nRF51822芯片上的BLE蓝牙协议栈本文介绍了在nRF51822芯片上使用S110 SoftDevice协议栈构建一个最小的BLE应用的过程。
1初始化介绍有一些初始化函数通常在执行一个BLE应用之前调用,下面的表格中列出了这些初始化调用函数,在后面将对它们进行详细的介绍。
大部分采用数据结构的形式作为输入参数,这些数据结构包含一系列的配置和选项信息,阅读代码中的注释能更好地理解它们。
在广播开始之后,你就进入了main函数中的for循环。
2 协议栈S110 SoftDevice为了使用独特的射频特性,你必须使能S110 SoftDevice协议栈。
见《S110 nRF51822 SoftDevice Specification》(S110 nRF51822 SoftDevice协议栈说明书)中对硬件资源的详细需求。
3 广播用于广播的数据结构如下:ble_gap.h 中ble_gap_conn_sec_mode_tble_advdata.h 中ble_advdata_t注意:传递给sd_ble_gap_device_name_set()的安全模式仅适于设备本身的名字。
广播参数(ble_gap_adv_params_t)必须通过sd_ble_gap_adv_start()来传递:4 连接参数SDK提供了一个名为ble_conn_params的模块用于管理连接参数更新,它通过SoftDevice API进行处理,包括请求的时间和第一次请求被拒绝再发送一个新的请求。
在初始化结构体ble_conn_params_init_t中,定义了更新过程的有关参数,例如,是否开始连接,什么开始写入一个特定的CCCD,是否使用连接参数,发送更新请求的延时等等。
在初始化函数ble_conn_params_init()中,使用封装了初始化连接参数(ble_gap_conn_params_t)的结构体ble_conn_params_init_t作为输入参数进行连接参数初始化。
Noridc nRF51822 BLE to UART
Gandy Huang
1 Gandy.huang@
Open
• C:\Keil\ARM\Device\Nordic\nrf51822\ Board\pca10001\s110\experimental\bl e_app_uart
2
可以修改蓝牙参数
8
蓝牙的接收数据传输
void nus_data_handler(ble_nus_t * p_nus, uint8_t * p_data, uint16_t length) { //接收入口
// // // // // }
uint32_t err_code = ble_nus_send_string(&m_nus, p_data, length); //发送函数 if (err_code != NRF_SUCCESS) { //如果不成功,需要安排重新发送 } for (int i = 0; i < length; i++) //默认是串口打印出来,这里更改为直接BLE数据返回 { simple_uart_put(p_data[i]); } simple_uart_put('\n');
7
UUID更改
1 打开ble_nus.c 2 更改下面UUID,记得APP也需要同步修改 uint32_t ble_nus_init(ble_nus_t * p_nus, const ble_nus_init_t * p_nus_init) { uint32_t err_code; ble_uuid_t ble_uuid; ble_uuid128_t nus_base_uuid = {0x9E, 0xCA, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x00, 0x00, 0x40, 0x6E};
NORDIC蓝牙芯片NRF51822说明
nRF51822芯片主要特性
1:2.4G多协议(蓝牙4.0/私有协议) 2:32位ARM Cortex M0处理器(256/128KBytes Flash/16KBytes RAM) 3:工作在私有协议时:250K/1M/2Mbps空中速率 4:工作在蓝牙4.0协议时:1Mbps空中速率 5:RSSI,范围-90至-40dBm,1dBm分辨率 6:发射功率4/0/-4/-8/-12/-16/-20dBm 7:动态载荷长度最多256Bytes 8:简单的system ON/OFF工作模式 9:内置16MHz晶体振荡器和32.768KHz阻容振荡器 10:可通过SPI/I2C/UART接口与外设通信 11:可灵活配置的31个GPIO 12:6*6mm QFN 48-pin 封装 13:内置DC/DC功能,工作电压1.8-3.6V
型号 RSSI 协议 动态载荷 GPIO 封装 DC/DC 工作电压
LE1
无私有Biblioteka 议32Bytes无
Q24 Q32 Q48 Q48
无
1.9-3.6
51822
有 -90至40dBm
蓝牙协议 私有协议
256Bytes
自定义 31个 GPIO
有 2.1-3.6
1.8-3.6
nRF51822与其它蓝牙芯片对比
1:TI
2:CSR
3:美国博通
一、 MCU
■51822:32位ARM-M0, 256K(Flash)+16K(RAM),用ARM的客户群体非 常多,开发资源也非常丰富。 ■ TI:8位8051内核,决定了在性能上不能很好满足 蓝牙协议的运行,且功耗较高。 ■ CSR:自有16位MCU,需外挂Flash/EEPROM, 无法对产品进行加密,同时增加了相应的成本和 PCB板面积。
基于NORDICNRF51822芯片开发的智能牙刷的实现
基于NORDICNRF51822芯片开发的智能牙刷的实现近几年来随着物联网的发展以及低功耗蓝牙的广泛应用,可穿戴的智能设备和微型控制器设备受到广泛的关注。
基于Nordic NRF51822开发的蓝牙智能牙刷是一款可以与手机APP通过低功耗蓝牙进行连接并且可以相互操作的电动牙刷。
主要实现了低功耗、手机与牙刷互动、大数据存储、pH检测、压力检测并反馈、故障报警等功能。
该牙刷是充分利用了NRF51822的优越性能的同时考虑到现在人们对手机的依赖以及对功能多样性的要求,并且结合口腔医学设计而成。
在考虑到物联网这一热门理念时,将手机通过APP和蓝牙通信与牙刷结合起来形成一个完整的循环给用户更好、更新奇的体验。
标签:物联网;低功耗;蓝牙手机;多功能doi:10.19311/ki.16723198.2016.13.0221 引言1.1 项目背景物联网即“Internet of things”一般简称为IoT,是新一代信息技术的一部分也是现代科技提倡的信息化发展的重要环节。
顾名思义,物联网就是物与物相连接,包含两个重要组成部分:相互连接通讯的网络和途径;具体连接的智能设备或者传感器。
因此创新就是物联网的关键,而用户要求和用户体验则是我们进行物联网开发的灵魂。
Nordic推出的自带低功耗蓝牙模块的MCU—NRF51822是一款非常强大的,高度灵活的多协议的系统级芯片,非常适合用于蓝牙智能和24GHz 的超低功耗无线应用。
基于NRF51822开发的智能牙刷就是基于物联网理念进行开发的一款智能产品,通过低功耗蓝牙与手机通讯,手机APP通过WiFi或者运营商提供的移动网络与服务器连接传递有用信息。
同时注重创新首次结合口腔医学健康知识把PH模块以及检测牙齿所受到压力、适宜个人调节牙刷震动频率等功能集成起来,能够给用户提供一个自定义的健康的能够直接监控口腔以及刷牙过程中各个参数的有科技含量的智能牙刷。
1.2 设计思路本项目由于涉及功能较多,使用的芯片NRF51822也只是一款Nordic推出的自带低功耗蓝牙协议的MCU并不能进行多线程操作,因此需要单个功能模块进行详细设计之后,结合用户要求以及软件合理性并且考虑到功耗问题,对各个功能模块分配优先级并按照不同的优先级进行整合从而形成一个完整的符合预期目标的产品。
nRF51822 AK II上手指南(中文)
OHTCOMTechnology Ltd.nRF51822 Application KitnRF51822User Guide v1.2Copyright © 2013 Ohtcom Technology. All rights reserved.1 介绍nRF51822 Bluetooth® low energy/2.4 GHz Application Kit (AK II) 提供了一整套的测试和应用nRF51822的解决方案。
nRF51822是nRF51 系列中的一员,它是一个超低功耗(ultra-low power),单片系统 (SoC) 的2.4 GHz 无线通信解决方案.1.1 最小系统要求• nRFgo Studio v1.14 或更高版本• Windows XP or Windows 71.2 外部资源• Keil MDK-ARM Lite v4.54或更高版本https:///demo/eval/arm.htm• J-Link Software v4.52b或更高版本/jlink-software.html1.3 Writing conventions这篇用户指南遵从了一些排版规则,这样能够使文章更加连贯,更加易于阅读。
以下是使用到的协作约定::• 命令使用Lucida Console.• 芯片管脚使用Consolas.• 文件名和用户接口使用bold.• 内部关联采用斜体并使用semi-bold.1.4 Application kit 发布说明Date Kit version Description2013年8月10日0.1Init.2013年8月19日0.2 加入蓝牙测试部分2013年8月25日0.3整合USB Dongle介绍.2013年8月28日0.4 完成度50%,增加200%的内容。
2013年9月5日0.8 修改一些排版错误,加入AK II board和USB dongle的特点介绍2013年9月7日0.9 增加文档目录树及说明2013年10月17日 1.0 全新AK II发布,修改相关内容2013年11月13日 1.02 增加注意事项2013年11月20日 1.1 加入AK board 下载程序的硬件连接部分2013年12月13日 1.2 更新USB dongle22 套件内容nRF51822 Application Kit 的硬件资料以及相关软件和文档。
(原创)使用nRF51822nRF51422创建一个简单的BLE应用---入门实例手册(中文)之二
(原创)使⽤nRF51822nRF51422创建⼀个简单的BLE应⽤---⼊门实例⼿册(中⽂)之⼆2 BLE介绍本章将介绍BLE协议不同的层,包括各个层的部件和它们的概念。
2.1 通⽤访问规范(Generic Access Profile,GAP)GAP是应⽤层能够直接访问BLE协议栈的最底层,它包括管理⼴播和连接事件的有关参数。
注意:GAP的更多详细介绍见《Bluetooth Core Specification》(蓝⽛核⼼规范)的第3卷C部分。
2.1.1 ⾓⾊为了创建和维持⼀个BLE连接,引⼊了“⾓⾊”这⼀概念。
⼀个BLE设备不是集中器⾓⾊就是外围设备⾓⾊,这是根据是谁发起这个连接来确定的。
集中器设备总是连接的发起者,⽽外围设备总是被连接者。
集中器和外围设备的关系就像链路层中的主机和从机的概念。
在LED Button应⽤例程中,使⽤S110 SoftDevice烧录到nRF51822作为外围设备,计算机或者⼿机作为集中器。
除了集中器⾓⾊和外围设备⾓⾊,蓝⽛核⼼规范还定义了观察者⾓⾊和⼴播者⾓⾊,观察者⾓⾊监听空中的事件,⼴播者⾓⾊只是⼴播信息⽽不接收信息。
观察者⾓⾊和⼴播者⾓⾊都只⼴播⽽并不建⽴连接。
它们在我们的这个应⽤中并不适⽤。
注意:在⼀个连接的另⼀端的设备被称为对等设备,不管它是集中器还是外围设备。
2.1.2 ⼴播集中器能够与外围设备建⽴连接,外围设备必须处于⼴播状态,它每经过⼀个时间间隔发送⼀次⼴播数据包,这个时间间隔称为⼴播间隔,它的范围是20ms到10.24s。
⼴播间隔影响建⽴连接的时间。
集中器发送⼀个连接请求来发起连接之前,必须接收到⼀个⼴播数据包,外围设备发送⼀个⼴播数据包之后⼀⼩段时间内只监听连接请求。
⼀个⼴播数据包最多能携带31字节的数据,它通常包含⽤户可读的名字、关于设备发送数据包的有关信息、⽤于表⽰此设备是否可被发现的标志等类似的标志。
当集中器接收到⼴播数据包后,它可能发送请求更多数据包的请求,称为扫描回应,如果它被设置成主动扫描,外围设备将会发送⼀个扫描回应做为对集中器请求的回应,扫描回应最多可以携带31字节的数据。
2.4GRF协议BLE蓝牙4.0协议芯片NRF51822介绍
发布时间:2012-11-01 16:54:202.4GRF协议BLE蓝牙4.0协议芯片NRF51822介绍技术类别:资源共享关于 nRF51 系列多协议 2.4GHz 射频收发器拥有高性能、超低功耗以及灵活性等好处。
它的主要功能包括:在蓝牙低功耗模式下灵敏度为-92.5dB RX,高达 +4dBm 的输出功率;与 Nordic 上一代射频收发器相比,链接预算增强高达 9.5dBm;低于10mA 的峰值电流适合3V 纽扣电池;符合蓝牙低功耗(蓝牙 4.0 )标准;与 Nordic 现有的 nRF24L 系列 IC 空中完全兼容;支持包括蓝牙低功耗、ANT 和专有 2.4GHz 等协议的非并行和并行操作;场强RSSI。
nRF51 系列 SoC 大大地降低平均电流,使单芯片适用于各种无线应用。
它的主要功能包括:功能强大且低功耗的 32 位 ARM Cortex-M0 处理器,启动时间为 2µs,与 8/16 位处理器相比,大限度地降低了活动时间并提高了代码密度;细化电源管理,个别系统可独立开关,并能基于活动级别自主控制时钟;可编程周边互连 (PPI) 系统。
周边设备,如射频收发器、计时器及 I/O等,不需通过处理器而能自主相互作用。
从而降低处理器的活动时间来节省功耗,并放宽对处理器实时要求。
高效的EasyDMA射频收发器接口具有弹性 RAM 映射 FIFO;高灵活性的GPIO 映射简化了 PCB 设计,有助降低布线板层数量;自定义 2 区内存保护装置 (MPU) 对用户程序和预编译协议堆栈例如蓝牙低功耗和 ANT运行时保护。
nRF51 系列软件架构在协议堆栈和用户应用程序间具有一个独特且功能强大的分隔区,为应用程序开发人员提供最大的灵活性、开发简易性和代码安全性。
协议堆栈,例如蓝牙低功耗或 ANT,可为预编译二进制码或在设备上预编程;堆栈为 100% 异步并由事件驱动,并向应用程序层提供线程安全管理程序调用 (SVC) 的应用程序接口 (API);简单的编程模型,没有专用的应用程序框架或计划程序/RTOS 依存性,简化并加速了代码开发;协议堆栈和应用程序代码没有链接时间依存性,并可独立编译和更新/编程;堆栈受运行时保护,确保相互操作性并将应用程序错误而影响堆栈的风险降低;堆栈可以验证码和合格二进制目的码提供。
nrf51822学习记录
目录第一部分:前期准备 (2)1.1软件准备: (2)1.2硬件准备: (2)第二部分:程序编写 (3)2.1编写第一个亮灯程序 (3)2.2一般程序的编写 (10)2.3 ble的编写 (14)1.1软件准备:Keil 4.72以上(4.72版本以下不能调试)JlinkARM 4.86bNrfgo studioNrf51 sdk协议栈s110,s120,s130软件说明:nrf51下载程序有两种途径,一种是keil,一种是nrfgo。
Keil只能下载非ble协议栈的普通程序。
Nrfgo是下载ble协议栈和普通程序的。
1.2硬件准备:认识pca10005(带sma天线),pca10004,pca10000(dongle),具体参考nRF51822_DK_User_Guide_v1.0.pdf(这本书是dk的入门介绍)其他的入门参考文档:nRF51822 PS v1.3 CN 20130903.pdfnRF51822_PS v2.0.pdf (这两个都是产品规格书,可以连接芯片的配置和电气特性,ps1.3是中文版。
Ps2.0是最新版)nRF51_Series_Reference_Manual_v2.1.pdf(nrf51822的具体寄存器使用必须参考这个文档)nRF51822上手指南.pdf(这是ak板的上手中文指南)nRF51822-Kit开发板使用说明.pdf(这是网上大d电子自己生产板子的使用说明可参考)nRF51822 Development Kit - Hardware files 2_0 (这个文件夹里面是dk板的pcb图)2.1编写第一个亮灯程序(由于第一个程序就详细的讲解下)硬件准备:pca10000(dongle)软件准备:blinky_exampl(Keil\ARM\Device\Nordic\nrf51822\Board\pca10001\blinky_example文件下,由于pca10000里没有点灯例程)1.打开blinky.uvproj(依次设置)(这里IROM,IRAM设置要强调下。
NRF51822-BLE_DFU_手机升级
1功能简介在做BLE应用开发时,很多时候需要对应用程序进行升级,来修复一些bug或者进行功能升级。
nRF51822支持固件无线(低功耗蓝牙方式)升级,对当前的应用程序进行更新。
用户可以通过Iphone手机(Iphone4以上)、Windows系统的电脑、安卓4.3及以上支持蓝牙4.0的手机,配合Nordic Semiconductor的相关软件工具,对nRF51822设备进行OTA固件升级。
本章节将主要介绍DFU的原理、Flash存储空间的划分、执行流程以及安卓系统下DFU 的具体操作步骤。
1.1DFU 的Flash空间划分介绍带有DFU功能的BLE应用,可以把nRF51822的flash代码空间分布如图1-1所示。
DFU使用的是dual bank的升级方式,即应用程序代码空间被分成了两份Bank0、Bank1。
其中Bank0存放当前执行的应用程序,Bank1用于存储私有数据以及缓存待升级的应用程序代码。
图1-1 256Kflash分布图SoftDevice w/MBR:用于存放SoftDevice,存储空间地址范围:0x00000000+MBR+SoftDevice (S110==0x16000)。
Appcation Area:用于存放应用程序代码(Bank0)、待升级应用程序(Bank1)和私有数据、DFU Bootloader代码。
各个存储区域划分的详细说明如下表:表1-1 256Kflash分布说明表1.2DFU原理nRF51822使用Dual bank的升级方式,设备烧录了bootloader程序后,设备会工作在DFU模式,这时可以使用手机DFU工具或者PC端的Master Control Panel软件(配合dongle)对设备进行DFU操作。
设备上电完成后,系统会先运行bootloader,bootloader会判断在bank0、是否有应用程序。
如果在bank0中有应用程序,bootloader会去执行应用程序,否则系统会一直处在DFU模式,等待应用程序更新。
NRF51822学习笔记之PERIPHERAL INTERFACE
Peripheral interface外设接口所有外设可通过AHB和APB总线寄存器被访问,就如同通过task, event, interrupt寄存器进行访问一样.1、外设ID:每个外设都分配了0X1000 bytes 的空间,也就是说每个外设在APB总线上一共有1024个4 bytes的寄存器(0X1000=4096),第一个外设的基地址是0x4000 0000, ID号为0. 基地址为0x4000 1000的外设ID号为1,依次类推基地址为0x4001 F000的外设ID号为31.2、TASK :作用:用来触发外设的动作(actions),例如开始某个特定的行为。
外设都能实现不同的Task,每个Task在该外设任务寄存器组(peripheral’s task register group) 中都有一个单独的寄存器触发条件:可以通过软件写“1”到任务寄存器(task register)或者由外设本身或其他外设触发相应的任务信号来触发某个TASK3、Event:作用:用来通知外设或CPU某个事件发生了,例如某个外设的状态改变了。
一个外设能够产生多个Event,每个Event在事件寄存器组(peripheral’s event register group)中都有一个单独的寄存器。
产生条件: 外设本身触发了某个事件信号(event signal),于是事件寄存器(event register)会更新用以反映该事件的发生。
事件寄存器只有在软件向其写0的时候,才会被清零。
4、Shortcuts:链接同一个外设的事件(event)和任务(task)的快捷方式,当事件发生的时候可以通过Shortcuts直接触发任务。
与PPI的功能类似,但是传播时间比PPI更短。
快捷方式是被预先定义了的,用户不可以通过软件配置,用户只能对其进行使能和关闭。
一个快捷方式占1位,每个外设最多32个快捷方式。
NRF51822RADIO中文资料
NRF51822RADIO中⽂资料16 ----2.4 GHz radio (⽆线发射机)The RADIO包括了⼀个2.4G的接收机和⼀个发射机,它兼容了Nordic的所有2Mbps,1Mbps和250kpbs模式增加了1Mbps的蓝⽛低功耗模式。
The RADIO使⽤EasyDMA,EasyDMA包含⼀个⾃动压包和解包⼯具,以及CRC发⽣器和CRC校验使对它进⾏⾮常简单的配置,更多信息查看上图。
The RADIO包含了⼀个设备地址匹配单元和⼀个内部框架分隔单元。
它可以被⽤作简化地址⽩名单和帧间距分隔。
在低功耗蓝⽛和仿真中使⽤。
The RADIO也包含⼀个信号轻度指⽰器(RSSI)和⼀个位计数器,当⼀个预先设定的位通过RADIO被发送或者接受完成时,位计数器会引发⼀个事件。
16.1 功能描述16.1.1 EasyDMAEasyDMA在CPU RAM以内读写数据包,不能通过RAM以外的地址后者代码段读取数据包。
根据上⾯的框图,the RADIO's EasyDMA利⽤PACKETPTR指针接受和发送数据包。
CPU必须配置每⼀次的发送机的发送和接受模式直接的转换,MAXLEN 寄存器配置发射机在同⼀个数据包中的接收或发送的最⼤字节数。
此功能可以被⽤来确定⽆线发送接机所分配的数据包是否被覆盖或者越界。
16.1.2 包配置(Packet configuration)⼀个⽆线数据报⽂,包含以下部分:报头(PREAMBLE),地址(ADDRESS),长度(LENGTH),S0,S1,PAYLOAD(有效载荷:可理解为有效数据。
)和CRC。
⽆线发射机发送上述部分时的顺序展⽰在下图,从左到右,第⼀个发送的是PREAMBLE 位。
报头(PREAMBLE)总是根据第⼀个 ADDRESS位的值在0xAA或者0x55两个数字之间取值。
如果ADDRESS是0则PREAMBLE位为0xAA,否则为0x55.下图展⽰了⽆线数据包在内存中储存实例⽆线电字节顺序:ADDRESS和PAYLOAD低位总是优先的存储⽅式,CRC总是⾼位优先的存储⽅式,,S0,LENGHT,S1和PAYLOAD可以通过PCNF1的ENDIAN 位。
nRF51822SWD在线烧录参考指南
nRF51822SWD在线烧录参考指南Application NotenRF51822 SWD 在线编程参考指南⼴州致远电⼦股份有限公司类别内容关键词nRF51822, 在线编程, AK100Pro-4P ;主要特点1.独有的1拖4(甚⾄1拖16)量产⾼速在线编程;2.⽀持灵活的序列号烧写; 3.⽀持⼯程加密,保障固件安全; 4.⽀持⼀键添加多个⽂件烧写;5.⾃由的组合定制操作,允许定制任意操作序列;6.全⾃动上下电量产检测,⽆需操作软件,⼤幅提升烧写效率。
摘要本⽂主要介绍AK100Pro-4P 如何通过SWD 对Nordic 的nRF51822芯⽚进⾏在线编程⽬录1. nRF51822简介 (1)2. AK100Pro简介 (2)3. 准备条件 (4)3.1准备STM32F100VC⽬标板 (4)3.2安装KFlashPro软件 (4)3.3连接nRF51822-QFAA⽬标板⾄AK100Pro-4P (5)4. 基本烧写 (7)4.1创建⼯程 (7)4.2参数配置 (7)4.2.1硬件选择 (7)4.2.2主要设置 (8)4.2.3附加设置 (9)4.2.4程序烧写 (9)4.3烧写配置 (10)4.4进⾏烧写 (11)5. ⾼级烧写 (12)5.1量产烧写配置 (13)5.2加密与解密 (14)5.2.1加密 (14)5.2.2解密 (15)6. 技术⽀持 (16)7. 订购信息 (17)1. nRF51822简介nRF51822是Nordic Semiconductor公司推出的⼀款基于ARM⾼性能Cortex-M0 32位RISC内核的微控制器,配备256kB/128KB Flash + 16kB RAM。
嵌⼊2.4GHz 收发器,⽀持S110 低功耗蓝⽛协议栈及2.4GHz 协议栈(包括Gazell)。
nRF51822 还具备丰富的模拟和数字周边产品,可以在⽆需CPU 参与的情况下通过可编程周边产品互联(PPI) 系统进⾏互动。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BLE静态秘钥在51822程序中的实现xAN1503006Application Note V1.00类别内容关键词nRF51822;静态秘钥;摘要介绍在SDK7.1下,如何实现添加静态秘钥。
版本日期更新内容V1.00 2015-03-15 创建文档目录1概述 (3)2实现步骤 (4)免责声明 (8)1概述在使用nrf51822开发BLE应用中,很多情况下,为了提高安全性,需要使用到秘钥配对。
而有时候要实现友好的用户界面,使得手机在与51822连接时,跳出秘钥输入框,就必须使用BLE中的静态秘钥功能。
本文以experimental_ble_app_uart这个例程为基础,介绍如何在程序中实现静态秘钥的功能。
如图1-1,使用nRF UART这个app连接的效果图。
图1-1 app连接效果图2实现步骤●首先修改配对信息安全参数的值。
#define SEC_PARAM_TIMEOUT 30 /**< Timeout for Pairing Request or Security Request (in seconds). */#define SEC_PARAM_BOND 0 /**< Perform bonding. */#define SEC_PARAM_MITM 1 /**< Man In The Middle protection not required. */#define SEC_PARAM_IO_CAPABILITIES BLE_GAP_IO_CAPS_DISPLAY_YESNO /**< Display and Yes/No entry. */#define SEC_PARAM_OOB 0 /**< Out Of Band data not available. */#define SEC_PARAM_MIN_KEY_SIZE 7 /**< Minimum encryption key size. */#define SEC_PARAM_MAX_KEY_SIZE 16 /**< Maximum encryption key size. */●通过协议栈提供的API设置秘钥(为6位字符串)static void ble_stack_init(void){uint32_t err_code;static uint8_t passkey[] = "123456";ble_opt_t ble_opt;ble_opt.gap_opt.passkey.p_passkey = &passkey[0];// Initialize SoftDevice.SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, false);// Enable BLE stackble_enable_params_t ble_enable_params;memset(&ble_enable_params, 0, sizeof(ble_enable_params));ble_enable_params.gatts_enable_params.service_changed = IS_SRVC_CHANGED_CHARACT_PRESENT;err_code = sd_ble_enable(&ble_enable_params);APP_ERROR_CHECK(err_code);// Subscribe for BLE events.err_code = softdevice_ble_evt_handler_set(ble_evt_dispatch);APP_ERROR_CHECK(err_code);(void) sd_ble_opt_set(BLE_GAP_OPT_PASSKEY, &ble_opt);}设置需要属性的安全等级/**@brief Function for adding RX characteristic.** @param[in] p_nus Nordic UART Service structure.* @param[in] p_nus_init Information needed to initialize the service.** @return NRF_SUCCESS on success, otherwise an error code.*/static uint32_t rx_char_add(ble_nus_t * p_nus, const ble_nus_init_t * p_nus_init){/**@snippet [Adding proprietary characteristic to S110 SoftDevice] */ ble_gatts_char_md_t char_md;ble_gatts_attr_md_t cccd_md;ble_gatts_attr_t attr_char_value;ble_uuid_t ble_uuid;ble_gatts_attr_md_t attr_md;memset(&cccd_md, 0, sizeof(cccd_md));BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.read_perm);//BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.write_perm);BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(&cccd_md.write_perm);cccd_md.vloc = BLE_GATTS_VLOC_STACK;memset(&char_md, 0, sizeof(char_md));char_md.char_props.notify = 1;char_md.p_char_user_desc = NULL;char_md.p_char_pf = NULL;char_md.p_user_desc_md = NULL;char_md.p_cccd_md = &cccd_md;char_md.p_sccd_md = NULL;ble_uuid.type = p_nus->uuid_type;ble_uuid.uuid = BLE_UUID_NUS_RX_CHARACTERISTIC;memset(&attr_md, 0, sizeof(attr_md));//BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.read_perm);BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(&attr_md.read_perm); //BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.write_perm);BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(&attr_md.write_perm);attr_md.vloc = BLE_GATTS_VLOC_STACK;attr_md.rd_auth = 0;attr_md.wr_auth = 0;attr_md.vlen = 1;memset(&attr_char_value, 0, sizeof(attr_char_value));attr_char_value.p_uuid = &ble_uuid;attr_char_value.p_attr_md = &attr_md;attr_char_value.init_len = sizeof(uint8_t);attr_char_value.init_offs = 0;attr_char_value.max_len = BLE_NUS_MAX_RX_CHAR_LEN;return sd_ble_gatts_characteristic_add(p_nus->service_handle,&char_md,&attr_char_value,&p_nus->rx_handles);/**@snippet [Adding proprietary characteristic to S110 SoftDevice] */}/**@brief Function for adding TX characteristic.** @param[in] p_nus Nordic UART Service structure.* @param[in] p_nus_init Information needed to initialize the service.** @return NRF_SUCCESS on success, otherwise an error code.*/static uint32_t tx_char_add(ble_nus_t * p_nus, const ble_nus_init_t * p_nus_init){ble_gatts_char_md_t char_md;ble_gatts_attr_t attr_char_value;ble_uuid_t ble_uuid;ble_gatts_attr_md_t attr_md;memset(&char_md, 0, sizeof(char_md));char_md.char_props.write = 1;char_md.char_props.write_wo_resp = 1;char_md.p_char_user_desc = NULL;char_md.p_char_pf = NULL;char_md.p_user_desc_md = NULL;char_md.p_cccd_md = NULL;char_md.p_sccd_md = NULL;ble_uuid.type = p_nus->uuid_type;ble_uuid.uuid = BLE_UUID_NUS_TX_CHARACTERISTIC; memset(&attr_md, 0, sizeof(attr_md));BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(&attr_md.read_perm); //BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.read_perm);//BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.write_perm);BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(&attr_md.write_perm);attr_md.vloc = BLE_GATTS_VLOC_STACK;attr_md.rd_auth = 0;attr_md.wr_auth = 0;attr_md.vlen = 1;memset(&attr_char_value, 0, sizeof(attr_char_value));attr_char_value.p_uuid = &ble_uuid;attr_char_value.p_attr_md = &attr_md;attr_char_value.init_len = 1;attr_char_value.init_offs = 0;attr_char_value.max_len = BLE_NUS_MAX_TX_CHAR_LEN;return sd_ble_gatts_characteristic_add(p_nus->service_handle,&char_md,&attr_char_value,&p_nus->tx_handles);}免责声明深圳市蓝科迅通科技有限公司随附提供的软件或文档资料旨在提供给您(本公司的客户)使用,仅限于且只能在本公司销售的产品上使用。