BLE解调

news2025/1/11 14:54:54

BLE解调前奏

如果不太了解IQ、FSK、GFSK的话,可以看上一篇,有一些关于这些内容的东西,写的应该还算好理解点吧,给出了自己学习时候的参考,具体的看他们写的。

调频与调相之间的关系

IQ调制中,调频是表现在调相中的,是相位变换表现为频率变化,看这篇
https://blog.csdn.net/baowxz/article/details/111180209?ydreferer=aHR0cHM6Ly93d3cuYmFpZHUuY29tL2xpbms%2FdXJsPW5ZLVRkV3l3bUU3ZmZ2ZzRmYy1sanhwaFNnOFhTY2VYSmNzSnBsVzlhZXJhRVgwSWNzV3Vtb3otZTVEUldfMXdIenVVV1g0U1IzUGdIWndjVzNGZU5xJndkPSZlcWlkPWUyYzE5MTc2MDAyMzMxODMwMDAwMDAwMjY0NjM4ZTQ2

BLE解调详细过程

参考来源多篇BLE基带调制解调的硕士论文,知网里一搜就知道,就那几篇。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上面的图虽然不一样,其实大致过程其实都是一样的,某些图屏蔽了一些细节而已,还有一个差别就是,IQ是否直接下变频到基带信号。其过程依次是:

  1. IQ下变频至基带信号
  2. 低通滤波器
  3. IQ到相位的转化(鉴频鉴相)
  4. 相位到数字信号(0,1)的转换(相位差分)
  5. 帧同步(确定AA开始)
  6. 然后再白化等其他接出来所有数据

对于那个频偏补偿,就有点意思了,我还没完全搞懂,有的是在IQ下变频到基带信号是就进行的,有的是在相位差分的时候进行的,好像是不同的频偏补偿算法。

IQ到基带信号

这个就是那个IQ调制解调了,三角函数变换

IQ到数字01(GFSK解调)

有多种方法

  1. 过零点检测法
  2. 锁相环鉴频法
  3. 差分检测法
  4. 互关联检测
  5. 包络检测
  6. 直接鉴频鉴相

matlab APP仿真

matlab2023A有一个BT的盒子,可以直接的仿真BLE的调制与解调,叫做BLE waveform generator。

matlab代码模拟解调

忘了,哪个网站了

gnuradio+hackrf 接收

直接运行这个,反正gnuradio3.10下可以运行的。
https://github.com/migraine-sudo/BTLE-R

hackrf直接接收的

https://github.com/JiaoXianjun/BTLE
这个

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/534165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能Python-anaconda降低python版本

Anaconda降低Python版本:为什么你需要做到这一点? 作为一个有10年Python编程经验的工程师,我经常会发现自己需要降低Pyhton的版本以便与我要使用的库兼容。为了解决这个问题,Anaconda是一个非常有用的工具,可以管理不…

基于fpga的图像处理之3x3_5x5算子模板设计

本文的思路框架: ①本文采用支持3x3算子模块和5x5算子模块的生成,用于后一级别的算法输入 ②本例程中采用的FPGA设计技巧,可用于借鉴,一是generate if参数定义;二是调用xilinx和altera的sync fifo和async fifo原语实现…

基于SpringBoot的招生管理系统的设计与实现

背景 本次设计任务是要设计一个招生管理系统,通过这个系统能够满足管理员和学生的招生公告管理功能。系统的主要功能包括首页、个人中心、学生管理、专业信息管理、专业报名管理、录取通知管理、系统管理等功能。 管理员可以根据系统给定的账号进行登录&#xff0…

做百度百科词条怎么写词条名,认证百度百科多少钱

很多人在做百度百科词条时不知道如何写百度百科词条名,总是因为词条不规范或者义项名不正确,而导致词条通过不了。认证申请百度百科到底多少钱能通过,实际上百度百科是免费的,需要费用的是请别人帮忙创建百度百科,下面…

SPI(Service Provider Interface)

ServiceLoad中的spi 1、简介 JDK1.6引入的特性&#xff0c;用来实现SPI&#xff08;Service Provider Interface&#xff09;&#xff0c;一种服务发现机制。 2、JDBC举例 2.1、引入mysql依赖jar <dependency><groupId>mysql</groupId><artifactId>…

[IntelliJ IDEA] 中Lombok插件的介绍和常见使用情景

文章目录 介绍使用Lombok 介绍 在编写项目时&#xff0c;尤其是在类进行类内部成员字段封装时&#xff0c;需要编写大量的get/set方法&#xff0c;不仅写的麻烦&#xff0c;如果字段名发生改变就要进行修改&#xff0c;因此非常麻烦&#xff1b;因此使用Lombok就能解决这样的问…

C++的vector使用

vector 1.vector的介绍2.vector的使用2.1. vector的定义&#xff08;构造函数&#xff09;2.2. vector iterator的使用2.3. vector空间增长问题2.4. vector的增删改查vector 迭代器失效问题&#xff08;重点&#xff09; 1.vector的介绍 vector是和数组类似的序列容器&#xf…

一文全览机器学习建模流程(Python代码)

