自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 RT-Thread分析-日志系统-rt_kprintf分析

目录1 前言2 rt_kprintf()3 配置选项4 console设备4.1 设备声明4.2 设备创建4.3 获取_console_device5 分析rt_kprintf()函数6 rt_kprintf重定向1 前言内核除了提供接口rt_kprintf()用于输出打印信息,还支持一整套完善的日志组件ulog。两者在实现上有重叠部分,都使用到console模块;其余功能都相互独立,只有深究其实现机制,才能更好的去使用或者移植该系统。2 rt_kprin

2022-02-11 17:43:27 2310

原创 RT-Thread分析-对象容器实现与作用

目录1 前言2 相关数据结构2.1 对象1)类型2)数据结构2.3 容器1)数据结构2)容器定义 _object_container[]2.3 对象容器链接图3 获取对象容器 rt_object_get_information()4对象初始化 rt_object_init()5对象删除 rt_object_delete()6 查找对象rt_object_find()7 总结1 前言在内核中,所有数据结构都视作一个对象,包括:...

2022-02-10 15:17:50 1404

原创 RT-Thread分析-动态内存堆管理-slab算法

目录1 前言2 slab管理算法3 页分配器3.1 rt_page_head数据头3.2 rt_page_init()3.3rt_page_alloc()3.4rt_page_free()3.5 申请释放流程图4 zone管理3.1 struct slab_zone3.2 memusage/btokup()3.3 zone_array[NZONES]3.4 zone_free & zone_free_cnt3.5rt_system_hea...

2022-01-27 17:03:12 2394

原创 RT-Thread分析-动态内存堆管理-小内存算法

目录1 前言2 动态管理3 小内存管理算法4.1 内存块数据头4.2 统一的API接口4.3rt_system_heap_init()4.4 rt_malloc()4.5 rt_free()1 前言内存管理模块管理系统的内存资源,它是操作系统的核心模块之一。主要包括内存的初始化、分配以及释放。RT-Thread 的内存管理模块的算法总体上可分为两类:动态内存堆管理和静态内存池管理。其中动态内存堆管理又根据具体设备内存大小划分为三种...

2022-01-17 15:29:05 2569

原创 RT-Thread分析-静态内存池管理

目录1 前言2 静态内存池管理3.1 内存池控制块3.2 接口函数分析1)rt_mp_init()2)rt_mp_create()3)rt_mp_alloc()4)rt_mp_free()1 前言内存管理模块管理系统的内存资源,它是操作系统的核心模块之一。主要包括内存的初始化、分配以及释放。RT-Thread 的内存管理模块的算法总体上可分为两类:动态内存堆管理和静态内存池管理。其中动态内存堆管理又根据具体设备内存大小划分为三种情况:针对小内存块的分配管理(小

2022-01-17 15:13:13 1247

原创 RT-Thread分析-时钟节拍和定时器管理

1 前言2 时钟节拍时钟节拍用于系统处理所有和时间有关的事件,如线程的延时、线程的时间片轮转调度以及定时器超时等,可以理解为内核的心跳。2.1 RT_TICK_PER_SECOND时钟节拍都由一个固定的硬件定时器来实现,该定时器设定固定的超时时间,一般为1~100ms。时钟节拍率越快,系统的额外开销就越大,但系统的响应速度会更快。可 以 根 据 RT_TICK_PER_SECOND 的 定 义 来 调 整, 等 于 1/ RT_TI...

2022-01-10 20:47:49 3155

原创 LoRaWAN协议-自适应速率(ADR)技术

目录1 前言2 网络容量优化3 使用限制4 如何实施ADR4.1 通知支持ADR4.2 ADR调整4.3 ADR回退5 ADR命令5.1 LinkADRReq5.2 LinkADRAns1 前言我们知道LoRa在不同的调制参数下,其传输速率和传输距离是有很大的差别。可以看下表中的数据:SF越大,同样发射功率下,链路预算就越高,意味着可传输的距离就越远 但同时,SF越大,传输速率就越低,TOA需要的时间就越大,从而功耗更高,信道占用更...

2021-12-30 16:32:34 3881

原创 LoRaWAN协议-Class A类设备分析

目录1 前言2 接收窗口2.1 Receive_Delay1/Receive_Delay22.2 JOIN_ACCEPT_DELAY1/JOIN_ACCEPT_DELAY22.3 RX1DR/RX2DR3 功耗情况4 未确认和已确认消息5 下行链路1 前言LoRaWAN 协议依赖于 Aloha 型网络。在这种类型的网络中,终端设备可以任意进行传输。A 类设备的关键特性是,通信仅由终端设备发起。来自网络服务器的下行链路消息需要排队,...

2021-12-28 11:28:13 4803 1

原创 LoRaWAN协议-设备入网流程详解(OTAA和ABP)

目录1 前言2 相关数据2.1 DevAddr2.2 NwkSKey2.3 AppSKey3 OTAA3.1 入网准备1)DevEUI2)AppEUI(JoinEUI)3)AppKey3.2 Join-Request3.3 Join-Accept1) 什么是DR2) 命令解析3)加密3.4 NwkSKey/AppSKey计算4 ABP1 前言在LoRaWAN协议中,设备都需要入网激活。入网成功后,终端设备会被分配一...

