- 博客(83)
- 资源 (11)
- 收藏
- 关注

原创 蓝牙低功耗(BLE)协议栈
蓝牙协议栈简介如上图所示,蓝牙协议栈至下而上分为:PHY (物理层)LL (链路层)HCI (主机控制器接口层)L2CAP (Logical link Control and adaptation protocol specificaion,逻辑链路与适配协议规范)ATT (Attribute protocol, 属性层)GATT (Generic Attribute Profile, 通用属性规范)SMP (Security Manager Specification, 安全管理器规程
2020-08-07 17:58:23
3922
转载 Source Insight提示has line endings that are not consistent.Do you want to normalize it
问题现象:Source Insight提示has line endings that are not consistent.Do you want to normalize it。问题分析:windows的行尾与unix不一样。问题解决:关闭这个报警。
2023-04-24 15:36:55
891
原创 使用vscode开发esp32
在vscode中开发esp32设置好下载目录,等待下载完成,下载sdk时默认是从github上拉取,网络不好可能比较耗时。这里会列出来详细的命令点击查看,命令面板或者使用快捷键ctrl + shift + p输入Show Examples Projects这里会列出来当前sdk支持的全部demo这里选择一个blink的demo服务
2022-09-29 16:53:29
11185
原创 vscode忽略某些文件
我们在使用vscode看代码的时候,不想在工作区显示某些文件及文件夹,搜索的时候不想显示不关心的文件,可以使用下面的方法设置。
2022-09-28 19:53:37
6984
1
原创 wifi中的一些基本概念
AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就是一个AP。STA站点,每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)都可称为一个站点。
2022-09-27 18:10:26
898
转载 无线射频专题《协议类,IEEE 802.11/802.11b/802.11a/802.11g/802.11n/802.11ac标准简介》
但是,更高的5 GHz 频率也有一些小的劣势,因为802.11a 的有效范围略低于802.11b/g。另一方面,在高度多径环境中,如室内办公室中,较高的频率可以建立RF 系统增益较高的小型天线,从而抵消较高工作频段的劣势,在这种情况下,OFDM拥有基础传播优势。IEEE 802.11n 在原来的802.11 标准基础上,在物理层增加了多输入多输出(MIMO) 和40 MHz 信道,在MAC 层增加了帧汇总功能(40 MHz 带宽工作的信道提供的物理层数据速率是一条20 MHz 通道的两倍)
2022-09-26 16:51:38
4905
原创 对int变量进行赋值,并非原子操作
一条简单的赋值语句testparam = 100; 这一条赋值指令被编译成了3条汇编指令MOVS r0,#0x64 将0x64也就是100存放到r0寄存器LDR r1,[pc,#36] 根据pc的指针找到testParam的地址,也就是0x000288AC地址的内容写入r1,此时r1的值为0x20002AF4STR r0,[r1,#0x00] 将r0的值写入r1寄存器中保存的地址处,也就是将100写入0x20002AF4地址处,完成对tes
2022-06-13 11:12:27
731
原创 BLE的传输速率
主设备端向从设备传输数据,为了达到最大的传输速率可以采用write cmd(写命令,无需从设备回应)方式向从设备写数据;从设备向主设备发送数据,为了达到最大的传输速率可以使用Notification(通知,无需主设备回应)本文代码以nordic平台为例进行说明影响传输速率的主要因素连接间隔连接间隔传输的数据包数量数据包大小1 连接间隔如果启用了CLE(不受单个连接间隔内,只能发送 4~6个数据包的限制),因此只需要选择一个合适的连接间隔即可,无须使用低功耗蓝牙5.x协议栈中的最小连接间隔(
2022-05-11 23:59:22
3358
1
原创 sqlite语句
查找语句select id,strCN,strEN from String2 where strCN == '' 从表String2中查找三列数据:id、strCN、strEN其中条件是strCN这一列为空。查找语句还可以嵌套使用例如:select id,strCN,strEN from String2 where strCN != '' and id not in (select id from String2 where strEN != '')从表String2中查找三列数据:id、.
2022-05-02 17:14:36
752
原创 C语言杂项
一 结构体赋值编译器 keil 5芯片 nordic52833 typedef struct{ uint8_t a; uint8_t b; uint32_t c; }test_copy_t, *test_copy_pt; test_copy_t m1; test_copy_t m2; m1.a = 10; m1.b = 20; m1.c = 100; memset(&m2, 0, sizeof(m2)); test_copy_pt pm1 = &am
2022-04-19 10:08:18
755
转载 代码注释规范之Doxygen
一 Doxygen简介Doxygen是一个程序的文档产生工具,可以将程序中的注释转换成说明文档或者说是API参考手册,从而减少程序员整理文档的时间。当然这里程序中的注释需要遵循一定的规则书写,才能让Doxygen识别和转化。目前Doxygen可处理的程序语言包含C/C++、Java、Objective-C、IDL等,可产生出来的文档格式有HTML、XML、LaTeX、RTF等,此外还可衍生出不少其它格式,如HTML可以打包成CHM格式,而LaTeX可以通过一些工具产生出PS或是PDF文档等。二 Dox
2022-04-02 15:18:15
2591
2
原创 52840开发板无法烧录程序问题
前段时间在使用nrf52840的开发板调试程序的时候遇到一个问题,开发板可以被识别成jlink,但就是不能烧录程序。解决办法:下载最新jlink固件 https://nsscprodmedia.blob.core.windows.net/prod/software-and-other-downloads/dev-kits/nrf5x-dk-files/j-link-ob-sam3u128-v2-nordicsemi-170724.bin按着复位按键,然后上电。此时在电脑上会出现一个 名字为BO
2022-02-22 10:38:50
1522
原创 C语言消除未使用变量的警告
有些时候定义了某些变量,但是又没有使用到,又不能删掉。想要消除这个警告可以使用://消除param这个未使用的变量产生的警告(void)param;
2022-01-04 17:02:29
3272
原创 详解BLE的数据传输过程
如今的社会已经从IT时代过渡到了DT时代,数据的重要性不言而喻。将数据安全快速的传输给对方是一件非常重要的事情,如今诞生了很多不同的传输技术,每一种传输技术都是为了和对方进行数据交互。BLE技术也是这样,它的最终目的就是为了在两个设备间进行数据交互。我们从BLE的本质出发,搞清楚它是如何实现数据交互的,也就真正搞清楚了BLE的工作原理。下面从3个方面,逐步讲解BLE的数据收发过程。本文结合nordic的代码和蓝牙核心规范5.2来进行介绍。本文认为你对BLE协议栈的各个层已经有了一个大概认识,对BLE协议
2021-12-29 11:54:26
10961
4
原创 四 蓝牙低功耗(BLE)协议栈 之 L2CAP层
一 介绍L2CAP(逻辑链路控制和适配协议层)是一个复用层,可以让低功耗蓝牙复用三条不同的信道。它也支持数据的分割、数据重组、通道多路复用、通道流量控制和错误检测,使得较大的报文可以在底层无线电中传输。L2CAP层提供逻辑通道,即L2CAP通道,这些通道在一条或多条逻辑链路上复用。在经典蓝牙无线电中,L2CAP层提供的功能比这更多,也更为复杂。通道管理器(Channel Manager)提供一个功能控制的控制面板,并负责所有内部信令、L2CAP点对点信令以及高层和低层的信令。重传和流控制块(Retr
2021-12-20 16:58:32
5351
1
原创 BLE主机控制器接口层(HCI)数据结构
HCI上传输的5种数据:HCI Command packet : Host层发送给Controller的命令,只能由Host发出。HCI ACL Data packet: Controller上报给Host的事件,只能由Controller发出。HCI Synchronous Data packet:双向的,Host和Controller都可以发出。HCI Event packet: 发送给对端BLE的数据,双向的。Host和Controller都可以发出。HCI ISO Data packe.
2021-12-20 10:23:17
2383
原创 BLE 链路层(LL)的数据结构
一 链路层的数据结构在链路层上传输的数据格式如下图所示:广播报文和数据报文都包含 Preamble(前导码), AccessAddress(接入地址),PDU(数据),CRC。其中Constant Tone Extension是可选的。前导码接入地址PDUHeaderLengthMIC(可选)CRCConstant Tone Extension(可选)1 前导码报文最开始的8bit是01010101(0x55)或者10101010(0xAA)。这是很简单的交替序列。接收机
2021-12-16 16:23:00
5764
2
原创 softdevice和应用程序之间的交互
一 softdevice介绍softdevice是预先编译好的二进制文件,被烧录在0地址处。softdevice是通过SVC中断和软中断来实现与应用程序交互的。一 应用程序调用softdevice中的方法应用程序通过SV calls调用softdevice中的方法。SVC、事件和选项编号被分成每个 API 模块的子范围。 每个模块接收其整个分配的 SVC 调用范围,无论是否实现,但对于在其范围内未实现或未定义的调用返回 BLE_ERROR_NOT_SUPPORTED。使用连接函数来说明SVC的
2021-12-13 16:59:55
1425
原创 nRF52833 USB Dfu cause hash not match issue.
sdk: 17.0.2chip: nRF52833使用nRF52833做dongle,通过usb_serial进行升级时提示hash值不匹配NordicSemiException('Extended Error 0x{:02X}: {}'.format(resp[3], data))pc_ble_driver_py.exceptions.NordicSemiException: Extended Error 0x0C: The hash of the received firmware imag.
2021-12-09 17:42:45
1298
原创 eclipse 2021不会自动提示代码
新安装的eclipse需要修改两个地方1. Windows -->Preferences --> Java --> Editor --> Content AssistAuto Activation delay(ms), 改成200Auto activationtriggers for java , 改成 .qwertyuiopasdfghjklzxcvbnm ,就是键盘从左到右,从上到下的字母。2. Windows -->Preferences --> Ja
2021-09-14 15:32:44
876
原创 通过Jlink和PyLink读取蓝牙mac地址--Nordic&silicon labs
本文介绍在不开机的情况下读取蓝牙的mac地址,这里介绍两个平台,Nordic和Silicon Labs。1. 通过Jlink Commander工具连接上目标板选择当前芯片的型号2. 使用mem命令查看mac地址首先需要知道mac地址存储在芯片的哪个地址。Nordic:寄存器DEVICEADDRTYPE的第一个bit代表mac地址的类型,这里为1。DEVICEADDR[0]和DEVICEADDR[1]的低16bit代表了MAC地址,其中DEVICEADDR[1]的第15位应该或上DE
2021-09-03 16:13:34
1362
原创 Protocol Buffer在MCU上的实现--C语言
一 什么是Protocol BufferProtocol Buffer是一种支持多平台、多语言、可扩展的的数据序列化机制,相较于XML来说,protobuf更小更快更简单,支持自定义的数据结构,用protobuf编译器生成特定语言的源代码,目前protoBuf对主流的编程语言都提供了支持,非常方便的进行序列化和反序列化。官方网址官方支持的语言有:JavaPythonObjective-CC++DartGoRubyC#这里对Protocol Buffer的语法不做过多解释,这篇文章
2021-08-04 14:46:18
3158
2
原创 Nordic PWM初始化导致P0.0异常
NRF 52833sdk 17.0.2问题描述工程需要配置一路PWM,当配置完PWM之后导致P0.0一直处于高电平。板子使用的是内部RC没有外接低速时钟。问题原因在初始化PWM的时候,没有把未使用的通道设置成 NRF_DRV_PWM_PIN_NOT_USED。因为未使用的通道其值默认为0, 0也就是P0.0了。解决方案在初始化PWM的时候,将未使用的通道设置成 NRF_DRV_PWM_PIN_NOT_USED即可。...
2021-07-30 11:39:47
377
原创 nordic 16.0的sdk编译不过的问题解答
随便打开一个16.0的demo使用keil编译,一打开是这样的。提示没有安装NordicSemiconductor.nRF_DeviceFamilyPack_NordicLicense.8.27.0,然而更加不幸的是8.27.0版本的包官方已经下载不到了。从下面两个官方提供的地址都下载不到8.27.0的包,http://developer.nordicsemi.com/nRF51_SDK/pieces/nRF_DeviceFamilyPack/https://www.keil.com/dd2/Pa
2021-05-26 15:49:20
869
原创 Cortex-M平台使用RTT打印
本文开发环境sdk: gecko_sdk_3.1IDE: Simplicity Studio 5.0将下列文件添加到工程中:其中segger文件夹下的文件是标准文件。下载地址:使用JLink的6.98版本或以上才能正常打印。低版本找不到EFR32BG22系列的芯片类型。JLink下载地址:https://www.segger.com/downloads/jlink/调用方法:void app_init(void){ INIT_LOG();//初始化log LOGI(
2021-03-25 16:04:27
447
原创 silicon EFR32BG22发送单载波
本文开发环境sdk: gecko_sdk_3.1IDE: Simplicity Studio 5.0在项目初期需要调试天线相关的参数,需要芯片发射一个单载波,也就是频率固定的电磁波,以便调整相关参数。#include "em_common.h"#include "sl_app_assert.h"#include "sl_bluetooth.h"#include "gatt_db.h"#include "app.h"#include "sl_bt_api_compatibility.h"
2021-03-25 15:55:31
1173
原创 silicon EFR32BG22 应用内进行OTA
通过Simplicity Studio新建的蓝牙工程默认是带有appLoader的,appLoader的一个缺点就是只能实现单区跟新,而且原厂没有开放appLoader的代码,有的时候可能没办满足用户的需求。比如在更新的时候需要led处于快闪的模式,appLoader就没办法做到。appLoader的更新流程参考: https://blog.youkuaiyun.com/chengbaojin/article/details/113369125下面说一下如何实现在用户的程序中实现OTA。本文使用的环境sdk:
2021-03-25 15:35:16
3111
9
原创 NRF52 开启读保护
读保护作用防止第三方使用调试接口读取flash中的内容。开启读保护的三种方式在代码中开启读保护在APPROTECT的低8位写0表示开启读保护。在工程中的任意源文件中加入如下代码。const uint32_t UICR_APPROTECT __attribute__((at(0x10001208))) __attribute__((used)) = 0xFFFFFF00;使用批处理烧录在烧录hex文件之后执行命令:nrfjprog --rbp使用nRFgo Studio在烧录
2021-02-02 19:52:42
2222
原创 Silicon EFR32BG22低功耗蓝牙开发入门篇
一 环境搭建开发环境使用官方提供的Simplicity Studio,在官网即可下载到。silicon 官网:https://www.silabs.com/该平台的SDK以及文档全部都可以通过Simplicity Studio下载得到,因此下载安装Simplicity Studio是第一步。1 安装SDKSimplicity Studio安装完之后,你的界面就如下图所示。这个工具需要进行简单的注册,注册是免费的。点击下载按钮,下载安装sdk。选择Install by Product Gr
2021-01-29 16:01:08
13485
5
翻译 Direct Test Mode
一 Direct Test Mode直接测试模式。DTM应用程序启用蓝牙规范5.0 vol 6, part F 中描述的DTM测试功能。DTM的目的是在物理层上测试射频的运行情况,例如:Transmission power and receiver sensitivity(传输功率和接收器灵敏度)Frequency offset and drift(频率偏移和漂移)Modulation characteristics(调制特性)Packet error rate(误码率)Intermodu
2020-12-23 11:12:34
3439
原创 system_nrf52.c(29): error: #5: “nrf_erratas.h“: No such file or directory
RTE\Device\nRF52832_xxAA\system_nrf52.c(29): error: #5: cannot open source input file “nrf_erratas.h”: No such file or directoryexternal\nRF5_SDK_14.2.0_17b948a\components\toolchain 将该目录下的system_nrf52.c文件拷贝替换下面文件夹中的文件examples\ble_peripheral\ble_app_uart\
2020-12-18 17:57:13
1846
1
原创 nordic平台,使用Prepare Write Request
本文使用的环境:sdk版本: nRF5_SDK_15.3.0_59ac345硬件平台: nRF52832一 Prepare Write Request准备写入请求。
2020-12-18 13:41:56
1437
翻译 基于nordic平台mesh的入网配置流程
一 Provisioning配置。配置是向蓝牙mesh网络中的新设备提供它们加入网络所需的信息的过程。要成为节点并参与蓝牙mesh网络通信,必须配置每个设备。从配置的角度来看,设备可以是以下类型之一:配置者(Provisioner ) : 充当配置角色。接受配置者(Provisionee):充当节点角色。尽管可以使用多个配置者,但在mesh中仅需要一个配置者即可进行配置。作为配置过程的一部分,配置者和被配置者在配置者的bearer 层上建立通信。该层支持在配置者和未配置的设备之间传输配置P
2020-12-11 22:49:47
2479
翻译 基于nordic平台创建一个新model过程
一 创建新model的步骤本指南介绍了如何创建新model的基础知识。您可以实现自己的自定义模型,该模型将使您的设备能够提供自定义状态和行为,而这些状态和行为未包含在已定义的标准模型中。Bluetooth mesh model APIs,可以参考:mesh models api自定义model分为以下几个步骤:Step 1: 定义各个操作码处理函数Step 2: 将模型分配并绑定到元素Step 3: 设置发布和订阅Step 3.1: 设置发布Step 3.2: 设置订阅1 定义各
2020-12-10 22:42:36
823
网络调试助手android版本
2022-09-29
siliconSpace.7z
2021-01-29
Si106x tools.7z
2020-06-06
Si106x-8x.pdf
2020-04-14
SNP70032_Programming_Guide_V1.0.pdf
2015-05-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人