📖 技术文库

STM32 / Arduino / RTOS / 嵌入式 知识文章
展开全部分类 (54)
Arduino 上利用 ADC 过采样实现 16 位分辨率时的噪声校准技巧
嵌入式 · 👁 32 阅读
在嵌入式开发中,Arduino 的 10 位 ADC 往往难以满足高精度测量需求。通过过采样与求平均技术,理论上可将分辨率提升至 16 位,但实际效果受噪声、参考电压和采样时序影响显著。本文深入剖析过采样原理,并重点介绍噪声校准技巧,包括白噪声注入、多次采样去偏、参考电压校正及软件滤波优化,帮助你在 Arduino 平台上稳定实现 16 位有效分辨率,附完整代码示例与工程注意事项。
STM32H7 480MHz 下 FDCAN 与以太网并发总线仲裁优先级实测:谁才是真正的实时王者?
嵌入式 · 👁 44 阅读
在工业控制与车载网关应用中,STM32H7 常需同时处理 FDCAN 与以太网数据流。当两者并发抢占内部总线时,硬件仲裁机制如何影响实时性?本文基于 STM32H743 在 480MHz 主频下,通过 GPIO 翻转与逻辑分析仪实测,揭示 FDCAN 与以太网 DMA 传输的优先级差异,并给出配置建议,帮助开发者避免隐性丢包与延迟抖动。
ESP32 双核环境下 FreeRTOS 任务优先级反转的隐蔽触发条件与 trace 分析技巧
嵌入式 · 👁 27 阅读
在 ESP32 双核 FreeRTOS 系统中,优先级反转问题往往比单核更隐蔽,因为双核调度、共享资源竞争和中断亲和性会引入额外的时序不确定性。本文深入剖析双核环境下优先级反转的触发条件,包括互斥量持有时间、CPU 亲和性设置、以及任务抢占的微妙交互,并给出基于 FreeRTOS 内核 trace 的实用分析技巧,帮助开发者快速定位和解决这类问题。
DMA环形缓冲区UART不定长接收:半满中断与空闲中断的竞争处理精解
嵌入式 · 👁 24 阅读
在嵌入式开发中,使用DMA环形缓冲区实现UART不定长接收是高效且常用的方案,但半满中断与空闲中断的竞争常导致数据错乱或丢失。本文深入剖析两种中断的触发机制与竞争根源,给出基于状态机的精确处理策略,并提供完整代码示例与注意事项,帮助开发者彻底解决这一难题。
ESP32 双核下用原子操作替代临界区:从 IRAM 到 cache 一致性踩坑记录
嵌入式 · 👁 28 阅读
在 ESP32 双核 FreeRTOS 环境中,传统临界区(如 portENTER_CRITICAL)虽能保护共享资源,但会阻塞中断并影响实时性。本文深入探讨如何利用 ESP32 的原子操作(如 S32C1I 指令)替代临界区,并重点剖析从 IRAM 执行、cache 一致性到内存屏障的三大坑点,提供完整可运行的代码示例与调试经验,帮助开发者写出既高效又安全的双核并发代码。
ESP32 BLE广播间隔动态调整:连接延迟与功耗的实测权衡
嵌入式 · 👁 26 阅读
在低功耗蓝牙(BLE)应用中,广播间隔是影响功耗和连接建立延迟的关键参数。本文基于ESP32平台,深入探讨动态调整广播间隔的策略,通过实测数据对比不同间隔下的功耗与连接延迟,并给出代码实现与注意事项,帮助开发者在实际项目中找到最优平衡点。
UART DMA 环形缓冲区:半满/全满中断边界竞态的精准处理策略
嵌入式 · 👁 49 阅读
在STM32等嵌入式平台上,使用DMA环形缓冲区接收UART不定长数据是高性能方案,但半满与全满中断的边界竞态常导致数据错乱或丢失。本文深入剖析竞态产生的根源,给出基于硬件状态寄存器与软件状态机的双重防护策略,并附完整代码示例,帮助开发者彻底解决这一棘手问题。
STM32 低功耗 STOP 模式下 RTC 唤醒后外设时钟恢复顺序导致的偶发死机排查
嵌入式 · 👁 32 阅读
在 STM32 低功耗设计中,STOP 模式配合 RTC 唤醒是常见方案,但唤醒后外设时钟恢复顺序不当会引发偶发死机。本文从实际案例出发,深入分析时钟安全系统(CSS)与 RTC 唤醒时序的冲突,揭示 HSE 旁路电容充电延迟导致时钟失效的根因,并给出完整的配置步骤、代码示例及规避策略,帮助开发者彻底避免此类隐患。
ESP32 低功耗模式下 RTC 内存保持与 GPIO 唤醒源配置的坑与对策
嵌入式 · 👁 28 阅读
ESP32 在深度睡眠(Deep Sleep)模式下,RTC 内存是唯一能保存数据的区域,但很多开发者在使用 GPIO 唤醒时,常遇到 RTC 内存数据丢失、唤醒引脚配置失效、以及唤醒后系统不稳定等问题。本文从硬件原理出发,深入剖析 RTC 内存的电源域和 GPIO 唤醒源的映射关系,给出完整的配置步骤和代码示例,并总结常见坑点与解决方案,帮助开发者避开这些雷区,实现可靠的低功耗设计。
Arduino 上实现无中断的软件串口:基于定时器捕获与 DMA 的替代方案
嵌入式 · 👁 38 阅读
在资源受限的 Arduino 平台上,硬件串口数量往往不足,传统软件串口依赖中断和位敲打,实时性差且易冲突。本文提出一种基于定时器输入捕获与 DMA 的替代方案,彻底摆脱中断频繁介入,实现高效、稳定的软件串口收发。文章深入原理,给出完整配置步骤与代码示例,并探讨注意事项,适合希望突破 Arduino 串口限制的嵌入式开发者。
STM32 硬件 CRC 外设 vs 软件查表法:Modbus RTU 校验的性能对决与选型指南
嵌入式 · 👁 43 阅读
在嵌入式开发中,CRC 校验是保证数据完整性的基石,尤其在 Modbus RTU 通信中至关重要。STM32 内置硬件 CRC 外设,而软件查表法也是经典方案。本文深入剖析两者在 Modbus RTU 场景下的性能差异、实现细节与选型策略,通过基准测试数据揭示真相,并给出工程实践建议,助你做出最优决策。
STM32F4 168MHz 下多路 ADC 连续采样:DMA 总线冲突的规避策略与实战
嵌入式 · 👁 34 阅读
在 STM32F4 系列以 168MHz 主频运行时,多路 ADC 连续采样配合 DMA 是高效的数据采集方案,但总线冲突常导致采样数据错位,影响系统可靠性。本文深入剖析冲突根源,提供时钟配置、DMA 优先级调整、双缓冲与数据对齐等实用规避策略,并附完整代码示例,助你构建稳定、高速的嵌入式采集系统。