我是靠谱客的博主 隐形眼睛,最近开发中收集的这篇文章主要介绍nRF51822 入门必备教程(一篇搞定nRF51)微雪 NRF51822 Eval Kit ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

微雪 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) 发送字符Yy,如回显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> ARMDeviceNordicnRF51822BoardPCA10001blinky_examplearmblinky.uvproj

或 ...codeBLE4.0nrf51822Boardpca10001blinky_examplearmblinky.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,是通过解压Softwares110_nrf51822_6.0.0.zip得到的。)

图4. Program SoftDevice

b) 进入<KEIL path> ARMDeviceNordicnrf51822Boardpca10001s110ble_app_hrsarm 或<code path>BLE4.0nrf51822Boardpca10001s110ble_app_hrsarm

打开Keil工程文件

c) 按上面的提到的进行编译下载。

各程序功能简介

a) 以下所有程序路径为:<code path>BLE4.0nrf51822Boardpca10001且所有跳线都已连接。

b) 下表中的步骤序号,请参考表格下方的备注栏。

c) 操作涉及步骤②的,下载方法请参考上文“编译下载ble_app_hrs测试程序”。

d) 其他的程序下载方法请参考上文“编译下载blinky_example测试程序”

程序名称操作与主要现象
blinky_exampleLED闪烁
uart_example①,回显串口发送信息
at45dbxx_example①,将AT45DBXX DataFlash Board接到SPI接口

串口将打印该模块的ID

at24cxx_example①,将AT24CXX EEPROM Board接到I2C接口

按开发板的KEY1,串口将打印指定地址的数据

按开发板的KEY2,指定地址的数据加1

button_radio_exampleled_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;........Includegcc即可   

问: nRFgo Studio可以下载,但KEIL下载报错: Insufficient RAM for Flash Algorithms !

答: 请确保正确安装SDK,Flash Dodnload设置如下,修改RAM for Algorithms要跟前面IRAM一样:

图6. Flash Dodnload设置

问: 阅读完该手册后,如何进一步学习?

答: 请仔细阅读chip PDF文件夹中相关文档,以及官方提供的参考手册:

示例程序里的BLE4.0Documentationindex.html。

页面最后有官方提供的参考手册以及程序,可以用浏览器翻译浏览

示例程序里的BLE4.0Documentationindex.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口开关

串口通讯

#include "simple_uart.h"   //加载例程nrf51822Sourcesimple_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打印

//simple_uart.c文件加入此函数

#include "stdio.h"   //keil 设置里勾选MicroLIB 

int fputc(int ch, FILE *f)   

{

  simple_uart_put(ch);

  return (ch);

}

最后

以上就是隐形眼睛为你收集整理的nRF51822 入门必备教程(一篇搞定nRF51)微雪 NRF51822 Eval Kit 的全部内容,希望文章能够帮你解决nRF51822 入门必备教程(一篇搞定nRF51)微雪 NRF51822 Eval Kit 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部