一起学nRF51xx 18 - 蓝牙协议栈烧录

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/zhanglifu3601881/article/details/100808498

 

前言

在讲协议栈前我们先简要介绍一下NORDIC公司的协议栈特点:

1 协议栈和应用程序代码没有链接时间依存性,并可独立编译和更新

2 堆栈受运行时保护,应用程序访问受限或被阻止

3 堆栈为 100% 异步并由事件驱动,并向应用程序层提供线程安全管理程序调用 (SVC) 的应用程序接口

4 没有专用的应用程序框架或 RTOS 依存性

 

nordic公司针对nrf51系列提供了s110,s120,s130,s210,s310等不同类型的SDK协议栈。

S110 SoftDevice

The S110 SoftDevice is a Bluetooth® Low Energy (BLE) peripheral protocol stack solution. It integrates a low energy controller and host, and provides a full and flexible Application Programming Interface (API) for building Bluetooth Low Energy System on Chip (SoC) solutions.

S110软设备是Bluetooth®低功耗(BLE)外围协议栈解决方案。它集成了一个低能耗控制器和主机,为构建蓝牙芯片上低能耗系统(SoC)解决方案提供了一个完整、灵活的应用程序编程接口(API)。

S120 SoftDevice

The S120 SoftDevice is a Bluetooth® Low Energy (BLE) combined central and peripheral protocol stack solution, which means that the SoftDevice can be initialized to run either as a central protocol stack or as a peripheral protocol stack. When initialized as a Central, it supports up to eight simultaneous central role connections and an Observer. When initialized as a Peripheral, is supports a peripheral connection and a concurrent Broadcaster. The SoftDevice integrates a low energy controller and host, and provides a full and flexible Application Programming Interface (API) for building Bluetooth Low Energy System on Chip (SoC) solutions.

S120软设备是蓝牙®低功耗(BLE)中心和外围协议栈的组合解决方案,这意味着可以初始化软设备,使其既可以作为中心协议栈运行,也可以作为外围协议栈运行。初始化为中心时,它最多支持8个同时的中心角色连接和一个观察者。当初始化为外设时,它支持外设连接和并发广播器。该软设备集成了一个低能耗控制器和主机,为构建蓝牙芯片上低能耗系统(SoC)解决方案提供了一个完整、灵活的应用程序编程接口(API)。

S130 SoftDevice

The S130 SoftDevice is a Bluetooth® Low Energy Peripheral protocol stack solution. The S130 SoftDevice integrates a Bluetooth Low Energy Controller and Host, and provides a full and flexible API for building Bluetooth Low Energy nRF51 System on Chip solutions.

S130软设备是蓝牙®低能耗外围协议栈解决方案。S130软设备集成了蓝牙低能耗控制器和主机,为构建基于芯片的蓝牙低能耗nRF51系统提供了完整、灵活的API。

S210 SoftDevice

The S210 SoftDevice is an ANT™ protocol stack solution that provides a full and flexible Application Programming Interface (API) for building ANT System on Chip (SoC) solutions for the nRF51422 chip. The S210 SoftDevice simplifies combining the ANT protocol stack and an application on the same CPU.

S210 SoftDevice是一个ANT™协议栈解决方案,它为构建nRF51422芯片上的ANT系统(SoC)解决方案提供了完整和灵活的应用程序编程接口(API)。S210软设备简化了将ANT协议栈和同一CPU上的应用程序组合在一起的过程。

S310 SoftDevice

The S310 SoftDevice is a combined ANT™ and Bluetooth® Low Energy (BLE) peripheral protocol stack solution. It provides a full and flexible Application Programming Interface (API) for building concurrent ANT and BLE System on Chip (SoC) solutions. The S310 SoftDevice simplifies combining an ANT or BLE protocol stack and an application on the same CPU, therefore eliminating the need for an added device to support concurrent multiprotocol.

S310软设备是一个结合了ANT™和蓝牙®低能耗(BLE)外围协议栈的解决方案。它提供了一个完整和灵活的应用程序编程接口(API),用于构建并行的ANT和BLE系统芯片(SoC)解决方案。S310软件设备简化了将ANT或BLE协议栈与同一CPU上的应用程序组合在一起的过程,因此无需添加支持并发多协议的设备。

 

 

