自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一颗偏执的心

坚持积累、缩小差距、一直走在成为大神的路上。Keep Fighting Now!!!

  • 博客(252)
  • 资源 (4)
  • 收藏
  • 关注

原创 基于ESP32的nimble-host蓝牙协议栈移植分析

ESP32蓝牙协议栈NIMBLE-HOST协议移植分析目录ESP32蓝牙协议栈NIMBLE-HOST协议移植分析一、 nimble 蓝牙协议栈介绍二 、关于esp32移植的内容分析2.1 关于/porting 目录移植2.2 /nimble 目录移植三、 根据ESP32-NIMBLE-blehr的例子分析程序流程3.1 main()函数分析3.2 移植实现的esp_nimble_hci文件进行分析一、 nimble 蓝牙协议栈介绍1、 蓝牙协议栈目录协议栈

2021-07-31 16:14:58 4493

原创 基于ESP32的Bluedroid蓝牙协议栈架构分析(2)--- ADV广播流程分析

为了分析ESP32的蓝牙接口,是如何在协议栈上运行的,现在以最简单的启动广播为例,分析Bluedroid蓝牙协议栈整体流程。具体过程如下:esp_ble_gap_start_advertising()esp_err_t esp_ble_gap_start_advertising(esp_ble_adv_params_t *adv_params){ btc_msg_t msg; btc_ble_gap_args_t arg; ESP_BLUEDROID_STAT..

2021-05-21 17:15:09 2008 4

原创 基于ESP32的Bluedroid蓝牙协议栈架构分析(1) --- HCI线程分析

2021-05-21 10:41:59 3594 4

原创 ble mesh 学习笔记(6) 如何对接天猫精灵蓝牙mesh

MESH设备接入天猫精灵的步骤1、设备在天猫精灵mesh 网络中所具有的怎么样功能 ?1.1 目前根据mesh协议能实现如下功能节点。(1) Node: 网络边缘的节点,没有relay功能,一个没有其他特性的mesh节点。  (2) Low power node: 低功耗节点,由于有friendnode的存在,low power node不需要一直在广播信道发送或者监听数据包,可以更节省功耗。Low power node只需要定期的从它的friend node查询是否有数据到达就可以。 

2021-01-14 20:04:36 5682

原创 ble mesh 学习笔记(9)telink的mesh-lpn代码分析

一、配网过程事件处理1.1 配网发送广播状态​ 由于lpn节点支持 pb_gatt_adv 和 pb_adv两种广播1.1.1 pb_gatt_adv发送pb_gatt_adv采用telink_ble的方式,执行广播的流程如下://广播发送过程,由系统回调执行->>app_advertise_prepare_handler()--->>ga...

2020-04-16 09:04:13 2701 1

原创 A2DP协议总结

2021-12-07 11:52:15 1585

原创 基于BK蓝牙RW-BLE协议栈调度逻辑梳理

2021-12-03 09:45:33 2201 3

原创 ble-mesh学习笔记(11)小米平台ble-mesh概述

小米平台ble-mesh开发1、方案选择2、支持特性说明: 必须用小米的模组,才能接入小米的ble-mesh平台 目前模块只支持手机gatt升级,网关ota升级方案在Q3上线 目前模块只支持relay功能,不支持代理功能 ota特性 。 200K 固件升级 耗时30s ,realtek模组升级过程平均电流在2MA 支持分组控制 不支持手机直接连接控制设备,都是通过app->cloud->gateway->device方式进行

2021-04-08 16:36:55 2145

原创 通用LED闪烁代码模块(也可实现软件PWM)

仅提供参考文件:1、需要修改gpio引脚2、需要根据平台实现软件定时器接口,启动,停止,回调,三个API。/* * pwm_drv.c * * Created on: 2021年3月3日 * Author: Administrator */#include "pwm_drv.h"#include "appled.h"enum { PWM_LED = 0x00, PWM_CHANNELS = 0x01};UserPwm_t userPwm[PWM.

2021-03-04 11:23:52 819 1

原创 ble mesh学习笔记(10)mesh网络各种key的应用

一、网络密钥(Network Key)应使用符合核心规范要求的随机数生成器生成。 网络密钥层次结构的图示如图所示。1、用NID EncryptionKey PrivacyKey 来对mesh网络数据加密。2、Network ID 安全网络广播 以及GATT网络广播3、IdentityKey 用于节点识别广播其中hash就是采用 IdentityKey生成。4、beaconkey二、应用密钥(App...

2021-01-19 11:18:50 2356

原创 ble mesh 学习笔记(7)理解mesh协议proxy代理

1、Proxy 简介:Proxy 协议能够让节点收发Network PDUs、mesh beacons、proxy configuration、Provisioning PDUs通过面向连接的承载层。Proxy protocol 定义了两个角色:Proxy Server和Proxy Client。Proxy Server是一个mesh 的一个节点,可以完成广播承载层和GATT承载层的转换。Proxy Client可以使用GATT承载层发送mesh messages给支持广播承载层的节点。

2021-01-14 20:08:37 2254

原创 ble mesh学习笔记(5) mesh数据PDU封包理解

mesh 网络数据协议格式:access payload 协议格式:Upper transport layer协议格式:消息分为: control message (friendship control/heartbeat control) access message 消息被进行加密处理,加密完成后根据数据大小进行分包处理。 Lower transport layer数据协议格式: 不分包access message数...

2021-01-13 14:17:44 1771

原创 ble mesh学习笔记(4)元素model的理解

说明:涉及代码模块为Telink-mesh-sdk一、 Composition Data 结构定义mesh节点Composition Data 数据定义元素个数以及元素下model个数与model-id数据结构如下: 代码结构体如下: 节点端目前采用的是一个元素结构内包含多个model. mesh_composition_data_local_t model_sig_cfg_s_cps = { // can't extern, must static { ...

2021-01-13 14:07:04 3009 1

原创 ble mesh学习笔记(3)mesh节点设备广播类型

蓝牙Mesh网络一共有3种广播包,如下图所示1、PB-ADV的包是用在Provisioning过程的,Provisioning是一个设备加入Mesh网络的过程。2、Mesh Message,这个是在设备入网后,进行数据通信的时候大量使用的包。节点间通信就是使用这种包进行的。3、Mesh Beacon包含两种类型:Unprovisioned Device beacon和Secure Network beacon,其中Unprovisioned Device Beacon是用来被Provi.

2021-01-11 18:15:24 2626

原创 ble-mesh 学习笔记(2)-如何给mesh-node配网

1、配网方式选择基于手机设备为provisioner进行进行PB-GATT 配网 如果一个蓝牙4.0的手机需要用作Provisioner,并完成对其他节点的配网过程。则需要使用Mesh Provisioning Service服务来对其他节点配网。在手机和其他节点建立GATT连接之前,未配网mesh节点需要广播PB-GATT的广播包。基于蓝牙mesh网关设备为provisioner进行PB-ADV配网 在蓝牙mesh网关设备和其他节点建立连接之前,未配网mesh节点需要...

2021-01-11 17:32:41 2921 3

原创 ble-mesh笔记整理(1) ble-mesh通信理解

最近有时间将之前整理的,关于蓝牙mesh开发学习过程的一些笔记,以及一些对mesh协议文档理解的翻译文档,发布出来给大家一起学习和参考,主要是一个学习的过程参考。蓝牙Mesh通过网状网的组网结构,可以实现室内的大范围网络覆盖。节点(Node)组成了蓝牙Mesh的主干网络,在Node之间使用了低功耗蓝牙的技术进行对连,而具有不同能力特性的节点在网络中承担了不同的角色。承担网络角色,需要节点之间遵守蓝牙Mesh的语法(通信规则、数据格式)进行对话,通过协商组成网络并向应用提供网络路由服务。节点.

2021-01-11 16:37:22 8857 2

原创 C# 解决串口接收数据不完整处理方法

使用缓存机制完成。首先通过定义一个成员变量List<byte>buffer=newList<byte> (4096);用来存放所有的数据,在接收函数里,通过buffer.AddRange()方法不断地将接收到的数据加入到buffer中,并同时对 buffer中的数据进行检验,如果达到一定的长度并且校验结果正确(校验方法在发送方和接收方一致),再进行处理。//针对数据协议:head + len + playload + check 类型private...

2020-12-22 19:13:37 12188 6

转载 C# winform存储配置文件之App.config文件读写

有时候一些用户的配置需要写入在本地,不能每次程序启动都让用户重新设置一下吧。下面先说基本用法:1、创建winform项目之后自动会生成App.config文件,如果默认没有,就对项目右键-新建项-APP配置文件这个文件创建后自动就有的,如果没有就新建一个,我们可以往里面添加需要的数据:<?xml version="1.0" encoding="utf-8" ?><configuration> <appSettings> <ad

2020-12-22 17:44:45 2668

转载 C#窗体缩放时窗体上控件同缩放比例变化

1.定义2个全局float 变量X,Y,用来记录窗体默认窗口时的宽度和高度。  floatX;//默认窗口的宽度  floatY;//默认窗口的高度2.窗体Load的时候将窗体的宽度、高度赋值给X、Y。  private voidForm1_Load(objectsender,EventArgse)  {    X =this.Width;//将窗体的宽度赋值给X  Y =this.Height;//将窗体的高度赋值给Y...

2020-12-16 16:55:52 806 2

原创 ZigBee生产测试项说明

2020-12-11 13:44:11 800

原创 EFR32芯科zigbee学习文档资源总结

硬件相关efr32mg21外设例程世强资源 【经验】如何将EFM32和EFR32的烧录引脚配置成GPIO? 【经验】多协议无线 SOC EFR32MG实现ZigBee的OTA操作指南 在rejoin的时候降低功耗 【经验】EFR32低功耗ZigBee节点设计之硬件注意事项 【经验】多协议SoC芯片EFR32MG21与EFR32MG1有哪些区别? 【经验】浅析Zigbee射频测试相关标准 【经验】支持多协议SOC芯片WSTK使用第三方串

2020-12-10 09:48:20 1966

转载 EFR32芯片Zigbee设备OTA存储结构和ota地址设置

OTA upgrading is an important feature for Zigbee devices. There is a detailed guide about setting up OTA server and client,AN728, but we still need to learn more about the storage settings.Application upgrading is done by Gecko Bootloader. Gecko B...

2020-12-10 09:31:57 1250

转载 NXP ZigBee学习文档集合

另外一篇介绍:《NXP ZigBee如何增加自定义Cluster》可以参考恩智浦的zigbee 3.0协议栈中,已经实现了zigbee联盟定义的大部分标准Cluster,用户可以直接使用接口开发。这些标准的Cluster可以和其他符合zigbee标准的厂商产品直接对接使用。但是有些客户想实现自己私有的Cluster,NXP的协议栈预留了相应的接口,为了加快开发,本文将演示如何添加私有的Cluster进行透传。1. 基本概念Cluster由属性(Attribute)以及命令(Command)组成。...

2020-08-25 10:49:45 959

转载 C语言共用体(C语言union用法)详解

转载重点:共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。图形分析影响过程通过前面的讲解,我们知道结构体(Struct)是一种构造类型或复杂类型,它可以包含多个类型不同的成员。在C语言中,还有另外一种和结构体非常类似的语法,叫做共用体(Union),它的定义格式为:union 共用体名{ 成员列表};共用体有时也被称为联合或者联合体,这也是 Union 这个单词的本意。结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所...

2020-08-06 15:31:55 9731 8

原创 C# 上位机使用LibUsbDotNet方法实现USB通信

一、usb驱动安装安装步骤如下: 按照如图所示操作 第三步:安装设备驱动步骤如下,其中保存配置文件到任意目录下即可: 至此 usb驱动安装完成,USB设备可以被上位机识别。 备注说明:最后一步安装驱动可能受系统权限限制,需求更改usb安装设备权限,具体操作步骤参考如下链接操作:https://jingyan.baidu.com/article/73c3ce2853802ce50343d918.html《Win...

2020-07-01 15:18:35 10093 3

原创 c# 在LibUsbdotnet库进行USB操作时使用GetOverlappedResult()接口异常解决办法

在 System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success) 在 System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success) 在 LibUsbDotNet.Internal.Kernel32.GetOverlappedResult(SafeHandle hDevic...

2020-07-01 15:18:30 1115

转载 蓝牙无线测试相关参数与方法

原文链接:https://www.21ic.com/app/test/201808/788512.htm蓝牙无线测试配置包括一台测试仪和被测设备(EUT, Equipment Under Test),其中测试仪作为主单元,EUT作为从单元。两者之间可以通过射频电缆相连也可以通过天线经空中传输相连。测试仪发送LMP指令,激活EUT进入测试模式,并对测试仪与EUT之间的蓝牙链路的一些参数进行配置。如测试方式是环回还是发送方式,是否需要进行跳频,分组是单时隙分组还是多时隙分组,分组的净菏是PN9,还是0000

2020-06-10 15:20:04 3190

原创 ble_mesh学习笔记(8) 关于IV index 更新详细理解

iv index 更新过程说明文档IV 索引是一个 32 位值,它是共享网络资源,网络中的所有节点共享 IV 索引的相同值,并将其用于它们所属的所有子网。 IV 索引从 0x0000000 开始,并在 IV 更新过程中递增,每个Network PDU中包含了IV Inedx的最低位,如果主子网上的设备在主子网上收到更新,则应将 IV 更新传播到所有其他子网。 IV Index 通过 Se...

2020-04-26 09:45:59 3207

原创 nordic52832+SDK15.2+TIMESLOT 实现ble 与2.4g射频一起工作。

实现参考相关文章:https://blog.csdn.net/wuwovicky/article/details/88675021https://www.docin.com/p-2116477780.html基于最新SDK有几个相关文件需要修改如下:1、timeslot.c文件修改:#include <stdint.h>#include <stdbool....

2019-09-05 16:07:01 2443

转载 nrf5x radio射频模拟ble广播数据

转载于:http://blog.chinaunix.net/uid-28852942-id-5745469.html这里我们用51822的radio来实现ble的广播包。下图是51822空中包的格式。Preamble:该部分会根据接入地址而自动设置,不需要我们去设置ADDRESS:由BASE和PREFIX组成,就是前面理论部分说的接入地址,对于广播 信道的数据包来说,接...

2019-07-25 17:17:43 2121 1

原创 nrf52832 -sdk15.2在ble-uart工程下移植dfu实验

前期准备1、生成secure_bootloader由于编译BootLoader需要安全加密,按照网上大多数教程基本可以完成注意初始生成的秘钥key 在之后的升级过程中应该始终保持一致,否则无法升级2、移植dfu生成ble-uart-with-dfu 固件为了让ble_app_uart具有DFU功能,有2种做法,一是把NUS服务移植到ble_app_buttonless_dfu中,这种方法...

2019-04-09 17:31:02 3202 3

原创 Esp32开发教程资料

安可信开发教程文档:https://wiki.ai-thinker.com/esp32/docs乐鑫资料集合https://blog.csdn.net/xuanze0/article/details/79093124https://www.espressif.com/zh-hans/support/download/documents ...

2018-12-03 18:46:36 20185 1

转载 vs2017+GDB开发esp32

原文链接:https://cloud.tencent.com/developer/news/289393到了5.4版后,画风变了,首先是esp32放弃了c++的内容,工具链也采用原封的esp-idf,最为重要的是例程变多了,将esp-idf中的所有例程都开放了,并在烧写上有了进步。 最好安装前都按照官方提升更新到最新,包括工具链以及esp-idf,不然有可能出现各种错误。 ...

2018-12-03 18:45:58 2782 1

原创 da14580笔记(4) -------串口透传代码流程框架分析

这篇博客只是根据透传数据流,分析大致流程涉及到的函数框架,对过程进行梳理,有利于理解程序,具体细节可以仔细再研究代码。主要分析了   1、pc ----&gt;&gt; ble------&gt;&gt;手机                           2、  手机----&gt;&gt; ble------&gt;&gt;pc  的数据流主要代码流程框架分析1、 pc...

2018-11-13 11:36:14 2573

原创 da14580笔记(3)-------一些重要的点(持续更新)

1、关于待机广播功耗如果没有其他传感器工作,广播间隔在1s ,待机(有广播)的情况下电流在10uA以内,链接状态下,如果间隔是500ms,电流应该在20uA左右(没有其他数据通信)。在扩展睡眠模式下,不广播功耗大概1-2uA,广播模式下,根据广播间隔功耗相差较大。2、关于降低功耗排除硬件是否有漏电(LDO漏电,休眠时IO口状态导致漏电等),其次其外围传感器待机功耗的影响,软件方面,是否...

2018-11-12 17:38:51 2857

原创 通用button代码模块(使用状态机+回调)

通常普通的按键扫描程序,网上一大堆,基于扫描延时防抖等简单的操作,这里要讲的的遇到复杂的按键处理程序,普通按键扫描:基于一个按键的短按长按释放复杂的按键扫描:有组合按键,且按键也有长短按,以及释放现在如何实现一个按键扫描模块去处理这种按键扫描程序呢?这里用到按键状态机为基础框架。对按键编码能较好的实现复杂按键处理。一、对按键进行编码具体实现参考如下...

2018-11-07 23:40:28 3947

原创 DA14580笔记(2)-------睡眠状态下按键唤醒

对于DA14580的唤醒,其主要有两个唤醒源。1、一个是同步唤醒源,来源于BLE的内部定时器(默认10秒)和BLE事件;2、一个是异步唤醒源,即唤醒中断,可以配置为任意引脚唤醒,其即使用cortex M0指定的WIC技术。WIC(wakeup interruptcontroller)是独立于CPU和中断控制工作的,但WIC检测到电平变化(也可以计数到指定数值时)即会提醒PMU给CPU供...

2018-11-06 17:26:04 3104 1

原创 DA14580笔记(1)------- 睡眠模式下使用jlink在线调试的方法

1、屏蔽main.文件中屏蔽如下代码: // if ( (app_get_sleep_mode() == 2) || (app_get_sleep_mode() == 1) )// {// SetWord16(SET_FREEZE_REG, FRZ_WDOG); // Stop WDOG until debugger is removed...

2018-11-06 16:49:24 1630

原创 c# 事件(Event)机制

重新熟悉一下委托和事件。通过事件使用委托事件在类中声明且生成,且通过使用同一个类或其他类中的委托与事件处理程序关联。包含事件的类用于发布事件。这被称为 发布器(publisher) 类。其他接受该事件的类被称为 订阅器(subscriber) 类。事件使用 发布-订阅(publisher-subscriber) 模型。发布器(publisher) 是一个包含事件和委托定义的对象。事件和...

2018-10-24 18:43:56 14886 2

原创 c# 开发一个基于硬件交互的SDK(DLL)

     作为上位机与硬件交互产品,经常需要提供硬件产品SDK给客户,客户根据SDK进行二次开发的情况,今天就写一个如何简单的SDK,并基于串口交互(有些基于tcp网络),只是提供一个思路。一、定义一个上位机与硬件的交互协议类: 如下namespace devicedapi{ public class datapro { private byte Dat...

2018-10-24 15:15:55 7326

mesh官方文档.rar

word版本可以方便在office word进行翻译

2021-04-30

蓝牙产品测试入门指南.pdf

蓝牙产品测试方案与测试项说明,关于产品认证测试以及产品性能测试等,以小白的角度从零开始介绍,对产品测试新手具有很好的科普作用。

2020-07-09

单片机C语言程序设计实训100例—基于8051+Proteus仿真

单片机C语言程序设计实训100例—基于8051+Proteus仿真

2015-09-22

单片机学习

快速学习单片机及嵌入式,以及快速掌握一些语法知识

2014-11-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除