自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

留下虚度光阴的一些证据。

免费学习笔记收留地

  • 博客(136)
  • 收藏
  • 关注

原创 PDFMathTranslate-翻译 ble core 5.4全文

放假刚好有空,作为主职为ble的开发人员,想熟悉一下ble core 5.4文档的相关内容,中文作为母语可以有一目十行的阅读速度,用中文文档阅读后对后续找对于ble协议的一些流程英文内容会更迅速和简单,下面章节是照着开源项目官网的步骤部署记录。16k star的优秀开源项目,下载该项目后使用命令行安装,由于需要确保版本大于 3.8 且小于 3.12 的 Python,用conda创建一个3.9的虚拟环境,而后用pip安装对应的库即可。腾讯翻译效果一般吧 下次再试试其他模型。

2025-02-08 10:15:38 509

原创 BLE-channel-sounding

翻译自:mrn-channel-sounding其余技术文档参考:https://www.silabs.com/wireless/bluetooth/channel-soundinghttps://iot.ofweek.com/2024-09/ART-132209-8500-30645363.htmlhttps://www.bluetooth.com/zh-cn/core-specification-6-feature-overview/短程无线连接领域正以惊人的速度发展。曾经主要专注于设备之间数据收发的技

2025-01-16 14:47:27 1094

原创 蓝牙定位技术

蓝牙测向(Bluetooth Direction Finding)是一种利用蓝牙技术实现定位和测向的方案。它通过使用多个天线和对信号进行相位测量来确定蓝牙设备的位置和方向。以下是一个基本的蓝牙测向定位方案的工作原理:多个天线阵列:蓝牙测向系统通常包括一个由多个天线组成的天线阵列。这些天线可以位于同一个设备上,也可以分布在不同的位置。相位测量:当一个蓝牙设备发送信号时,不同天线接收到的信号会有微小的相位差异。蓝牙测向系统通过对这些相位差进行准确测量,可以确定信号源的方向。

2025-01-03 14:38:56 843

原创 BLE core 内容整理解释

Feature Exchange Procedure 是 BLE 链路层中的重要步骤,用于功能协商,确保设备之间的兼容性。它是 BLE 协议栈中实现动态适配和优化的重要机制之一。如果需要了解具体的实现方式或调试示例,请告诉我!

2024-12-26 22:14:31 1045

原创 BLE mesh model 汇总

Bluetooth Mesh 模型(Mesh Model)是 Bluetooth Mesh 网络中的一种抽象概念,用于定义设备的行为、功能和交互方式。在 Bluetooth Mesh 网络中,模型是节点(Node)上的一个软件组件,每个模型通常代表了某种特定的功能,比如开关、调光、传感器数据采集等。模型通过消息(Messages)进行通信,消息是模型之间相互作用的主要方式。

2024-08-22 09:11:28 1475

原创 tabby+mobaxterm打造服务器环境

tabby+mobaxterm打造服务器环境

2024-06-13 09:20:45 604

原创 ncs sdk nrf5340 运行DFU

Nordic 的 DFU(Device Firmware Update)是一种用于更新设备固件的技术和协议。Nordic Semiconductor 是一家专门设计和制造无线芯片的公司,他们的产品主要用于物联网(IoT)和无线连接应用。Nordic 的 DFU 技术允许用户通过无线方式更新连接到 Nordic 芯片的设备的固件。DFU 技术的主要优势在于它提供了一种便捷的方式来更新设备的固件,而无需使用专门的编程器或物理连接。

2024-05-13 21:40:06 976

原创 【ble mesh】- meshctl作为配网者与nrf5340和杰理ac632配网

mesh功能也是类似的操作,它的前台执行程序和后台执行程序分别是mesh-cfgclient和bluetooth-meshd,核心的业务逻辑在bluetooth-meshd中实现。

2024-02-07 21:48:42 1501

原创 nRF 5340环境搭建和工具下载

