- 博客(17)
- 资源 (2)
- 收藏
- 关注
原创 STM32 串口连续接收“假死“:一个判错 DMA 通道的低级错误
单帧发送一切正常,一连发就卡住——这种 bug 最磨人。这篇记一下前阵子踩的一个坑:现象看着像协议解析挂了,实际是发送完成中断判错了 DMA 通道的标志,结果把接收这条线整个锁死。
2026-06-16 19:11:38
255
原创 AD7606:从硬件连接到 STM32 串行驱动软件分层实现
本文介绍了STM32通过串行接口驱动AD7606同步采样ADC的完整方案。AD7606支持8/6/4通道16位同步采样,串行模式占用IO少,适合工业控制场景。硬件设计需注意串行模式选择、量程配置和过采样设置。软件采用分层架构,BSP层负责芯片时序,APP层处理业务逻辑。AD7606输出为二进制补码格式,需注意与客户要求的数据类型转换。调试时应先验证硬件连接和基本时序,再逐步优化采样流程。该方案兼顾性能和灵活性,适用于电源监控、运动控制等工业应用。
2026-05-09 11:04:21
553
原创 LDO硬件设计指南:输入最大电压不等于能带动负载,别让数据手册“骗”了你
LDO选型常见误区:工程师常仅关注输入电压和输出电流指标,而忽略关键的热设计因素。LDO的稳定输出能力实际取决于压差、负载电流及芯片散热能力,而非简单的耐压和电流参数。核心公式PD=(VIN-VOUT)×IOUT揭示了芯片内部功耗本质,而结温计算TJ=TA+PD×RθJA则是判断可行性的关键。选型时必须结合封装热阻、PCB散热条件和环境温度综合分析,避免因热设计不足导致芯片过热失效。当压差大、负载重时,应考虑采用Buck+LDO的级联方案。工程师应养成先算功耗再看型号的习惯,将热设计作为LDO选型的必要环节
2026-03-27 11:57:33
489
原创 为什么 FPGA 项目很多人不用 Moore,而更喜欢 Mealy?
FPGA设计中常采用Mealy状态机+输出寄存器的混合方案,主要原因有三:1)响应速度快,Mealy可在同一周期响应输入变化,而Moore需延迟1个周期;2)状态数量少,Mealy通过组合逻辑减少状态;3)节省硬件资源。虽然纯Mealy可能产生毛刺,但通过输出寄存器可兼具Mealy的速度优势和Moore的稳定性。实际工程中,Hybrid FSM(Mealy逻辑+寄存器输出)已成为最佳实践,在协议解析等场景广泛应用。相比纯Moore方案,这种设计能显著提升性能并降低资源消耗。
2026-03-16 17:45:14
347
原创 STM32 内存优化实战指南:如何有效节省 RAM 与 FLASH
本文总结了嵌入式项目中内存优化的实用策略。针对RAM和FLASH不足问题,重点推荐将查表数据和字符串声明为const存入Flash、合理缩小通信缓冲区、避免全局大数组等直接有效的方法。在通信系统优化方面,建议共享接收缓冲和使用DMA环形接收。此外,禁用浮点printf、避免sprintf、启用编译优化选项和使用精简C库都能显著减少内存占用。通过生成map文件定位内存热点,按优先级实施优化,可使RAM使用减少30%-60%,FLASH占用减少20%-40%。这些优化无需改变系统功能,却能显著提升资源利用率和系
2026-03-02 09:22:56
731
原创 PWM输出波形奇怪,请停止在循环里狂刷 HAL_TIM_PWM_Start和HAL_TIM_PWM_Stop
摘要:在STM32项目中频繁调用HAL_TIM_PWM_Start/Stop()可能导致PWM输出出现毛刺,尤其在100%占空比时更明显。问题根源在于HAL库的CCxE寄存器操作会瞬时断开输出通道,产生波形抖动。文章建议通过状态缓存机制避免重复调用,只在状态变化时操作寄存器,这样既能消除杂波,又能提升系统性能。排查时应重点关注循环中的无效Start/Stop调用和CCER寄存器状态变化。核心原则是"状态不变时不重复写寄存器"。
2026-02-11 11:49:31
494
原创 EtherCAT PDO 映射概述:从“是什么”到“怎么配”,一次讲透
摘要:EtherCAT通过对象字典(OD)、过程数据对象(PDO)和映射(Mapping)实现高效数据传输。OD作为变量地址表,主站通过PDO从中选择周期性传输的变量,并通过0x1600/0x1A00定义映射顺序和位宽。0x1C12/0x1C13将映射挂载到同步管理器,最终形成固定布局的过程数据帧。例如配置0x1600定义变量映射,再通过0x1C12启用该映射,实现主从站间4字节数据的周期交换。这种机制确保了实时数据的紧凑高效传输。
2026-01-28 17:39:53
2434
2
原创 为什么结构体可以用 sizeof 计算大小,而 enum 却不行?
摘要: 在C语言中,sizeof(struct)能正确计算结构体的内存大小,但sizeof(enum)无法获取枚举成员数量,因为两者本质不同。结构体是内存中的复合对象,而枚举仅是编译期的符号集合,其sizeof结果仅反映底层整数类型的大小(如int)。枚举成员数量需通过人工定义边界(如_BASE和_MAX)显式计算,而非依赖语言特性。工程中应避免混淆逻辑与物理概念,确保代码可维护性。 (字数:150)
2025-12-19 14:27:55
531
原创 取余在编程中的重要性
取余”是让数值“循环回头”的一种数学操作,它能让计数、数组索引、事件触发都变得简洁而高效,是所有嵌入式和算法代码中必不可少的工具。
2025-12-04 15:23:49
362
原创 [nucleo-H7A3ZI-Q教程] 2、按键输入 -- 支持短按,长按和组合按键检测的代码移植
基于开发板nucleo-H7A3ZI-G的按键输入代码移植,支持短按、长按和组合按键功能
2024-05-22 01:23:44
1058
原创 K210入门教学 第1章 KendryteIDE 安装教程
本教程使用Draco开发板为实验工具,并以简洁的语句带领读者们快速入门K210芯片,填补K210芯片较少入门教学资料的空缺。本文将介绍KendryteIDE的安装方式和使用方法
2021-12-23 22:35:24
6370
2
原创 Draco嵌入式AI开发板使用手册V0.1.1
1. 硬件资源介绍Draco嵌入式AI开发板,由AI模块和外设底板构成。开发板集成了摄像头、LCD屏幕、麦克风和WIFI模块等丰富外设,且板载拓展口与树莓派兼容。利用Type-C接口搭配USB-UART电路使得用户可以直接连接电脑进行开发。1.1. AI模块AI模块内置双核64位处理器,频率高达400MHz,拥有8M的内存(SRAM)和128M的FLASH,内置多种硬件加速器(KPU、FPU、APU等),具有机器视觉与听觉能力,总算力达1TOPS。1.2. 外设底板外设底板上集成多种外设,
2021-10-12 17:01:49
6078
1
W25Q64FVSSIQ数据手册,有需要的自行下载
2022-10-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