2021-12-22 19:32:12 11396

原创 LoRaWAN协议-MAC帧格式详解

目录1 前言2 帧格式整体框图3 MAC帧格式组成3.1 分类3.2 组成4 MHDR(MAC Header)4.1 帧类型FType4.2 协议号Major5 MIC消息校验码5.1 校验算法6 MACPayload6.1 FHDR(Frame Header)1)DevAddr2)FCtrl3)FCnt4)FOpts6.2 FPort(Frame Port)6.3 FRMPayload1)加密1 前言LoR...

2021-12-14 10:15:44 9663

原创 LoRaWAN协议-物理层(PHY)详解

目录1 前言2 物理层包格式2.1 LoRa调制2.2 FSK调制2.3 LR-FHSS3 Uplink4 Downlink1 前言如图所示,LoRaWAN是一种开放式网络协议,可提供由LoRa联盟标准化和维护的安全双向通信,移动性和本地化服务。该协议做为MAC层,属于数据链路层。其物理层(PHY)实现与其他设备的通信,目前物理层支持LoRa,FSK,LR-FHSS调制。下图的PHY只标准了LoRa调制,是因为LoRaWAN实际应用中基...

2021-12-13 16:45:02 7013

原创 SX126x-CAD原理以及使用方式

目录1 前言2 原理分析2.1 主要操作2.2 功耗计算3 命令设置3.1 配置CAD3.2 启动CAD4 Sleep模式下启动CAD5 CAD最佳配置分析1 前言无线网络应用中,通常要求设备尽可能休眠,最大限度降低功耗,但又希望节点能尽可能及时地收发无线数据。传统的使用接收信号强度RSSI值并不适用于LoRa调制技术,由于扩频调制的原因,LoRa信号是允许低于环境底噪的,所以RSSI判定的方式很难确定信道是否被占用。为了有效检...

2021-12-13 10:26:54 4648

原创 SX126x-如何使用Data Buffer

详细介绍了SX126x内部Data Buffer的工作原理,用户如何使用命令来操作该数据缓存,使用过程中应该注意哪些细节。

2021-12-09 10:48:48 818

原创 SX126x-工作模式分析

目录1 前言2 各模式切换图3 Startup4 Sleep Mode4.1 如何进入Sleep1)SetSleep命令2)RxDutyCycle4.2 如何退出Sleep5 STDBY Mode5.1 如何进入STDBY1)SetStandby命令2)Starup自动进入3)部分中断5.2 STDBY_RC5.3 STDBY_XOSC6 FS Mode7 Rx Mode8 Tx Mode9 各模式切换时间1 前言...

2021-12-08 17:15:42 3162 1

原创 SX126x-时钟模块介绍

目录1 前言2 内部RC振荡器3 外部时钟源3.1 Crystal方案1)电路图设计2)内部可编程电容3.2 TCXO方案1)电路图设计2)内部可编程电容3)DIO3作为TCXO电源4 Crystal和TCXO方案比较1 前言选择合适的晶振对于射频芯片是十分重要的,本文主要介绍了SX126x芯片的时钟模块,主要包括2个内部的RC和一个外部的晶振,详细介绍了各自的作用,以及不同晶振方案的对比。2 内部RC振荡器内部...

2021-12-08 10:18:34 1689

原创 SX126x-电源模块介绍

目录1 前言2 电源输入2.1 低功耗MCU场景3 配置命令4 LDO方式5 DC-DC方式5.1 过电流保护6 电路设计6.1 SX1261 DC-DC6.2 SX1261 LDO6.3 DC-DC下SX1261和SX1262差别1 前言SX126x芯片内部可以选择2种电源模式:DC-DC或者LDO。每种模式需相应的电路设计和命令配置。官方建议使用更高效的DC-DC供电方式,在该方式下LDO依旧工作,具体内容在后续会介绍到。...

2021-12-07 15:00:08 1157

原创 SX126x-数字接口SPI和控制功能

目录1 前言2 Reset3 SPI接口3.1 属性要求3.2 时序参数要求1)离开Sleep模式时的时序4 BUSY引脚4.1 Tsw4.2 TswMode5 DIO5.1 DIO15.2 DIO25.3 DIO36 IRQ7 各模式下引脚状态1 前言本文主要介绍SX126x系列芯片的数字接口和控制引脚。主要包括如下几个部分:Reset引脚 SPI接口 Busy引脚 IRQ DIO引脚2 Reset...

2021-12-06 11:17:07 3302

原创 Lora技术- 码片/码元/数据速率以及空中时间计算

1 前言 通过《LoRa调制解调原理》一文,已经了解到LoRa调制参数具体作用,包括扩频因子SF,调制带宽BW,编码速率CR等。同时也分析了LoRa调制解调的具体过程,知道码片,码元(symbol),传输数据之间的关系。本文主要通过具体的数学公式,来推导相关参数的计算,同时也介绍Semtech官方提供的LoRa计算工具的使用。2 码片/码元/载荷数据速率发送信号将调制带宽BW划分为2^SF个频率段的码片(Chip) 每2^SF个码片组合成一个码元(Symbol),一个码...