nRF 5340环境搭建和工具下载

2024-01-09 21:51:08 1470 2

原创 c语言tips-宏连接

使用双井号(##)进行标识符连接的宏连接。双井号是C预处理器中的连接操作符,用于将两个标识符连接成一个新的标识符。这种宏连接的功能使得我们能够在宏定义中动态生成标识符,以实现更灵活的代码生成。

2023-10-06 15:50:52 1966

原创 BLE协议栈1-物理层PHY

如下图,ble协议栈大体可以主要分为host和controller两个层次,其中主机层(Host)位于BLE协议栈的上层,通常运行在主机设备上,如智能手机、电脑或其他嵌入式系统。它提供与应用层和用户接口的交互,并处理高层协议的逻辑,如GAP(Generic Access Profile)和GATT(Generic Attribute Profile)。主机层负责管理BLE设备的连接、数据传输、设备发现、安全性等。控制器层(Controller)位于BLE协议栈的下层,通常是嵌入在BLE芯片中的硬件模块。

2023-10-06 15:11:45 757

原创 c语言tips-c语言的虚函数实现

学过面对对象的同学都知道虚函数是面向对象编程中的一个重要概念,它允许在基类和派生类之间实现多态性(polymorphism)。我们可以在基类去定义一个成员函数,然后再派生类再去覆盖写它,这样在不同派生类使用相同函数名就可以实现不同的功能。下面可以看一下c++和python是如何做的虽然c语言是个面向过程的语言,但是使用属性依旧能够实现面向对象的虚函数的概念,在某些场合中对于整体代码的维护和开发有着重大作用。全网好像也没有比较详细的对__attribute__((weak))属性。

2023-09-03 17:39:29 1096

原创 蓝牙ble tips3-MAC地址

和计算机网络IP地址类似,BLE也会有属于自己的一个地址。

2023-08-04 11:09:54 4276

原创 蓝牙ble tips2-UUID GATT(service和CHARACTERISTIC) profile相关概念介绍

例如,在一个智能手环和智能手机之间的连接过程中,通过GATT协议,智能手环向智能手机提供了一组服务,这些服务包括手环实时步数监控等功能,并提供相应的特征及其属性值。蓝牙设备在应用层是通过服务和特性去实现的,用下面这张图进行表示,一个服务里面包含若干个特性,每个特性里面又可以有读写,通知等权限,每一个服务和特性都要有一个UUID,UUID是蓝牙组织定义的,用于区分各个服务和特性的标识符,总长度是128bit,比如下面就是两个标准的UUID。的操作是需要对方响应回复命令,多用于数据交互带流控和可靠的传输方式。

2023-08-04 11:00:41 2405 2

原创 蓝牙BLE tips1-广播

一个广播信道最长37字节,有6字节用作蓝牙设备的MAC地址,我们只需要关注剩余的31个字节就可以了,这31个字节又给分为若干个广播数据体,蓝牙规范中称为AD Structure,每个结构体又分为三部分组成,分别是长度,类型,内容,其中长度占用一个字节,类型一个字节,内容占用若干个字节,长度=类型的字节数+内容占用的字节数=1+N。广播数据是主动发射的,而扫描响应的数据是在收到其他设备的扫描请求之后才会触发的,蓝牙广播最多只能广播31个字节的数据,如果想发送更多的字节,我们可以把一部分数据放到扫描响应里面。

2023-08-04 10:53:54 1021

原创 c语言tips-c语言结构体属性之__attribute__((packed))

事情是这样的,最近在做代码移植时见到了这样一段代码心里飘过一万个疑问?这是什么操作,各种结构体包含结构体,各种类型转换,各种取地址符,还把一个uint8的数组的值copy到一个结构体里面?还有结构体为什么后面还加这个鬼东东 fine c语言为什么这么难。

2023-06-26 11:01:37 1409

原创 SIG Mesh协议学习

Mesh网络中的发布-订阅系统(Publish-Subscribe system)是一种非常重要的通信实现方式。它基于订阅者(Subscriber)和发布者(Publisher)之间的事件通信,使得用户能够方便地向多个节点或设备传输数据或消息,进而区分不同目标设备分类收到相对应的信息。在Mesh网络中,执行发布-订阅通信需要确定以下两个主要组件:订阅者:负责接收或订阅感兴趣的消息或事件,并将其处理或转发给其他设备或节点。订阅者同时也会注册自己想要接受的消息类型、范围、地址等相关属性。

2023-06-15 20:48:07 3388

原创 HID协议学习

见上图,报表描述符由描述 HID 设备的数据项目(Item)组成,项目的第一个字节(项目前缀)由三部分构成,即项目类型(item type)、项目标签(item tag)和项目长度(item size)。其中项目类型说明项目的数据类型,项目标签说明项目的功能,项目长度说明项目的数据部分的长度。报表描述符的内容与大小因设备的不同而不同,在进行报表传输之前,主机必须先请求设备的报表描述符,只有得到了报表描述符才可正确解析报表的数据。在HID协议中,设备会向计算机发送一系列的报告,描述设备的状态和用户的操作。

2023-06-15 20:45:58 8993

原创 蓝牙ble的常见概念

对于一些常用的功能,蓝牙组织联盟已经为其定义好了UUID,我们在开发产品的时候直接使用即可。MTU(Maximum Transmission Unit)是指BLE连接中可用于一次性传输的最大字节数。MTU Negotiation(MTU协商)是指在BLE设备之间建立连接时,通过交换ATT MTU Request和ATT MTU Response消息,协商确定两台设备之间MTU的大小。实际上,在建立BLE连接时,服务器会发送ATT MTU Request消息,要求客户端回复其支持的最大MTU大小。

2023-06-15 20:39:15 4159 2

原创 ble系统知识介绍(较为完整,持续更新中)

蓝牙技术自2000年以来就一直存在。最初是为了让两个设备在无需任何中间网络设备的情况下进行无线数据交换,很快就被应用于产品,如无线鼠标和汽车免提套件。后者是音频产品,而音频证明了这种原始版本的蓝牙技术的成功应用。多年来一直如此。这种第一版蓝牙技术,在最早的蓝牙产品中使用,正式称为蓝牙BR(基本速率)。它在物理层上提供了1百万比特每秒(1 mb/s)的原始数据速率。后来,定义了更快的蓝牙技术版本,称为蓝牙BR / EDR(增强型数据速率)。

2023-06-04 18:01:48 4493 5

原创 c语言基础知识(知识点较为完整)

计算机和c语言基础知识计算机常识什么是计算机?顾名思义,就是能够进行数据运算的机器(台式电脑、笔记本电脑、平板电脑、智能手机)计算机_百度百科计算机的发明者是谁 ?关于电子计算机的发明者是谁这一问题,有好几种答案:1936年英国数学家图灵首先提出了一种以程序和输入数据相互作用产生输出的计算机构想,后人将这种机器命名为通用图灵计算机1938年克兰德·楚泽发明了首台采用继电器进行工作的计算机,这台计算机命名为Z1,但是继电器是机械式的,并不是完全的电子器材194

2023-05-23 18:01:58 697

原创 物联网通信协议-MQTT及使用python实现

MQTT协议广泛用于物联网设备的消息传输,关于MQTT和MQTT的使用,MQTT的服务软件Mosquitto的搭建和使用,MQTT的python开发软件包paho-mqtt的使用,以及我们的物联网平台如何集成MQTT消息服务及其代码开发。我们在上次课讲到的iotplus使,用MQTT的三个场景还是非常复杂的,在正式开发MQTT的功能之前,我们需要掌握MQTT的python软件库的使用。主流的MQTT是基于TCP连接进行数据推送的,但是同样有基于UDP的版本,叫做MQTT-SN。命令行MQTT客户端。

2023-05-23 11:04:32 7105 2

原创 计算机网络-SNMP协议与pysnmp

SNMP协议是位于计算机网络的应用层,文章是我在实习中需要用到snmp时整理的笔记,内容主要来源于b站的视频

2023-05-14 16:03:54 1251

原创 2022.5.11-5.18粤嵌课程记录

粤嵌linux开发学习记录

2023-05-13 18:49:08 1533 4

原创 数据结构与算法基础知识

数据结构与算法基础知识

2023-05-13 18:40:43 2491

原创 django-restful-framework基础知识

DRF基础知识

2023-05-13 18:06:14 2743 2

原创 django基础知识详解

django基础知识详解安装Django的卸载$ pip3 uninstall djangoDjango 的开发环境2.2 Django项目的目录结构2.2.1 作用:此文件是项目管理的主程序,在开发阶段用于管理整个项目的开发运行的调式特点: 包含项目管理的子命令, 如: 启动服务 创建应用 数据库迁移可以显示帮助文档,查看所有选项2.2.2 mysite1 项目包文件夹特点:项目包的主文件夹(默认与项目名称一致)2.2.3 包初始化文件,当此项目包被导入(

2023-05-13 17:52:37 3696

原创 docker笔记详解

官方定义: docker是一个容器技术。在开发的时候,在本机测试环境可以跑,生产环境跑不起来这里我们拿java Web应用程序举例,我们一个java Web应用程序涉及很多东西,比如jdk、tomcat、mysql等软件环境。当这些其中某一项版本不一致的时候,可能就会导致应用程序跑不起来这种情况。

2023-05-13 17:21:21 748

原创 树莓派4B配置CSI摄像头问题汇总

最近在重新配置树莓派4B的摄像头,花了很多时间去测试实验解决,最终用以下的方法解决了问题,记录一下。

2023-04-13 17:18:35 6295 10

原创 freertos源码学习1----list实现

freertos的源码list操作

2023-04-03 16:19:09 424

原创 freertos学习之路7-将freertos移植到STM32f103x

FreeRTOS 的 port.c 是一个抽象层代码,用于将 FreeRTOS 内核代码与特定于处理器的代码分离开来,以便在不同的处理器架构上移植 FreeRTOS。由于野火的板子灯只有一个,但是可以通过不同IO口的输出来控制灯的颜色,因此实验现象就是一会闪蓝灯一会闪红灯,并在串口输出LED1和LED2的信息。查看这个串口打印出来的数据的时间可以发现,和我们预设的延迟500ms和1s基本一致,这也有力的验证了实时操作系统的实时性。定义了挂起和恢复中断的宏,可以确保临界区代码的正确性。

2023-03-31 16:39:10 374

原创 stm32f103-demo-在tft1.44显示HCSR04超声波距离

本文例子基于野火指南者开发板(),用的是标准库编程,TFT1.44和HC-SR04都是用于软件IO模拟去实现时序图,因此基本适用于所有的stm32f103,主要是实现了在TFT1.44上显示超声波传感器HC-SR04的距离HC-SR04和TFT1.44的代码都是参考网上移植的目录和代码风格也是参考火哥的风格,便于移植。

2023-03-25 16:16:52 797 1

原创 STM32外设-定时器详解

通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作16位向上、向下、向上/向下自动装载计数器16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意数值输入捕获输出比较。

2023-03-21 11:33:46 1981

原创 一文讲解清楚UART IIC SPI外设协议

串口通信是一种通过串口进行数据传输的通信方式,它是计算机和外部设备之间的一种基本的串行通信方式。串口通信通常使用异步串行传输,即数据位和停止位之间的时间间隔是不固定的,这种通信方式在现代计算机系统中已被大多数人认为过时,但是在很多嵌入式系统和一些老旧设备上,它仍然被广泛使用。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。

2023-03-16 13:28:31 1914

原创 存储器分类和介绍

存储器是计算机结构的重要组成部分。存储器是用来存储程序代码和数据的部件,有了存储器计算机才具有记忆功能。基本的存储器种类见图基本存储器种类。存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。其中的“易失/非易失”是指存储器断电后,它存储的数据内容是否会丢失的特性。由于一般易失性存储器存取速度快,而非易失性存储器可长期保存数据,它们都在计算机中占据着重要角色。在计算机中易失性存储器最典型的代表是内存,非易失性存储器的代表则是硬盘。

2023-03-15 22:38:56 1686

原创 stm32外设-DMA

DMA(Direct Memory Access)—直接存储器存取,是单片机的一个外设,它的主要功能是用来搬数据,但是不需要占用 CPU,即在传输数据的时候, CPU 可以干其他的事情,好像是多线程一样。数据传输支持从外设到存储器或者存储器到存储器,这里的存储器可以是SRAM或者是FLASH。DMA 控制器包含了 DMA1 和 DMA2,其中 DMA1 有 7 个通道, DMA2有5个通道,这里的通道可以理解为传输数据的一种管道。要注意的是 DMA2 只存在于大容量的单片机中。

2023-03-15 22:08:24 1451

原创 stm32外设-中断详解

0. 写在最前本栏目笔记都是基于stm32F10x1. 中断是啥?什么是中断:CPU在处理某一事件A时,发生的另外某一事件B请求CPU去处理(产生了中断),随后CPU暂时中断当前正在执行的任务,去对事件B进行处理,CPU处理完事件B后再返回之前中断的位置继续执行原来的事件A,这一过程总称为中断。我们都知道单片机裸机又称为前后台系统,前台系统指的中断服务函数,后台系统指的大循环,即应用程序,我们可以用中断打断这个大循环的运行,然后做一些处理2. 中断源使CPU中断的事件称中断源。中断源向CP

2023-03-15 11:13:22 1815

原创 【c语言tips】-位运算符(<< >> & | ~ ^)

1. 左移(<<)1.1 概念在C语言中,左移操作符(<<)会将被操作的数向左移动指定的位数,右侧补0,得到一个新的结果。左移操作符的一般语法如下:result = value << n;其中,value是要进行左移操作的数,n是要左移的位数,result是左移后的结果。左移操作符可以用于快速计算2的幂次方,例如2的n次方可以用左移n位的方式进行计算。左移操作符也可以用于对比特位进行操作。需要注意的是,如果左移的位数超出了该类型所能表示的位数范围,或者左移后

2023-03-15 10:08:23 4514 2

原创 stm32外设-RCC

RCC是Reset and Clock Control (复位和时钟控制)的缩写,它是STM32内部的一个重要外设,负责管理各种时钟源和时钟分频,以及为各个外设提供时钟使能。RCC模块可以通过寄存器操作或者库函数来配置。RCC是复位和时钟控制模块,它负责管理STM32内部的各种时钟源和时钟分频,以及为各个外设提供时钟使能。时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。不同的外设可能需要不同的时钟频率,所以RCC模块可以通过寄存器操作或者库函数来配置系统时钟和总线时钟。

2023-03-12 10:47:43 7282 2

原创 stm32外设-GPIO

是通用输入输出端口的简称,简单来说就是软件可控制的引脚, STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能保护二极管及上、下拉电阻引脚的两个保护二级管可以防止引脚外部过高或过低的电压输入,当引脚电压高于VDD 时,上方的二极管导通,当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。尽管有这样的保护,并不意味着STM32的引脚能直接外接大功率驱动器件,如直接驱动电机,强制驱动要么电机不转,要么导致芯片烧坏,必须要加大功率及隔离电路驱动。

2023-03-11 17:50:48 1663

空空如也

空空如也

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

TA关注的人

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