zephyr架构蓝牙应用笔记
文章平均质量分 91
mftang
资深嵌入式软件开发者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Zephyr Peripheral MTU Update 功能实现
ATT MTU 大小直接决定 BLE 单包有效载荷上限。默认 23 字节的 ATT_MTU 仅能承载 20 字节应用数据,严重制约吞吐量。本文系统阐述 Zephyr 平台下 Peripheral 端 MTU 更新的实现方法,涵盖 MTU 语义辨析、协商机制、Kconfig 配置、运行时 API 调用及回调验证。研究表明,Peripheral 端提升 MTU 需同时满足链路层缓冲区扩容与ATT 层 MTU 配置两项前提,并通过 bt_gatt_exchange_mtu() 或 CONFIG_BT_GATT_A原创 2026-10-12 00:15:00 · 268 阅读 · 0 评论 -
光敏传感器在 nRF Connect SDK 中的集成方案与实现
光敏传感器是嵌入式环境感知系统的核心组件。本文系统阐述了 nRF Connect SDK(NCS)平台下两类光敏传感器的集成方法:集成数字光传感器(通过 I2C 接口输出校准照度值)与模拟光敏器件(通过 SAADC 采集分压信号)。文章从器件选型、设备树配置、驱动 API 与工程调试四个维度展开,重点分析了 OPT3001、VEML7700、TSL2591 与 ISL29035 等代表性器件的 NCS 支持现状与实现路径。研究表明,Zephyr Sensor 子系统为数字光传感器提供了统一的 sensor_原创 2026-09-30 00:15:00 · 320 阅读 · 0 评论 -
光敏传感器在 nRF Connect SDK 中的实现方案
光敏传感器是嵌入式环境感知的基础组件。本文基于 nRF Connect SDK(NCS)平台,系统阐述了光敏电阻(LDR)与光敏晶体管两类模拟光敏器件通过 SAADC 外设实现光照检测的完整方法。文章从硬件分压电路、设备树配置、ADC 序列参数与工程调试四个层面展开,重点分析了 nRF5340 上常见的“Channel 0 not configured”错误机理及其基于设备树 Overlay 的解决方案。研究表明,NCS 中 SAADC 的通道配置已从传统寄存器编程完全迁移至设备树声明,正确编写 Overl原创 2026-09-29 10:53:18 · 325 阅读 · 0 评论 -
蓝牙一对多连接方案及实现
蓝牙低功耗(BLE)一对多连接是物联网、音频与传感网络中的核心组网需求。本文系统梳理了基于 nRF Connect SDK(NCS)的蓝牙一对多连接方案,将其归纳为独立连接型、中继转发型、动态身份型与周期性广播型四类架构。文章分析了各类方案的连接模型、资源消耗与适用场景,并给出了基于 NCS/Zephyr 的关键配置参数与实现路径。研究表明,方案选择需在连接数、功耗、延迟与实现复杂度之间进行权衡,nRF5340 等平台在合理配置下可支持多达 20 条并发链路。原创 2026-09-29 10:43:43 · 763 阅读 · 0 评论 -
Zephyr RTOS 中FIFO(先进先出队列)接口介绍
在 Zephyr RTOS 中,FIFO(先进先出队列) 是用于在线程间传递数据的基本内核对象之一。与 LIFO 的后进先出顺序不同,FIFO 保证了数据按照被添加的顺序被取出,这对于许多通信和任务处理场景至关重要。通过合理使用 FIFO,可以在 Zephyr 系统中构建高效、松耦合的多线程架构。对于简单的生产者-消费者模式,FIFO 通常是比消息队列或邮箱更轻量、更灵活的选择。原创 2026-06-01 09:38:22 · 476 阅读 · 0 评论 -
Zephyr RTOS 中k_msgq(消息队列)接口介绍
在 Zephyr RTOS 中,k_msgq(消息队列)是用于在线程间传递 固定大小消息 的核心进程间通信(IPC)机制。与传递字节流的管道或传递指针的 FIFO/LIFO 不同,消息队列完整复制消息内容,确保数据所有权清晰,是最常用的线程间通信方式之一。通过合理使用消息队列,可以在 Zephyr 系统中构建清晰、可靠、高效的线程间通信架构。对于大多数应用场景,消息队列都是比管道、FIFO/LIFO 或邮箱更简单和安全的选择。原创 2026-05-25 14:06:40 · 672 阅读 · 0 评论 -
Zephyr RTOS 中k_mutex(互斥锁)功能介绍
在 Zephyr RTOS 中,k_mutex(互斥锁)是用于保护共享资源,防止多个线程同时访问导致数据竞争的核心同步机制。它确保在任何时刻,只有一个线程可以进入被保护的代码区域(临界区)。原创 2026-05-25 12:00:17 · 473 阅读 · 0 评论 -
Zephyr RTOS 中k_condvar(条件变量)功能介绍
在 Zephyr RTOS 中,k_condvar(条件变量) 是一种高级的线程同步机制,它允许一个或多个线程等待某个条件成立,并在条件可能成立时由其他线程通知唤醒。条件变量总是与互斥锁 (k_mutex) 配合使用,用于实现复杂的线程间协调,如生产者-消费者模式。原创 2026-05-21 14:25:12 · 437 阅读 · 0 评论 -
Zephyr RTOS Events(事件)相关接口介绍
在 Zephyr RTOS 中,事件(Events) 是一种轻量级的线程间同步与通信机制。它允许一个线程等待并响应一个或多个事件标志(Event Flags)的组合,也允许多个线程等待同一个事件集。理解Events的关键在于将其视为一个可等待的、持久化的状态寄存器。原创 2026-05-21 14:24:23 · 433 阅读 · 0 评论 -
Zephyr RTOS 中timing 相关函数功能介绍
在 Zephyr RTOS 中,Timing(时间管理)相关函数是构建实时、可靠嵌入式系统的基石。它们提供了从高精度延迟测量到线程睡眠调度的完整时间控制能力。下面我将系统性地介绍所有核心的时间管理函数及其应用。通过合理使用Zephyr的时间函数,可以构建出精确、可靠的实时嵌入式应用,满足从毫秒级任务调度到微秒级硬件时序控制的各类需求。原创 2026-05-20 10:05:14 · 589 阅读 · 0 评论 -
Zephyr RTOS 自旋锁相关功能介绍
在 Zephyr RTOS 中,k_spin_lock 是一个用于实现极低开销、不可休眠的忙等待锁的核心函数。它在中断上下文和对称多处理(SMP)场景中至关重要。原创 2026-05-19 10:03:38 · 587 阅读 · 0 评论 -
Zephyr RTOS 中irq_lock() 与 irq_unlock()的应用
irq_lock() 与 irq_unlock() 是 Zephyr RTOS 中用于管理中断状态、保护临界区的一对底层核心函数。它们不是简单地“关闭和打开中断”,而是“保存当前中断状态并禁止中断,然后根据保存的状态恢复中断”。原创 2026-05-11 10:49:18 · 472 阅读 · 0 评论 -
Zephyr RTOS中k_work_queue 核心用法介绍
k_work_queue 是 Zephyr RTOS 中用于异步、延迟执行任务的核心机制。它将“工作”(一个函数)提交到“队列”,由专用的内核线程在后台按顺序执行,非常适合处理中断中的非紧急任务或实现线程间的非阻塞通信。原创 2026-05-11 10:48:40 · 501 阅读 · 0 评论 -
struct bt_conn_auth_cb蓝牙(BLE)连接认证 / 配对过程的回调接口集合
struct bt_conn_auth_cb 是蓝牙(特别是 BLE)连接认证和配对过程中的回调接口集合,通常用于处理配对请求、密码显示、确认等交互。这个回调接口集合为BLE设备提供了灵活的配对交互方式,开发者可以根据设备类型和用户场景选择合适的配对策略。原创 2026-05-08 10:59:17 · 577 阅读 · 0 评论 -
Zephyr RTOS 中k_cpu_idle 函数功能介绍 - D
在 Zephyr RTOS 中,k_cpu_idle 函数是内核空闲循环的核心,负责在系统没有就绪线程可执行时,将 CPU 置于低功耗的睡眠状态。它是 Zephyr 实现节能的基石。简单来说,它的核心作用是:当内核无事可做时,它会让 CPU 以一种可被中断唤醒的方式“打盹”,以节省电力。原创 2026-05-07 18:11:33 · 487 阅读 · 0 评论 -
Zephyr RTOS 中用于同步多路复用 I/O 的核心机制k_poll 相关函数用法
k_poll 是 Zephyr RTOS 中用于同步多路复用 I/O 的核心机制。它允许单个线程同时等待多个不同类型的事件(如信号量、消息队列、信号等),并在任一事件就绪时被唤醒,是实现高效事件驱动架构的关键。k_poll 是构建高效、响应式系统的强大工具。通过合理使用这些函数,可以创建出能够同时处理多个事件源而无需复杂线程管理的嵌入式应用。原创 2026-05-06 15:50:01 · 602 阅读 · 0 评论 -
Zephyr RTOS中bt_conn_le_create 函数用法详细介绍
在Zephyr RTOS中,bt_conn_le_create 是 GAP层 的核心函数,用于主动与扫描到的低功耗蓝牙(BLE)外围设备(Peripheral)建立连接。它使你的设备能够作为中心设备(Central,如手机),与目标设备(如传感器)建立链路,为后续的GATT操作(服务发现、数据读写)奠定基础。简单说,它让你的设备“伸出手”去连接已发现的蓝牙设备。原创 2026-05-05 17:52:41 · 489 阅读 · 0 评论 -
Zephyr RTOS 下 BLE 主动扫描和被动扫描详解
在Zephyr RTOS中,蓝牙低功耗(BLE)扫描分为主动扫描和被动扫描。这两种扫描模式在Zephyr的蓝牙API中通过bt_le_scan_param结构体的type字段来指定。本文主要介绍Zephyr RTOS 下 BLE 主动扫描和被动扫描的相关接口和两者的使用方法。原创 2026-05-05 17:52:03 · 895 阅读 · 0 评论 -
Zephyr RTOS 下 bt_le_scan_start 函数详解
bt_le_scan_start 是 Zephyr Bluetooth API 的核心函数之一,用于启动蓝牙低功耗(BLE)扫描。它允许设备作为中心设备(Central)或观察者(Observer)发现周围的蓝牙外围设备。原创 2026-04-28 15:13:45 · 579 阅读 · 0 评论 -
Zephyr RTOS 中线程(Thread)介绍-D
在 Zephyr RTOS 中,线程(Thread) 是任务执行的基本单元,也是多任务系统的核心。Zephyr 提供了一套完整的线程管理 API,支持动态/静态创建、优先级调度、线程同步等高级特性。原创 2026-03-23 11:06:16 · 634 阅读 · 0 评论 -
BLE协议栈: GATT (属性传输框架)-D
GATT(Generic Attribute Profile,通用属性配置文件)是BLE协议栈中用于数据交换的核心框架。它定义了两个设备之间通过BLE连接进行数据通信的规范。GATT建立在ATT协议之上,为属性协议提供了一个结构化的数据格式和一套操作这些数据的规则。原创 2026-03-12 09:38:29 · 852 阅读 · 0 评论 -
Zephyr核心声明宏RTOS SYS_INIT的介绍-D
在 Zephyr RTOS 中,SYS_INIT 是一个核心的、声明式的宏,用于将你的自定义函数注册到系统启动初始化序列中。它是驱动、子系统或任何需要在启动早期(或特定阶段)进行一次性设置代码的标准入口点。简单说,它的作用是:“在系统启动流程中的某个精确时刻,自动执行我注册的这个函数。”原创 2026-03-12 09:37:24 · 722 阅读 · 0 评论 -
BLE协议栈: 物理层深度详解
物理层是BLE协议栈的最底层,直接负责无线电信号的发送和接收。它是所有无线通信的基础,决定了BLE的性能边界和功耗特性。物理层虽然是BLE协议栈的底层,但它决定了整个系统的性能边界。理解物理层的原理和限制对于设计高效、可靠的BLE产品至关重要。原创 2026-03-11 15:02:09 · 768 阅读 · 0 评论 -
Zephyr RTOS 中LIFOs(后进先出队列)的介绍-D
在 Zephyr RTOS 中,LIFOs(后进先出队列) 是与 k_stack 非常相似的内核对象,但有一个关键区别:LIFO 存储的是 指针 (void *),而 k_stack 存储的是 32位数据值 (stack_data_t)。这使得 LIFO 更适合传递 动态分配的内存块 或 复杂数据结构 的引用。原创 2026-03-09 10:23:45 · 952 阅读 · 0 评论 -
Zephyr RTOS Central 函数(bt_le_scan_start )介绍-D
在Zephyr RTOS中,bt_le_scan_start 函数用于启动低功耗蓝牙(BLE)扫描过程。它是 GAP层 的核心功能,使设备能够作为中心设备(Central,如手机)主动搜索和发现在其广播范围内的外围设备(Peripheral,如传感器、手环)。原创 2026-03-04 09:51:30 · 403 阅读 · 0 评论 -
Zephyr RTOS中的k_stack相关函数-D
在 Zephyr RTOS 中,k_stack 是栈(LIFO - 后进先出) 数据结构的内核实现。它允许多个线程向一个共享的栈空间压入和弹出数据项,是 Zephyr 中基本的 内核对象 之一原创 2026-02-23 11:36:11 · 897 阅读 · 0 评论 -
Zephyr RTOS中k_mbox 相关的函数介绍 -D
在 Zephyr RTOS 中,k_mbox 是邮箱机制的核心数据结构。邮箱是一种用于在线程间传递数据块(带缓冲区的消息) 的进程间通信(IPC)机制,它与单纯传递数据的消息队列和管道不同,邮箱允许发送方保留数据缓冲区的所有权直到接收方处理完毕,非常适合需要零拷贝或数据所有权转移的场景。原创 2026-02-09 09:46:52 · 1659 阅读 · 0 评论 -
Zephyr RTOS中sys_cpu_to_le16函数意义和用法
sys_cpu_to_le16 是 Zephyr 内核提供的 字节序转换函数,核心用于解决跨设备(不同 CPU 架构)数据传输的字节序一致性问题 —— 蓝牙协议(GATT/ATT 层)强制要求多字节数据使用 小端字节序(LE) 传输,而不同 CPU 的本机字节序可能为大端(BE)或小端(LE),需通过该函数统一格式。原创 2026-01-12 09:23:24 · 919 阅读 · 0 评论 -
Zephyr RTOS函数k_work_reschedule_for_queue和k_work_schedule_for_queue介绍
Zephyr RTOS 的工作队列,并在指定的延迟后执行,或者在未来的一个绝对时间点执行。可使用函数k_work_reschedule_for_queue ,它是 k_work_schedule_for_queue 的衍生版本,增加了“如果该工作项已在队列中等待,则重新计算其触发时间”的能力。本文主要介绍这两个函数的功能和使用方法。原创 2026-01-08 00:15:00 · 1063 阅读 · 0 评论 -
Zephyr RTOS 工作队列函数(k_work_reschedule )的应用方法介绍
k_work_reschedule 函数在 Zephyr RTOS 中用于重新安排延迟工作项(delayed work)的执行时间。该函数在需要动态调整定时任务时非常有用,特别是在实现防抖、超时重试、周期性任务等场景。本文详细介绍其用法。原创 2025-12-19 09:39:54 · 685 阅读 · 0 评论 -
Zephyr OS BLE NUS Client 功能实现
在Zephyr OS中实现BLE NUS Client功能,意味着你的设备将作为中心设备,主动去连接一个提供NUS服务的设备,并与之进行双向数据通信(类似虚拟串口)。本文主要梳理其核心机制、实现流程、代码结构和关键配置。原创 2025-12-12 17:55:51 · 869 阅读 · 0 评论 -
Zephyr RTOS 中k_work_init_delayable 函数功能(D)
k_work_init_delayable 函数的核心功能是:初始化一个“可延迟的工作项”(delayable work),将其设置为一个待执行的函数,但这个函数可以指定在未来的某个时间点执行,而不是立即提交到工作队列。它是 Zephyr 工作队列(Work Queue)机制中用于延迟/定时任务的关键组件。原创 2025-09-09 17:14:29 · 1496 阅读 · 0 评论 -
Bluetooth的物理层和链路层功能介绍
本文主要介绍蓝牙的物理层的功能,其是其无线通信功能的基础,负责在设备之间通过无线电波传输和接收原始的二进制数据流。随着蓝牙技术的发展,其物理层也经历了多次演进,以适应不同的应用场景和需求原创 2025-10-10 10:40:55 · 1448 阅读 · 0 评论 -
base64 数据的编码和解码方法(Zephyr OS-D)
Base64是一种用64个字符来表示二进制数据的编码方式。它通常用于在需要文本环境(如电子邮件、XML、URL参数等)中安全地传输二进制数据。本文主要介绍Base64编码的特点。Base64 是一种简单实用的编码方案,在嵌入式系统和网络通信中有着广泛的应用,特别适合在文本协议中传输少量二进制数据。原创 2025-09-17 00:30:00 · 1199 阅读 · 0 评论 -
Zephyr RTOS中k_work_reschedule 函数应用
Zephyr RTOS 中的 k_work_reschedule 函数的核心功能是:取消一个可延迟工作项(delayable work)任何现有的待执行计划,并为其重新安排一个新的延迟时间后执行。简单来说,它就是 “取消之前的计划,并重新开始计时”。原创 2025-09-09 17:24:25 · 1011 阅读 · 0 评论 -
等时信道 (Isochronous Channel) 发送数据函数: bt_iso_chan_send 的用法
bt_iso_chan_send 是 Zephyr RTOS 蓝牙协议栈中的一个核心函数,用于通过等时信道 (Isochronous Channel) 发送数据。这个函数在蓝牙 5.2 及更高版本的等时通信中扮演关键角色,特别是在 LE Audio 和其他需要时间同步的高质量数据传输应用中原创 2025-09-04 00:15:00 · 1033 阅读 · 0 评论 -
Zephyr 广播等时组 (Broadcast Isochronous Group)的实现原理和应用介绍
广播等时组 (BIG) 是蓝牙 5.2 规范中引入的核心功能,主要用于支持 LE Audio 和其他需要广播等时通信的应用场景。Zephyr RTOS 提供了完整的 BIG 实现。通过 Zephyr 的 BIG 实现,开发者可以构建高质量的 LE Audio 应用、实时数据广播系统和多设备同步控制应用,充分发挥蓝牙 5.2 等时通信的潜力。原创 2025-09-04 00:15:00 · 1309 阅读 · 0 评论 -
Zephyr RTOS 蓝牙等时(Isochronous)功能
Zephyr RTOS 提供了完整的蓝牙等时通信功能支持,包括连接式等时流 (CIS) 和广播等时流 (BIS)。这些功能为 LE Audio 和其他需要时间同步的应用提供了强大的基础。通过合理配置 QoS 参数和实现适当的回调函数,开发者可以构建高质量、低延迟的音频和实时数据应用。原创 2025-09-03 00:30:00 · 1913 阅读 · 0 评论 -
蓝牙 bt_pbp_parse_announcement 函数功能
bt_pbp_parse_announcement 函数是蓝牙协议栈中的一个重要函数,主要用于解析周期性广播响应(Periodic Advertising Response) 中的数据。这个函数属于蓝牙 5.0 及以上版本引入的扩展广播(Extended Advertising)功能的一部分。该函数是蓝牙设备间通信的基础,特别是在使用扩展广播和周期性广播的高级应用中,它提供了从原始广播数据中提取结构化信息的关键能力。原创 2025-09-03 00:15:00 · 842 阅读 · 0 评论 -
周期广播函数bt_le_per_adv_start 功能和应用
bt_le_per_adv_start 函数。这是 Zephyr RTOS 中 Bluetooth LE 的一个高级功能,用于启动周期性广播(Periodic Advertising)。其是开启 Bluetooth LE 强大功能——单向、低功耗、大数据量、可同步广播——的钥匙,是构建下一代音频广播(Auracast)、大规模传感器网络等应用的基石。原创 2025-09-02 14:43:17 · 1475 阅读 · 0 评论
分享