2021-12-02 16:40:16 7202 5

原创 LoRa技术-LoRa调制解调技术

目录1 说明2 调制参数2.1 扩频因子SF2.2 编码速率CR2.3 调制带宽BW3 调制链路3.1 纠错编码机3.2 交织器3.3 扩频序列产生器3.4 坐标转换器和Delta-sigma调制输出4 解调链路1 说明本文主要介绍LoRa扩频技术细节,详细的描述了LoRa信号从数据流变为LoRa扩频信号,再从射频信号通过解调变为数据的全过程。内容主要来自《LoRa物联网通信技术》一书,该书是由现任Semtech LoRa中国区应用技术团队...

2021-12-01 20:21:39 14996 5

原创 什么是LoRaWAN

1 技术框图如图所示,LoRa是物理(PHY)层,即用于创建远程通信链路的无线调制。LoRaWAN是一种开放式网络协议,可提供由LoRa联盟标准化和维护的安全双向通信,移动性和本地化服务。2 LoRaWAN网络下图是端到端的典型LoRaWAN网络实现,主要包括4个部分:终端设备 LoRaWAN网关 网络服务器 应用服务器2.1 终端设备支持LoRaWAN的终端设备是使用LoRa调制通过RF连接到LoRaWAN网络的传感器或设备。 在大多数应用中,终端设备是.

2021-12-01 13:38:24 21242

原创 LoRa技术-什么是LoRa

1 概述LoRa是创建长距离通信连接的物理层无线调制技术,属于CCS(线性调制扩频技术)的一种,工作频段范围在Sub-1GHz以下。相较于传统的FSK等技术,LoRa在保持低功耗的同时极大地增加了通讯距离,且具备抗干扰性强等特点。另外,LoRa调制扩散因子本质上是正交的。这意味着使用不同的传播因子调制并同时在同一频率信道上传输的信号不会相互干扰。相反,不同传播因子的信号只是相互之间的噪声。2 技术特点LoRa技术是一种扩频调制技术,也称为Chirp调制,该技术是S...

2021-11-30 20:00:19 14002

原创 Zephyr-驱动设备模型

目录1 介绍2 数据结构3 系统框架3.1 基本代码介绍4 注册设备4.1 DEVICE_DEFINE4.2 DEVICE_DT_DEFINE4.3 DEVICE_DECLARE5 设备初始化5.1 代码实现5.2 优先级6 系统初始化7如何获取设备7.1 device_get_binding7.2 DEVICE_DT_GET()8 GPIO子系统分析8.1 子系统对外API8.2 struct gpio_driver_api8..

2021-11-25 15:16:37 3207

原创 Zephyr-设备树原理和使用

1 介绍zephyr的设备树管理和linux类似,需要提前了解一些linux设备树的知识。设备树简单理解就是将硬件相关数据例如几个I2C,每个I2C控制器的寄存器地址等等,统一按设备树的结构独立于内核进行配置和修改,这里需要了解的就是设备树语法知识。有了设备树文件后,如何让内核代码读取这些信息,进行板级初始化了?linux的做法是编译成DTB文件,然后在内核启动时进行解析,逐一获取硬件数据。Zephyr系统设计的前提是资源受限的小型系统,这里将大量解析工作放到构建编译阶段,通过脚本将...

2021-11-18 15:28:12 5385

原创 Zephyr-系统配置(Kconfig)

1 摘要Zephyr 内核和子系统可以在构建时进行配置,以适应特定的应用和平台需求。配置通过 Kconfig 处理,这是 Linux 内核使用的相同配置系统。目标是支持配置,而无需更改任何源代码。2 交互式配置支持两种交互式配置方式:menuconfig和guiconfig。 和linux内核配置一样,最终配置会写入.config文件,保持至zephyr/bulid路径下。PS:当然,用户也可以直接通过zephyr/.config来修改配置symbol,这样会存在风险。上...

2021-11-16 10:02:51 2313

原创 Zephyr-WEST工具

WEST工具4.1 介绍官方文档见:West (Zephyr’s meta-tool) — Zephyr Project Documentation 类似Git子模块,West的内置命令提供了一个多仓库管理系统,其开发仓库在:zephyrproject-rtos/west: West, Zephyr's meta-tool (github.com) 同时该工具也支持插件化,允许用户自己编写west的扩展功能在使用west命令之前,需要了解几个关联的内容:manifest,config1)ma

2021-11-12 15:16:55 3874

原创 Zephyr-环境搭建

目录1 前言2 安装主机依赖3 获取源码4 安装工具链5 编译一个Demo1 前言Zephyr支持Ubuntu,macOS,Windows环境下开发,本文介绍基于Ubuntu的环境搭建,包括: Ubuntu开发环境搭建,主要是工具和相关依赖的安装 获取工程源码 编辑,烧录已经运行Demo 2 安装主机依赖官方指导建议使用Ubuntu version 18.04 LTS 及以上1)下载并执行Kitware archive script,将Kitwar

2021-11-10 16:43:53 2467 1

空空如也

空空如也

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

TA关注的人

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