
BLE
f大熊
努力实现自己的价值
展开
-
nRF52833使用两个UART的方法
一、前言 近期项目上采用了Nordic的nRF52833这颗BLE SoC芯片,该芯片有2个UART,分别是UART0和UART1,但是官方例程却没有关于如何使用UART1的例子。经过一番摸索,终于把UART1用起来了。写下此博文,希望给读者提供一些参考。二、环境说明 SDK版本:nRF5_SDK_17.0.2_d674dde SoftDevice版本:S113_nrf52_7.2.0 Demo程序:nRF5_SDK_17.0.2_...原创 2020-11-06 10:54:38 · 1709 阅读 · 0 评论 -
Nordic DFU OTA参考资料
本文记录的是Nordic官方的帮助文件,里面有OTA有关的参考资料的查找方法。链接:https://infocenter.nordicsemi.com/index.jsp图示:原创 2020-01-10 19:44:37 · 806 阅读 · 0 评论 -
nRF52810 DFU升级失败以及Flash空间分配问题分析
本文主要分析由于Flash空间受限,导致nRF52810无法进行DFU的问题。先看下nRF52810的Flash空间分配:从图中可以很清楚地看出,nRF52810的Flash大小为192KB,其中100KB分配给SoftDevice,也就是协议栈。32KB分配给Bootloader,剩下的60KB分配给应用程序。因此,理论上应用程序大小最大可以是60KB。但实际上很多情况下...原创 2019-07-11 16:33:12 · 2921 阅读 · 2 评论 -
完美解决pyserial报"UnicodeEncoudeError"的问题
通过Python调用电脑的串口,在pyserial已经正确安装的情况下,通过“python -m serial.tools.list_ports -v”命令列出电脑所有的串口,结果显示如下: 通过上网搜索资料得知,这是因为Python默认调用ASCII编码解码程序去处理字符流,当字符流不属于ASCII范围内时,就会抛出异常(ordinal not in ran...原创 2019-06-02 17:18:01 · 707 阅读 · 0 评论 -
nRF52系列芯片开启UART导致进Default_Handler的问题
一、问题描述 使用nRF52810开发产品,一次不经意删除了工程目录\examples\ble_peripheral\ble_app_uart\pca10040e\s112\arm5_no_packs下的RTE文件夹,虽然重新编译会生成一个新的RTE文件夹,但是会导致串口一通信,程序就会卡死。通过在线调试,发现程序是进入了Default_Handler默认的中断服务函数。二、...原创 2019-05-08 17:57:19 · 1223 阅读 · 0 评论 -
nRF52832 GPIOTE中断丢失的问题
产品中需要用到GPIO外部中断功能,可以使用芯片的GPIOTE功能实现。但是自己配置GPIOTE有点麻烦,于是偷个懒,直接用例程中的Button相关代码,把外部中断当成是按键输入。 实际上Button模型底层也是通过GPIOTE加定时器实现的,只不过SDK做了一些封装,加了延时消抖功能。使用起来确实很方面,但是也有弊端,那就是容易“丢中断”,意思就是外部中断信号并...原创 2019-04-24 16:14:22 · 2630 阅读 · 1 评论 -
nRF52832 DFU升级导致FDS数据丢失的问题
产品使用nRF52832的FDS模块来存储用户数据。产品在使用过程中,发现DFU升级有一定概率导致FDS数据丢失。经过查找相关资料,发现在Bootloader程序中有一个宏,用来指定受保护Flash区的大小。在保护范围之外的,会被Bootloader给擦除。这个宏是:#ifndef DFU_APP_DATA_RESERVED#define DFU_APP_DATA_RESERVE...原创 2019-03-19 18:54:02 · 2984 阅读 · 4 评论 -
nRF52832改变MTU大小的方法
nRF52832的MTU最大支持247字节,但是SDK默认的不是最大, 修改方法如下:1.改变"sdk_config.h"头文件中相关宏// <o> NRF_SDH_BLE_GATT_MAX_MTU_SIZE - Static maximum MTU size. #ifndef NRF_SDH_BLE_GATT_MAX_MTU_SIZE#define NRF_SD...原创 2019-02-21 18:03:03 · 6581 阅读 · 0 评论 -
nRF52832的NFC天线脚用作GPIO的方法
调试nRF52832的过程中,发现P0.09和P0.10这两只管脚,无法通过程序控制输出指定的电平。翻查芯片手册,发现这两只脚默认是作为NFC的天线引脚,因此用 GPIO函数对它进行控制是无效的。 解决方法:在system_nrf52.c文件的开始处,加上#define CONFIG_NFCT_PINS_AS_GPIOS,重新编译运行就行了。...原创 2019-01-26 16:09:02 · 1489 阅读 · 0 评论 -
nRF52832频繁打印“APP_UART_COMMUNICATION_ERROR”的问题
在调试nRF52832的uart的过程中,发现调试信息会时不时打印“APP_UART_COMMUNICATION_ERROR”这个错误,看上去似乎毫无规律。查看SDK的相关说明,可以大致知道打印这个的提示的原因是uart硬件接收到了一些错误数据。但是为什么会收到错误数据呢? 经过反复试验,发现只要用手触碰到芯片的RX引脚,就会打印这个错误提示。由此,可以推测是手触...原创 2018-12-25 18:43:33 · 5257 阅读 · 15 评论 -
Nordic SDK14 添加蓝牙服务为空的问题记录
在SDK 14.1.0的nus例程中,添加了自己的自定义服务。但是发现服务可以添加,但是服务里的内容为空。我定义的一些特征值,在这个服务里全部没有。 经过仔细研究,发现Nordic的SDK有一个宏“NRF_SDH_BLE_VS_UUID_COUNT”,这个宏是用于控制自定义特征值(准确说是UUID)的数量。这个值默认很小,把它改大一点,就能解决添加服务为空的问题了...原创 2018-12-22 16:22:25 · 570 阅读 · 0 评论 -
BLE连接过程分析及异常断开0x3e错误原因分析
我们知道BLE通信过程是建立在连接基础之上的,按角色不同可以分为蓝牙主设备、蓝牙从设备,也叫中央设备和外围设备。以下简称为主机和从机。一次蓝牙通信,通常由主机发起,从机响应。我在调试蓝牙主机程序的过程中,发现经常会出现“秒断”的现象,即主机连接上从机,然后立马又断开了,断开原因是0x3e。经过查找资料和抓包分析,终于搞清楚了发生这个现象的原因。 先看下BLE核心规...原创 2018-11-04 23:42:17 · 4996 阅读 · 2 评论 -
在BLE芯片QN9021上实现呼吸灯效果
本文记述在低功耗蓝牙芯片QN9021上,利用PWM+定时器实现呼吸灯效果的过程,以及过程的一点心得体会。QN9021是NXP的一款低功耗蓝牙SoC芯片,集成了一个Cortex-M0内核,这里没有用到它的蓝牙功能,因此把它当作一个M0核的单片机即可。 呼吸灯是指灯的亮度由暗逐渐变亮,然后由亮逐渐变暗的一种视觉效果,因为变化的过程与人的呼吸节奏相似,因此称为“呼吸灯”。其...原创 2018-02-28 15:01:24 · 1900 阅读 · 0 评论