协议堆栈与APP在芯片中的FLASH与RAM的空间分布如下图,不同的协议堆栈对具体实现的大小有所不同:

使用S110/S130对芯片存储空间需求:

 

协议栈事件处理流程

协议栈通过软中断SWI2将底层事件(像是收到蓝牙数据,链接成功,收到广播之类的)上抛给app,app再捕获自己感兴趣的事件做相应的处理(比如收到链接成功事件后,记录连接句柄),至于怎么捕获,很简单就是switchcase自己感兴趣的事件。

 

应用程序使用API访问协议栈资源(基于SVC)

应用程序通过使用_SVC(number)指令触发异常进入协议栈SVC异常处理函数,并根据number调用协议栈中预先实现的底层协议处理函数。

 

Events&Callbacks,协议栈到应用程序的事件通知

协议栈收到底层数据做相应处理后,通过NVIC设置自定义的”SWI”中断为Pending。之后处理器进入协议栈自定义的”SWI”中断处理函数,将evt_id放入事件队列后再执行应用程序中的“SWI中断处理函数”。程序跳转到应用程序处理函数后再取出依次取出事件并交由事件派发程序处理。事件派发程序将事件会传给所有相关的服务和事件处理任务。

 

本例程将介绍NRF51822烧录S130协议栈,并在烧录S130协议栈基础修改《一起学nRF51xx 17 -  lpcomp》的程序,使之在烧录S130协议栈的芯片上可以正常运行。

 

 

示例详解

基于硬件平台:nrf51822ek_tm开发板。

本示例所用的最小系统板原理图:

在正式开启本节内容前,先给大家介绍如何用jlink结合jflash工具给来给NRF51822烧录S130协议栈或带S130协议栈的的完整程序:

 

 

步骤一:安装J_FLASH-V612.exe 安装包(见附件,可直接网上下载)。

安装过程中,一直点NEXT,直到安装完成即可。

 

步骤二:打开软件。

在桌面开始菜单栏中。找到刚刚安装的程序文件,单击 j-Flash。

 

出现如下界面,选择Create a new Project后点Start J-Flash:

在弹出的小对话框中按下图选择目标芯片型号:

然后OK,

再OK出现如下界面:

执行file->open data file 命令,打开附件中对应的s130_nrf51_2.0.0_softdevice.hex(s130协议栈)或experimental_ble_app_blinky_s130_pca10028.hex(s130协议栈加app程序),这里以后者为例:

执行Target->Connect命令连接开发板:

然后执行快捷键”F7”烧录程序!

烧录成功后执行快捷键”F9”启动程序!

这个时后打开手机可蓝牙,查找设备,可以看到出现Nordic_Blinky设备,

    1. 同理如果仅想烧录S130协议栈的话,对应的烧录文件选s130_nrf51_2.0.0_softdevice.hex即可,下面修改《一起学nRF51xx 17 -  lpcomp》的程序,让其可以在已烧录协议栈的芯片正常运行,按下图所示修改工程的IROM1和IRAM1的起始地址和大小,其它完全不变即可:

 

编译后仿真程序,可以看到程序顺利跳远到mian函数上,同时对应的地址为0X0001B4A8,说明程序成功从协议栈跳转到APP中。

 

      把程序编译,将P01引脚与GND接触然后松开,接触松开….,可以看到串口助手中打印了以下输出内容,可以知道,跳转后的程序功能正常:

关于nrf51xx及flash的更详细介绍可以参看《nRF51822_PS_v3.3.pdf》或https://infocenter.nordicsemi.com/index.jsp。下一讲我们将一起学习基于nordic的s130协议栈API接口编程。

 

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,会有不定期技术干货推出!!

文中源码资料下载,在公众号里给十三发消息:

下载|一起学nRF51xx 18

 

关注十三公众号

 

猜你喜欢

转载自blog.csdn.net/zhanglifu3601881/article/details/100808498