简介
Nordic nRF5x 系列 MCU 广泛,且广泛、低蓝牙应用。非常适用于多功能蓝牙和 24 GHz 无线应用。
基于官方生态的dk16.0版本的基础上,该BSP将SDK和RT-THE的SDK和RT-THE,让开发者既可以基于官方的生态应用,也可以使用RT-ThreadREAD的结合。
当前支持硬件平台:nrf52832(pca10040)、nrf52840(pca10056)
Bsp的,sTm32的架构架构如有相关的北欧开发板,欢迎添加北欧的芯片的bsp。
Nordic nRF5x系列BSP目前支持的情况如下:
主要支持功能
支持官方softdevice的示例:ble_app_uart、ble_app_blinky、ble_app_hrs(softdevice是官方nordic的协议栈名称)
支持灵活的餐具及满足的样品
官方softdevice的sample和RT-THREAD驱动框架结合。
目录结构
如何使用
RT-THREAD 的使用
市民RTRTRT
默认的BSP是支持UART和GPIO的,烧入智能灯。
准备工作
需要env环境和keil环境,并且对RT-THREAD似乎可以使用一些。
首先下载代码,git clone https://github.com/RT-Thread/rt-thread.git
进入到目录rt-thread/bsp/nrf5x/nrf52840
右击进入环境模式
menuconfig 选择需要加载的 BSP 配置并保存
执行pkgs --update下载的硬件硬件(这里的HAL库采用的硬件方式,需要客户自行下载)
执行scons --target=mdk5 生成keil工程,烧入即可看到LED小灯闪烁
注意,在烧掉软件设备之前的话,烧掉烧不进的情况下,需要将整机入网的情况下有可能在板子上已经出现再运行的rt-thread工程,
软设备的使用
首先可以说工程的运行,在上面运行的基础上,我们可以尝试跑一下ble_app_beacon(这个在SDK16.0中的外围的sample中)
menuconfig 进入Hardware Drivers Config, BLE STACK 选择Nordic softdevice
menuconfig进入外设库和驱动目录中剔除nrf5x_sdk
进入目录选择样品
保存配置,然后pkgs --update,执行scons --target=mdk5
打开keil,softdevice的工程需要烧入官方的协议,先要烧入softdevice(如果之前已经烧入SDK16.0的softdevice,可以不用执行这一步),点击softdevice工程,烧入所以就可以了
重新进行rtthread工程,烧录入,通过编译进行查看选择的即代表成功
这个时候我们执行不同命令ble_app_beacon的样例不同的命令,看到像logbeacon已经跑起来了
这个时候用nrf connect来测试可以搜索到的信标
敏捷的使用
如果使用nimble就不能选择software了,所以要空前的配置,然后为了防止误操作,可以选择将nrf52840的下面的内容全部git reset --hard 重复上述操作,执行清除目录清除git clean -xfd的文件
menuconfig进入BLE STACK 选择nimble
menuconfig选择nimble
使用RTT-STUDIO开发
RTT-STUDIO V2.2.0及以上,支持直接导入BSP创建工程,而可以不用再依赖于基于开发版来创建工程了,这样的版本,我们可以一直体验最新的代码了,不是很香
将nRF5x BSP导入RTT-STUDIO中
右击资源管理窗口,右击导入
选择导入到工作空间,点击下一步BSP
选择BSP根目录,以及重新填写工程名称,点击完成
通过观察执行操作逻辑,我们发现,实际上当执行该时,上面的是,进入指定的 BSP 目录,下面的命令
先进入指定BSP目录,然后执行下面的额命令
scons --dist-ide --project-path=D:\RT-ThreadStudio\workspace/nrf52832_test --project-name=nrf52832_test
直接编译工程,发现已经编译成功
进入Controller Configuration选择nrf52840
进入Bluetooth Samples 选择ble beacon sample
执行pkgs --update下载需要的制冷剂
执行scons --target=mdk5
打开keil工程,勾选GNU extensions
keil 工程烧毁,这个注意的是,如果之前有软设备存在,需要在有代码打开时打开中的软设备。
烧入之后执行cmdble_ibeacon
之后用nrf connect软件可以搜索到的beacon设备。
下载程序开发板,点击下载发现有如下提示(我当前使用的工作室是版本:2.2.3,按钮掉问题应该可以修复)
6.1打开导入后的工程目录,打开.settings文件夹中的projcfg文件
6.2 添加以下内容J-Link
6.3 打开调试配置界面,刷新设备名,设备名具体写什么,
常问问题:
1.如果烧入的时候出现以下情况:
说明板子才能上入了软设备,需要更换,烧入不已烧入软设备的程序。
下面提供一种擦软设备的方法,keil 中选择软设备的 FLASH 算法,这个时候就可以在烧写设备之前先用什么方法写软设备。
2.如果在使用softdevice的时候,连上手机的时候出现了一些hardfault
如下所示:
psr: 0x8100000f
r00: 0x00000000
r01: 0x200034e6
r02: 0x00000000
r03: 0x200034dc
r04: 0x200034dc
r05: 0x00000000
r06: 0x200034e6
r07: 0xdeadbeef
r08: 0xdeadbeef
r09: 0xdeadbeef
r10: 0xdeadbeef
r11: 0xdeadbeef
r12: 0x00000000
lr: 0x000369af
pc: 0x00036972
hard fault on handler
这个代码在 SOFTDEVICE 内部发生了硬故障,由于修改不发生故障,因此测试了函数,可以不触发硬故障。
rt_hw_interrupt_disable PROC
EXPORT rt_hw_interrupt_disable
;MRS r0, PRIMASK
;CPSID I
BX LR
ENDP
;/*
; * void rt_hw_interrupt_enable(rt_base_t level);
; */
rt_hw_interrupt_enable PROC
EXPORT rt_hw_interrupt_enable
;MSR PRIMASK, r0
BX LR
ENDP
原作者:RT-线程