- 博客(17)
- 收藏
- 关注
原创 IIC协议具体是怎么实现的?
本文详细介绍了IIC总线协议及其软件实现方法。IIC是一种双线制同步串行通信协议,具有多主多从、地址寻址等特点,广泛应用于嵌入式系统。文章分析了IIC的硬件电路设计要点,包括上拉电阻选择和多设备连接注意事项,并详细讲解了IIC的起始/停止条件、数据有效性等时序要求。重点展示了基于GPIO模拟的软件IIC实现方案,通过精确的微秒级延时函数(使用DWT计数器)控制SCL和SDA信号,完整实现了起始、停止、应答、读写等基本功能。最后对比了软件IIC(灵活可移植)和硬件IIC(高速低负载)的适用场景,为开发者选择合
2026-03-15 20:44:34
399
原创 晶振怎么看是有源还是无源呢?
本文系统介绍了有源与无源晶振的关键区别:无源晶振(2脚)需外部电路驱动,输出正弦波;有源晶振(4脚及以上)内置振荡电路,需电源供电,输出稳定方波/正弦波。文章详细阐述了从外观、引脚、电路连接到功能特性的区分方法,并提供了单片机晶振电路设计要点,包括PCB布局规范和电容选型技巧。同时对比了内部RC振荡器与外部晶振在精度、稳定性、功耗等方面的差异,提出了针对不同应用场景的晶振选择策略,强调高精度应用需选用外部晶振并严格匹配负载电容。
2026-02-06 08:00:00
622
原创 简易示波器是如何进行高效ADC采集的呢?
本文探讨了STM32中断与事件机制在ADC采集中的应用。作者通过简易示波器项目实践,阐述了定时器事件触发ADC和DMA搬运的硬件协同工作原理,对比了中断与事件在响应路径、CPU参与度和功耗等方面的差异。重点分析了事件触发的四大优势:精确采样间隔、低CPU占用率、确定性系统行为和低功耗设计,并展示了1MSPS采样率下的配置示例。文章还介绍了事件触发在电机控制、数字电源和音频处理等高级应用场景,强调理解硬件特性对构建高效嵌入式系统的重要性。
2026-01-15 23:59:39
631
3
原创 嵌入式中如何使用PS2实现遥控呢?
本文介绍了PS2手柄与单片机通信的实现方法,详细解析了硬件SPI和软件SPI两种实现方案。主要内容包括:PS2手柄引脚定义与通信协议分析、SPI模式选择要点、完整的硬件/软件SPI代码实现,以及两种方案的对比评估。文章提供了从初始化、数据读取到按键处理的完整解决方案,特别适合嵌入式开发者参考使用。通过本文,读者可以快速掌握PS2手柄在STM32等单片机上的应用方法,为机器人、遥控车等项目开发提供可靠的输入控制方案。
2026-01-15 00:36:05
1140
原创 如何点亮一串WS2812灯珠呢?
本文介绍了使用STM32定时器+DMA驱动WS2812 LED的方法。WS2812是一种智能RGB LED,采用单线控制、级联连接,但对时序要求严格(1.25μs周期,±150ns误差)。传统GPIO翻转方法存在时序精度不足、CPU占用高等问题,而定时器+DMA方案能精确控制PWM波形,实现零CPU占用的稳定驱动。文章详细讲解了CubeMX配置(72MHz时钟,90分频)和代码实现,包括颜色转换、LED控制函数及多种特效(流水灯、呼吸灯等)。该方法通过硬件级控制确保了WS2812的稳定驱动,适用于大规模LE
2026-01-11 02:22:21
843
原创 BOOT0与BOOT1的作用是什么?
摘要:STM32单片机的BOOT0和BOOT1引脚是启动模式选择的关键,决定程序执行来源。BOOT0=0时从主Flash运行用户程序,BOOT0=1时进入系统存储器模式用于串口下载,BOOT1=1时从SRAM启动用于调试。硬件设计需确保BOOT0默认下拉,同时预留调试接口;BOOT1通常固定接地。下载程序时需注意模式切换:调试器下载需BOOT0=0,串口下载需BOOT0=1且完成后要改回0。Bootloader功能还可扩展为IAP升级等高级应用。正确配置这两个引脚是STM32开发的基础技能。
2026-01-08 23:47:14
1447
原创 如何玩转MPU6050六轴姿态传感器?
MPU6050是一款集成三轴加速度计和陀螺仪的六轴运动处理传感器,广泛应用于无人机、平衡车等需要姿态检测的场景。本文详细介绍了MPU6050的驱动实现,包括软件I2C通信、传感器初始化、数据读取和校准方法。重点讲解了基于Madgwick算法的姿态解算实现,通过四元数融合加速度计和陀螺仪数据,并转换为欧拉角输出。代码中加入了零偏校准、静止检测和漂移抑制等优化措施,有效提高了姿态解算的稳定性。同时提供了完整的硬件连接指南和常见问题排查方法,为开发者使用MPU6050进行运动检测提供了实用参考。
2026-01-06 00:05:57
1619
原创 为什么在IIC/SPI中更推荐使用DWT延时?
摘要:本文探讨了嵌入式开发中三种I2C延时方式的优劣对比,重点介绍了DWT(数据观察点与跟踪)延时的高精度特性。通过实测数据表明,HAL_Delay(1)延时误差达19900%,空循环延时极不稳定,而DWT延时误差仅±0.1%。文章详细分析了DWT的工作原理(72MHz下每个周期13.9ns)、实现方法及在I2C/SPI通信中的优势,提供了完整的初始化代码和延时函数实现。最后建议统一采用DWT延时,根据设备需求设置100kHz(BH1750/EEPROM)或400kHz(MPU6050)的通信速率,以兼顾性
2025-12-29 23:30:37
655
原创 NTC热敏电阻温度换算太复杂?一篇搞定所有算法!
本文介绍了利用NTC热敏电阻实现高精度温度测量的方法。NTC热敏电阻具有负温度系数特性,其电阻值随温度升高呈指数下降。通过分压电路将电阻变化转换为电压信号,由STM32的ADC采集后,采用Steinhart-Hart简化方程计算温度值。文中详细说明了电路设计原理、参数选择依据、温度计算公式推导过程,并提供了基于HAL库的代码实现,包括ADC初始化、中值滤波、电阻计算和温度转换等关键函数。该方法具有成本低、灵敏度高的优点,适用于嵌入式系统开发中的温度测量需求。
2025-12-28 18:43:51
2283
原创 在keil中为什么不勾选微库 (MicroLib)使用printf()会程序卡死?
摘要:Keil MDK的微库(MicroLib)是为嵌入式系统优化的精简C库,相比标准库减少30-50%代码量,不依赖操作系统和动态内存分配。关键区别在于标准库依赖半主机机制进行调试输出,当独立运行时会导致程序卡死;而微库通过用户实现的fputc函数直接驱动硬件,避免了这一风险。使用微库需实现串口重定向函数,并注意printf可能带来的实时性和内存问题。在调试阶段可使用标准库,但产品发布时必须改用微库或禁用半主机。开发者应根据实际需求选择printf格式化输出或直接串口发送方案。
2025-12-11 14:34:11
984
原创 为什么硬件SPI很难实现PS2手柄通信,而软件SPI却很简单?
嵌入式开发中,硬件SPI无法驱动PS2手柄而软件SPI能成功的原因在于协议差异。PS2协议虽表面类似SPI,但存在三大关键区别:1)采用单线双向半双工通信,而非标准SPI的双线全双工;2)有严格的微秒级时序要求;3)需要动态切换数据方向。硬件SPI的固定引脚方向、连续传输特性和时钟刚性使其难以满足这些特殊需求,而软件SPI通过GPIO模拟可以精确控制每个信号时序,灵活处理方向切换和异常恢复,从而成功驱动PS2手柄。这体现了在嵌入式开发中,协议适配比单纯追求硬件性能更重要。
2025-12-05 14:01:11
960
原创 HAL库中的“句柄”到底是什么?
本文深入解析了STM32 HAL库中的"句柄"概念。句柄实质上是一个结构体指针,封装了管理外设所需的全部信息,包括寄存器基地址、配置参数、数据缓冲区、状态变量等。文章以UART为例,详细介绍了UART_HandleTypeDef结构体的组成及其关键成员的作用。通过CubeMX生成的代码示例,展示了句柄从定义、初始化到实际使用的完整流程。最后总结了句柄设计的四大优势:封装硬件细节、支持多实例、状态管理和增强代码可移植性。句柄作为HAL库的核心设计,为开发者提供了统一、便捷的外设操作接口。
2025-11-24 20:25:16
817
原创 嵌入式中ADC电压采集除了电阻分压外还能怎么做?
摘要:本文介绍了扩展ADC测量范围和提高测量性能的多种方法。针对高电压或负电压测量,可采用运放电路(同相/反相放大器、减法器、求和电路)、可编程增益放大器(PGA)或专用模拟前端(AFE)芯片。为提高精度和抗干扰能力,推荐差分测量和Σ-Δ型ADC。在需要电气隔离的场景,可采用隔离式ADC、调制器+数字隔离器或电压频率转换方案。对于简单阈值检测,比较器电路是经济高效的选择。文中还提供了STM32的代码示例,展示如何实现电平移位和比较器应用。
2025-11-24 19:55:58
705
原创 如何将编码电机的脉冲值转换成小车转速(RPM)以及速度(m/s)
基于STM32单片机,通过编码电机实现小车运动状态的精确测量,包括速度、距离和方向检测。
2025-11-23 18:04:48
583
原创 如何让电机速度“稳如老狗”?编码器PID闭环控制算法详解
PID代表比例(Proportional)、积分(Integral)、微分(Derivative),是一种基于当前误差、过去误差的累积以及未来误差变化趋势来生成控制量的算法。②增量式PID由位置式PID推导得到,每次计算得到的是输出值的增量,如果直接给到被控对象,则需要被控对象内部有积分功能。④位置式PID和增量式PID计算时产生的中间变量不同,如果对这些变量加以调节,可以实现不同的特性。根据这个误差计算出控制量(通常为PWM占空比),驱动电机向减小误差的方向运动,从而形成一个闭合的负反馈回路。
2025-11-23 17:39:08
1373
原创 蓝桥杯嵌入式-核心模块汇总
这是我对蓝桥杯嵌入式(STM32G431RBT6)核心模块的代码框架梳理,由于代码细节较多,文中难免存在疏漏或错误。如果您在参考过程中发现任何问题,恳请在评论区不吝指正,也欢迎大家一起交流讨论!
2025-11-09 19:58:36
395
原创 如何在windows下部署YOLOv5
网站输入:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/网站输入:https://github.com/ultralytics/yolov5。注:关掉机场以及避免使用校园网,最好使用5G流量进行下载。
2025-08-28 17:49:48
243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