注&#xff1a;本文基于之前的文章做了些修改&#xff0c;重复部分可以跳过看。示例的项目为基于LR模型对癌细胞分类的任务。 随着人工智能时代的到来&#xff0c;机器学习已成为解决问题的关键工具&#xff0c;如识别交易是否欺诈、预测降雨量、新闻分类、产品营销推荐。我们接…

深入浅出C语言——字符/字符串操作函数

文章目录 一、字符串操作函数1. strlen2. strcpy3. strcat4. strcmp5. strncpy6. strncat7. strncmp8. strstr9. strtok10. strerror二、字符操作函数 一、字符串操作函数 1. strlen size_t strlen ( const char * str );strlen 获取字符串长度。字符串已经 ‘\0’ 作为结束标…

Mybatis二级缓存详解

目录 二级缓存 MyBatis的缓存机制整体设计以及二级缓存的工作模式 二级缓存的划分 使用二级缓存&#xff0c;必须要具备的条件 一级缓存和二级缓存的使用顺序 二级缓存实现的选择 MyBatis自身提供的二级缓存的实现 二级缓存的作用 二级缓存的作用域 二级缓存应用场景…

Pruning 系列 (六)remove剪枝

环境 python 3.9numpy 1.24.1pytorch 2.0.0+cu117一、填0与remove剪枝的差异 直接填0的剪枝: 优点: 保留了原始网络结构,便于实现和微调。部分减少模型的计算量。缺点: 零权重仍然需要存储,因此不会减少内存使用。一些硬件和软件无法利用稀疏计算,从而无法提高计算效率…

Linux网络——shell编程之awk编辑器

Linux网络——shell编程之awk编辑器 一、awk编辑器1.概述2.工作流程3.常用选项 二、awk的基础用法1.输出文件中的某一列2.根据特定条件筛选数据3.按照分隔符进行切割4.在匹配到特定字符串时执行操作5.BEGIN打印模式6.awk的分隔符用法 三、示例演示1.获取本机上一次开机时间2.检…

Unity UI -- (1)概览

UI&#xff08;User Interface&#xff0c;用户接口&#xff09;&#xff0c;是让用户和计算机或计算机应用交互的接口系统。 在实时3D项目中&#xff0c;UI通常是由文本、按钮、复选框、滑动条和单选框等组合出来的界面。这些元素使用特定规则或通知和用户进行交互。 UI设计是…

路由信息协议(RIP)

文章目录 1 概述2 RIP 要点2.1 根据 距离矢量&#xff08;或 跳数&#xff09;寻找最佳路由2.2 RIP 三大要点2.3 基本工作过程2.4 路由条目的更新规则2.5 RIPv1 和 RIPv22.6 "坏消息传播慢" 的问题 3 网工软考真题 1 概述 #mermaid-svg-bIbiI8QAnQj8HX7d {font-famil…

Vivado综合属性系列之四 ROM_STYLE

目录 一、前言 二、ROM_STYLE 一、前言 ROM英文全称为Read Only Memory&#xff0c;只读存储器&#xff0c;里面主要存放固定的数据。 二、ROM_STYLE ROM的使用方式与RAM类似&#xff0c;格式样例为&#xff1a;(* rom_style"{distributed | block}" *)&#xff0…

C++类和对象入门

C类和对象入门 1. 面向过程和面向对象初步认识2. 类的引入3. 类的定义3.1 类的两种定义方式 4.类的访问限定符及封装4.1 访问限定符说明 5. 封装5. 类的作用域6. 类的实例化7. 类对象模型7.1 类对象存储规则7.2 如何计算类对象的大小 8. this指针总结 1. 面向过程和面向对象初步…

简述 JavaScript 被执行的那些事情

简述 JavaScript 被执行的那些事情 JavaScript 是脚本语言 JavaScript 是解释型语言 JavaScript 执行流程 不同浏览器有不同的 JavaScript 引擎&#xff08;运行时&#xff09;&#xff0c;主流的 JS 引擎有&#xff1a; V8&#xff0c;chromium 内核的引擎&#xff0c;主…

【ChatGPT4.0+PPT】使用NewBing搭配mindshow快速完成PPT任务

使用NewBing搭配mindshow快速完成PPT任务 前言一、使用NewBing生成PPT大纲二、粘贴Markdown到mindshow生成PPT三、结果展示四、扩展 前言 完成一个简单的PPT只需要两步&#xff1a; 使用NewBing生成PPT大纲粘贴Markdown到mindshow生成PPT 如果访问不了NewBing可以用国内Chat…

Minecraft外置登录服务器Little-Skin讲解

随着Minecraft的普及与发展&#xff0c;现在许多小伙伴是越来越爱上了MC。但是想玩国际正版岂是那么容易&#xff1f;或许你会说“HMCL不就是java启动器吗&#xff1f;”&#xff0c;这句话是没错&#xff0c;但是HMCL的都是离线账户。那么该怎么永远拥有一个稳定的账户呢&…

JVM 垃圾回收相关算法

垃圾标记阶段 对象存活判断: 在堆里存放着几乎所有的 Java 对象实例&#xff0c;在GC 执行垃圾回收之前&#xff0c;首先需要区分出内存中哪些是存活对象&#xff0c;哪些是已经死亡的对象。只有被标记为已经死亡的对象&#xff0c;GC 才会在执行垃圾回收时&#xff0c;释放掉…