微雪 NRF51822 Eval Kit
开箱检测
部署PC端开发环境
-
nRFgo Studio v1.14或更高版本
-
Keil MDK-ARM Lite v4.54或更高版本
-
J-Link Software v4.52b或更高版本
下载手机端app
-
IOS系统:进入App Store并搜索“nRFToolbox”
-
Android系统(4.3或更高):下载nRFToolbox,解压后安装即可
注意:蓝牙4.0和传统蓝牙的开发方法不同,首先需要手机支持蓝牙4.0,并且安装了相应的APP,才可以搜到蓝牙4.0的广播信号
与手机连接(演示蓝牙转串口程序)
a) 安装CP2102驱动
b) 将BLE400的mini USB接口与PC机相连
c) 打开串口调试助手,选择相应的COM口,波特率为38400,8位数据位,1位停止位,点击打开串口
d) 发送字符Y或y,如回显Start...则表示蓝牙已经开始发送广播数据,此时可以看到BLE400的LED0亮。
注意:出厂程序的前一部分是模块自检,显示的信息可忽略。
e) 手机端开启蓝牙功能。
f) 打开nRFToolbox,并点击进入UART,单击CONNECT按钮,在列表中选中Nordic_UART,此时BLE400的LED0灭/LED1亮,表明手机与模块连接成功。
g) 按APP上的按钮,在串口上可以收到相应的字符。(APP上的按钮信息需要用户自己定义)
h) 点击Show Log,在串口助手中,发送字符串abcdefghijklmnopqrs,在LOG列表中会打印相应的信息。
注意:每当蓝牙收到19个字符,在APP上才会回显数
据。
程序说明
安装SDK
a) 安装Keil MDK-ARM(v4.54以上)和J-Link for Windows。
b) 保存nRF51 SDK,打开nrf51_sdk_v5_2_0_xxxxx.msi进行安装,并确保选择了KeilMDK-ARM安装选项。
c) 注意:如果SDK安装报错,请下载并安装Microsoft .NET Framework 3.5。
d) 安装nRFgo Studio(32位系统安装nrfgostudio_win-32_1.15.1_installer.msi,64位系统安装nrfgostudio_win-64_1.15.1_installer.msi)。
示例程序下载说明
示例程序下载方法对于不同的程序,有细微的差别。下面两个小节,将用blinky测试程序和ble_app_hrs测试程序为范例,进行下载操作说明。
这两个程序的区别在于:
-
编译下载blinky测试程序,这个相当于裸机程序,比较简单。下载一个application就能使用。
-
编译下载ble_app_hrs测试程序,这个可以理解为跑操作系统的程序,需要先下载softdevice,再下载application,才能使用。
编译下载blinky_example测试程序
a) 开发板出厂时已预装程序,下载其他程序之前,需使用nRFgo Studio全部擦除程序。首先点击“nRF51 Programming”,之后点击“Erase all”全部擦除后方可烧写其它程序。
图1. Erase all步骤 |
b) 在Keil μVision中打开Blinky工程,其路径为: <KEIL path> \ARM\Device\Nordic\nRF51822\Board\PCA10001\blinky_example\arm\blinky.uvproj
或 ...\code\BLE4.0\nrf51822\Board\pca10001\blinky_example\arm\blinky.uvproj
c) 点击Build图标,或者使用快捷键F7编译Blinky工程。
d) 点击Download图标,下载并运行Blinky演示程序。可以看到LED开始闪烁。
图2. 用Keil下载 |
注意:
这里可能会出现nrf51.h(119): error: #5: cannot open source input file "core_cm0.h"报错,解决办法参考后面的常见问题。
由于Jlink固件与nordic SDK配合的问题,部分KEIL无法正常下载。
此时,请使用nRFgo Studio左下的“nRF51 Programming”,之后点击“Program Application”选项框下载。
图3. Program Application |
编译下载ble_app_hrs测试程序
a) 下载S110 nRF51822 SoftDevice(蓝牙协议栈):
s110_nrf51822_6.0.0-单片机文档类资源-CSDN下载
选择nRF51 Programming > Program SoftDevice> Browse(选择相应的蓝牙协议栈) > Program(等待蓝牙协议栈下载完毕)。(我们使用的协议栈文件s110_nrf51822_6.0.0_softdevice.hex,是通过解压\Software\s110_nrf51822_6.0.0.zip得到的。)
图4. Program SoftDevice |
b) 进入<KEIL path> \ARM\Device\Nordic\nrf51822\Board\pca10001\s110\ble_app_hrs\arm 或<code path>\BLE4.0\nrf51822\Board\pca10001\s110\ble_app_hrs\arm
打开Keil工程文件
c) 按上面的提到的进行编译下载。
各程序功能简介
a) 以下所有程序路径为:<code path>\BLE4.0\nrf51822\Board\pca10001且所有跳线都已连接。
b) 下表中的步骤序号,请参考表格下方的备注栏。
c) 操作涉及步骤②的,下载方法请参考上文“编译下载ble_app_hrs测试程序”。
d) 其他的程序下载方法请参考上文“编译下载blinky_example测试程序”
程序名称 | 操作与主要现象 |
blinky_example | LED闪烁 |
uart_example | ①,回显串口发送信息 |
at45dbxx_example | ①,将AT45DBXX DataFlash Board接到SPI接口 串口将打印该模块的ID |
at24cxx_example | ①,将AT24CXX EEPROM Board接到I2C接口 按开发板的KEY1,串口将打印指定地址的数据 按开发板的KEY2,指定地址的数据加1 |
button_radio_example\led_radio_example | 准备两块开发板,分别称之为A和B 开发板A下载button_radio_example 开发板B下载led_radio_example 按下开发板A的KEY1,开发板B的LED0闪烁 按下开发板A的KEY2,开发板B的LED1闪烁 |
ble_app_beacon | ②,③,④ |
ble_app_proximity | ②,③,④ |
ble_app_uart | ①,②,③,④,手机的数据发到串口上 |
备注: ① 通过数据线将开发板与PC相连,打开串口调试助手,波特率为38400,8位数据位,1位停止位 ② 下载Program SoftDevice ③ 测试软件为:LightBlue(iOS) ④ LightBlue中显示相关信息 | |
表1. 示例程序功能介绍 |
常见问题
问: nRFgo Studio无法下载,出现报错
This hex file has data in SoftDevice region. Try programming using "Program SoftDevice", or erase all before programming.
答:这是因为下载的程序地址有冲突,如果没用到蓝牙的程序不需要softdevice协议栈,可以erase all擦除flash后再下载,如果要用softdevice,那么应该是softdevice版本不对,微雪提供的程序例程要用s110_nrf51822_6.0.0_softdevice.hex版本。可以用高版本的功能丰富些,对应的应用程序地址要跟softdevice一致,如下图,softdevice是从0x00开始,接着是应用程序。
问: KEIL无法下载程序?
答: 首先检查系统是否正常供电,之后尝试用nRFgo Studio的nRF51 Prgramming验证一下是否KEIL工程设置问题。
问: 例程编译不通过,报错nrf51.h(119): error: #5: cannot open source input file "core_cm0.h"
修改包含的头文件路径为..\..\..\..\Include;..\..\..\..\Include\gcc即可
问: nRFgo Studio可以下载,但KEIL下载报错: Insufficient RAM for Flash Algorithms !
答: 请确保正确安装SDK,Flash Dodnload设置如下,修改RAM for Algorithms要跟前面IRAM一样:
图6. Flash Dodnload设置 |
问: 阅读完该手册后,如何进一步学习?
答: 请仔细阅读chip PDF文件夹中相关文档,以及官方提供的参考手册:
示例程序里的BLE4.0\Documentation\index.html。
页面最后有官方提供的参考手册以及程序,可以用浏览器翻译浏览
示例程序里的BLE4.0\Documentation\index.html。
在线版:nRF51 SDK: Introduction
问:不同版本的SoftDevice有什么区别,如何获取?
答:常见的有以下两个版本,还会有一些特殊版本,可以实现各种你想要的蓝牙功能,所以推荐你下载最新的版本,比如nRF51系列,推荐使用SDK12.3.0(12.3.0已经是nRF51能支持的最高版本SDK了)
-
比如S110,表示只支持从设备模式的nRF51 BLE协议栈
-
比如S130,表示既支持从设备模式又支持主设备模式的nRF51 BLE协议栈
不同sdk,SoftDevice版本获取链接:nRF5 SDK downloads - nordicsemi.com
nrf51_sdk常用API
IO口控制
#include "boards.h"
#include "nrf51_bitfields.h"
static __INLINE void nrf_gpio_cfg_output(uint32_t pin_number) //首先初始化IO口
static __INLINE void nrf_gpio_pin_set(uint32_t pin_number) //IO口开控制
static __INLINE void nrf_gpio_pin_clear(uint32_t pin_number) //IO口关控制
static __INLINE void nrf_gpio_pin_toggle(uint32_t pin_number) //IO口开关切换
static __INLINE void nrf_gpio_pin_write(uint32_t pin_number, uint32_t value) //IO口开关
串口通讯文章来源:https://www.toymoban.com/news/detail-444001.html
#include "simple_uart.h" //加载例程nrf51822\Source\simple_uart.c的文件
simple_uart_config(RTS_PIN_NUMBER, TX_PIN_NUMBER, CTS_PIN_NUMBER, RX_PIN_NUMBER, HWFC); //一句轻松初始化
void simple_uart_putstring(const uint8_t *str) //字符串打印,相关API simple_uart.c文件查看
printf打印文章来源地址https://www.toymoban.com/news/detail-444001.html
//simple_uart.c文件加入此函数
#include "stdio.h" //keil 设置里勾选MicroLIB
int fputc(int ch, FILE *f)
{
simple_uart_put(ch);
return (ch);
}
到了这里,关于nRF51822 入门必备教程(一篇搞定nRF51)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!