嵌入式技术论坛
直播中

张丽

7年用户 1373经验值
私信 关注
[经验]

使用RTT-STUDIO开发​Nordic nRF5x系列MCU说明

简介

​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 的使用

​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​市民​​​​​​​​​​​​​​​​​​​​​​​​​​RT​​​​​​​​​RT​​​​​​​​​​​​​​​​RT​​​​​

默认的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-线程

更多回帖

发帖
×
20
完善资料,
赚取积分