Nordic
文章平均质量分 88
我我我只会printf
海阔凭鱼跃,山高任鸟飞。
展开
-
蓝牙安全管理(SM:Security Manager)规范详解
配对(Pairing)分为三个阶段,前两个阶段是必须的,而第三阶段是可选的,三个阶段如下:阶段1:配对功能交换(阶段2(LE传统配对):短期密钥(STK:)生成阶段2(LE安全连接LE Secure Connections,也叫LESC):长期密钥(LTK:)生成阶段3:分发特定密钥的传输(可以看到阶段2分为两种:一种是LE传统配对,或者叫做LE遗留配对,它为了兼容低功耗蓝牙以前的配对而存在。另一种是蓝牙4.2新引入的LE安全连接,它安全性会更高。原创 2023-11-09 18:10:54 · 2175 阅读 · 0 评论 -
nRF52840的Radio模块详解
2.4 GHz Radio收发器兼容多种无线电标准,如1 Mbps、2 Mbps和远程低功耗蓝牙。完全支持IEEE 802.15.4的250 kbps模式,以及Nordic专用的1 Mbps和2 Mbps操作模式。下面列出了Radio的主要功能:•多域2.4 GHz无线电收发器:•1 Mbps、2 Mbps和长距离(125 kbps和500 kbps模式)低功耗蓝牙•250 kbps的IEEE 802.15.4模式•1 Mbps和2 Mbps的Nordic专有模式•一流的链路预算和低功耗运行•具有支持Eas翻译 2022-08-19 11:39:07 · 2377 阅读 · 0 评论 -
(GCC)STM32基础详解之全局资源的使用
在使用一个共享的全局资源时,多个地方修改这个资源可能会引发问题。可以使用原子操作、关闭中断或者屏蔽中断解决。它们各有利弊:1.原子操作并不一定是一条指令,而可能是很多条指令,只是通过独占访问等实现,所以原子操作可能更加耗时,对于时间敏感的地方需要衡量是否会影响功能。但是好处是它不对其他中断有影响,比如这个例子中的定时器中断,它的响应并不会被延迟。2.关闭所有中断简单粗暴,但在实际项目中,可能使用了很多中断,并不是所有中断都可以随意关闭,有些中断被关闭可能引发一些问题。.........原创 2022-08-08 10:12:41 · 1441 阅读 · 0 评论 -
SEGGER Embedded Studio找不到xxx.c或者xxx.h文件
感觉这个IDE有点坑,Nordic新的SDK——NCS已经不再支持这个软件了,改用了VSCode+插件的方式,不过旧的芯片因为工程问题更换不太可能。原创 2022-07-18 10:46:45 · 1519 阅读 · 0 评论 -
NCS再探--nRF5340 Audio
1.前情提要官方文档介绍:nRF5340 Audio — nRF Connect SDK 1.9.99 documentation截止到本文发布,该应用仅仅是实验性的。开发板:PCA10121-nRF5340 Audio DK(22-05-10发布)nRF5340 Audio DK - nordicsemi.com开发环境:Ubuntu 18.04(环境搭建可以参考笔者另一篇博客:NCS初探--搭建Linux下VSCode开发环境_我我我只会printf的博客-CSDN博客)原创 2022-06-02 17:05:59 · 2705 阅读 · 17 评论 -
NCS初探--搭建Linux下VSCode开发环境
1.IDE与插件笔者使用的Ubuntu 18.04,先下载VSCode,然后在拓展中搜索nRF:直接安装nRF Connect for VS Code Extension Pack这个插件,注意VSCode的版本要新。否则会提示版本低无法安装。这个安装包其实是一个拓展集合,里面包含了8个NCS需要的拓展插件。安装完之后可以在侧边栏看到它:2.开发工具开发NCS需要使用git、cmake、python、gcc、等等很多工具,安装这些工具可以使用以下指令:wget https://原创 2022-05-18 10:42:11 · 2160 阅读 · 0 评论 -
从零开始的nrf52832蓝牙开发(9)--连接参数与MTU
1.连接参数更新注意,连接参数一开始是主机设置的,连接参数更新是从机发起,主机决定要不要更改成从机请求的参数。1.1主机端很简单,只需要在蓝牙事件回调中添加,当从机请求更新连接参数,更新为从机发过来的参数即可:1.2从机端从机端如何发起连接参数更新?只要使用 ble_conn_params_init 这个函数设置了连接参数,从机会在连接后自动发起连接参数更新。但是注意,这个函数内使用了nrf的定时器,所以必须先要初始化定时器:其次,就是调用 ble_conn_para原创 2022-05-10 16:00:36 · 1963 阅读 · 0 评论 -
从零开始的nrf52832蓝牙开发(8)--连接
因为笔者周围蓝牙设备过多,所以就不做直接连接实验了,但是仍就会先从直接连接讲。1.过滤连接1.1主机端想要连接设备,我们的主机要发起连接,但是发起之后,怎么进行连接,这个是由连接参数决定,这就又回到了设置扫描初始化那个结构体:连接参数结构体定义:typedef struct{ uint16_t min_conn_interval; /**< Minimum Connection Interval in 1.25 ms units, see @ref原创 2022-05-10 14:32:56 · 2174 阅读 · 0 评论 -
从零开始的nrf52832蓝牙开发(7)--广播与扫描白名单
1.主机端开启白名单的选项在之前章节的扫描参数里:我们需要更改为:关于扫描策略:BLE_GAP_SCAN_FP_ACCEPT_ALL:接收所有的广播包,除去广播地址不是指向该设备的定向广播。BLE_GAP_SCAN_FP_WHITELIST:接收在白名单里所有的广播,除去广播地址不是指向该设备的定向广播。BLE_GAP_SCAN_FP_ALL_NOT_RESOLVED_DIRECTED:接收所有的广播包,包含定向广播包。这里如果广播MAC地址是私密地址,这里是无法被解析的。B..原创 2022-05-10 11:03:26 · 1801 阅读 · 0 评论 -
从零开始的nrf52832蓝牙开发(6)--广播与扫描过滤
1.主机端最重要的,相较于上一篇只是多加了一个过滤初始化: // 设置扫描的UUID限制 err_code = nrf_ble_scan_filter_set(&m_scan, SCAN_UUID_FILTER, &m_nus_uuid); APP_ERROR_CHECK(err_code); // 使能扫描的UUID限制 err_code = nrf_ble_scan_filters_enable(&m_scan, NRF_BLE_原创 2022-05-10 10:25:37 · 1978 阅读 · 0 评论 -
从零开始的nrf52832蓝牙开发(5)--广播与扫描
前言前段时间看到了谷雨系列的教程感觉不错,就在自己手头的板子上测试了一遍。这个系列更多的是自己的学习记录,如有错误,欢迎评论指正。1.硬件笔者手中一个nRF52832和一个nRF52840,本系列都使用这两个做测试。52832:52840:1.下载SDK与测试demodownload.recurser.com注意选择自己需要的版本,理论上版本越新越好。因为笔者之前下载过15.3,所以本系列都使用15.3测试,如下图:前文已经说过,本系列是基于谷..原创 2022-05-09 18:22:14 · 3320 阅读 · 2 评论 -
ZephyrOS--浅谈Bluetooth LE
1.相关工具版本Zepher版本:3.0.99(非正式版)工具链:zephyr-sdk-0.14.1硬件:nrf52dk_nrf52832(PCA10040)2.环境搭建https://docs.zephyrproject.org/latest/develop/getting_started/index.html3.编译与烧写本文会使用peripheral_hr这个例子,去浅谈zephyr蓝牙相关开发。编译使用指令west build -b nrf52dk_原创 2022-05-06 17:24:19 · 3048 阅读 · 1 评论 -
Bluetooth LE 专有名词
BLUETOORH LE相关专有名词全称原创 2022-04-27 16:45:32 · 961 阅读 · 0 评论 -
从零开始的nrf52832蓝牙开发(4)--串口DFU
上一篇:从零开始的nrf52832蓝牙开发(3)--蓝牙串口实现在本章之前推荐先阅读博文:详解蓝牙空中升级(BLE OTA)原理与步骤作者对Nordic芯片的应用理解极其透彻,连Nordic的官方公众号也转发过他的教程博文,不知是否就职于Nordic。在上面推荐的博文基础上,笔者做了串口DFU实践,单纯分享一下过程。本章使用三个工程:bootloader:nRF5_SDK_15.3.0_59ac345\examples\dfu\secure_bootloader\pca100原创 2021-09-14 14:23:11 · 2462 阅读 · 1 评论 -
从零开始的nrf52832蓝牙开发(3)--蓝牙串口实现
上一篇:从零开始的nrf52832蓝牙开发(2)--蓝牙模板解析蓝牙串口是一个很实用的例子,里面涉及到数据发送和接收,这是应该是作为蓝牙设备很基础的功能。如果你没有看上一篇,建议从上一篇看起,因为这一篇会省去上一篇的重复内容。打开工程:nRF5_SDK_15.3.0_59ac345\examples\ble_peripheral\experimental\bluetoothds_template\pca10040\s132\ses实验现象:下载代码后打开串口可以接收到手机发送的数据:原创 2021-09-07 18:12:50 · 5054 阅读 · 0 评论 -
基于nRF开发板的蓝牙抓包教程
工具:软件:nRF Command Line ToolsnRF Sniffer for Bluetooth LEWireshark(推荐3.4.1以及之后的版本)Python(推荐3.6以及之后的版本)硬件:• nRF52840 DK (PCA10056)• nRF52840 Dongle (PCA10059)• nRF52 DK (PCA10040)• nRF51 DK (PCA10028)• nRF51 Dongle (PCA10031)以上开发板任选其一原创 2021-09-03 14:49:23 · 1496 阅读 · 0 评论 -
NCS初探--基于nRF5340的双核通信(2)
接上一章:NCS初探--基于nRF5340的双核通信上一章介绍了nrf里基于RPC的双核通信例子,本章介绍一下zephyr里的双核通信例程。此工程把应用核当成master core,网络核当成remote core,master先发送0到remote,remote收到后+1,然后发回给master,然后master再+1,再发送,一直循环,直到master收到数据+1后>=100则停止。实际效果打印如下图:代码下载首先打开工程,项目目录为v1.5.1\zephyr\..原创 2021-08-30 16:22:27 · 1036 阅读 · 6 评论 -
NCS初探--基于nRF5340的双核通信
接上一章:NCS初探--基于nrf5340的双核测试此次使用NCS自带的samples:entropy_nrf53,这个例子分为两部分,一部分是应用核代码,一部分是网络核代码,两部分代码完全分开,打开工程时,应用核代码选择cpuapp,网络核代码选择cpunet:此工程在网络核上使用了RNG(随机数发生器,只能在网络核上使用),然后应用核通过RPC(Remote Procedure Call 远程过程调用)去获取网络核上的数据,相当于是一个应用核和网络核数据通信的例子。基本流程为:1..原创 2021-08-30 14:04:46 · 1513 阅读 · 2 评论 -
NCS初探--基于nRF5340的双核测试
接上一章:NCS初探--基于nrf5340的blinky本次测试,网络核跑 radio_test ,应用核跑 empty_app_core。这个empty_app_core的项目就是为了那些只在网络核上跑的demo设计的,因为单独一个网络核是跑不起来的,必须要在应用核中使能网络核才可以!这个空的工程使能网络核后就关闭了ram和时钟。需注意:1. 使用IDE SES下载有时会遇到问题,推荐使用west下载!2. 如果要debug其中一个核的代码,最好放在最后下载。目前笔者还没有找到同时调试两个原创 2021-08-26 18:11:43 · 1423 阅读 · 0 评论 -
NCS初探--基于nRF5340的blinky
开发环境:SEGGER Embedded Studio V5.32aNCS版本:v1.5.1开发板:PCA10095项目路径:开发板路径:项目装载:注意上图的 nRF Connect SDK Release 和 nRF Connect Toolchain Version 也可以选择:但是前提是在SES中配置好:注意: 路径按照自己安装的NCS选择。编译完成:左边是build,右边是debug烧入现象:LED1周期性闪烁。代码解析:宏定...原创 2021-08-23 17:35:02 · 1254 阅读 · 3 评论 -
从零开始的nrf52832蓝牙开发(2)--蓝牙模板解析
本篇文章使用SDK版本为 15.3.0。SDK与说明文档下载地址:Nordic官方下载关于SDK结构可以看下面这篇博文,作者写的很好:Nordic nRF5 SDK和softdevice介绍我们打开nRF5_SDK_15.3.0\examples\ble_peripheral\experimental\bluetoothds_template\pca10040\s132\ses由SDK说明文档可知,这个例子是用Bluetooth Developer studio生成的一个模板工程,这个开发工具原创 2021-07-08 18:08:33 · 6315 阅读 · 8 评论 -
从零开始的nrf52832蓝牙开发(1)--蓝牙协议基础
想要进行蓝牙开发,第一步肯定要对蓝牙协议有所了解。除了要对蓝牙的一些专业术语有所熟悉,还应该对蓝牙协议每层功能有一定认知。概略图:物理层(PHY):调制、解调方式,工作频段,通信速率等控制。链路层(LL):负责广播、扫描、建立连接、维护连接等,展开来讲比如广播间隔、数据重传、接收发送等待超时等设置最后都在这一层中被实际应用。...原创 2021-07-07 11:40:04 · 8515 阅读 · 1 评论