嵌入式开发避坑指南

一、硬件与传感器相关问题

  1. MQ-2 烟雾传感器:AO/DO 混淆问题

    • 踩坑:一开始同时用 AO 和 DO,误以为 LM393 是 AO 的必须电路。
    • 解决:理清了 DO 是数字开关量(经 LM393 比较器),AO 是模拟电压量(直接接 ADC),两者是完全独立的两条路径。
  2. LM393 电压比较器工作原理理解不清

    • 踩坑:不知道 LM393 输出是开漏,需要上拉,且阈值要用电位器调节(模块上的蓝色旋钮)。
    • 解决:理解了它的核心作用是把连续模拟电压转换成数字电平,适合做 "阈值触发检测",而不是读浓度。
  3. IMX6ULL ADC 配置错误,读不到正确值

    • 踩坑:设备树里用了 GPIO 模式(0xb0),而不是 ADC 专用的浮空模式(0x9000),导致模拟通路没打开,采集值异常。
    • 解决:将 MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 改为 MX6UL_PAD_GPIO1_IO01__ADC1_IN1,并配置 0x9000,才真正进入模拟高阻输入状态。
  4. I2C 传感器(LM75/BH1750)与 EEPROM(AT24C02)概念混淆

    • 踩坑:一开始分不清哪些是 "传感器",哪些是 "存储器"。
    • 解决:理清了 LM75/BH1750 是 I2C 接口的数字传感器,而 AT24C02 是 I2C 接口的 EEPROM,用于掉电保存数据,两者用途完全不同。

二、驱动与设备树配置问题

  1. IMX6ULL ADC 引脚复用配置错误,MUX 模式未切到 ADC

    • 踩坑:只改了 PAD_CTL(0x9000),但复用模式还是 GPIO,导致引脚工作在数字域,模拟功能无效。
    • 解决:明确了 IMX6ULL 引脚配置需要同时满足「复用模式(MUX)+ 电气配置(PAD_CTL)」,两者缺一不可。
  2. TSC 触摸屏控制器占用 IMX6ULL 的 ADC 引脚

    • 踩坑:内核启动时 TSC 优先占用了 ADC 引脚,导致 ADC 无法正常申请。
    • 解决:在设备树中禁用 TSC 节点,释放引脚资源,ADC 才能正常工作。
  3. FreeRTOS 消息队列创建失败,句柄为 NULL

    • 踩坑:定义了 osMessageQueueId_t sensor_queue 全局变量,但忘记调用 osMessageQueueNew() 创建队列,导致句柄为 0,任务间通信无法进行。
    • 解决:在任务创建前初始化队列,并配置足够的 FreeRTOS 堆大小,确保内存分配成功。

三、软件与调试相关问题

  1. 轮询与中断 / DMA 的概念混淆

    • 踩坑:不知道轮询、中断、DMA 三者的区别,以为轮询就是采集数据的唯一方式。
    • 解决:理解了轮询是 CPU 主动查询外设状态,中断是外设主动通知 CPU,DMA 是硬件直接搬运数据,三者各有适用场景。
  2. Keil 调试中 SystemClock_Config 函数挂死

    • 踩坑:时钟配置错误导致 MCU 挂死,调试器无法正常回溯调用栈,main 地址显示异常。
    • 解决:单步排查时钟初始化流程,确认晶振配置、PLL 锁定、时钟分频是否正确,避免死循环等待导致的挂死。
  3. FlyMcu 串口通信与烧录原理不清

    • 踩坑:误以为 FlyMcu 能直接让电脑和开发板通信,忽略了 USB 转 TTL 模块(CH340)的作用。
    • 解决:理清了 FlyMcu 只是电脑端的串口工具,真正的物理通信依赖 CH340 实现 USB ↔ TTL 电平转换,开发板的 UART 外设才是通信主体。
相关推荐
国科安芯2 小时前
ASC8T245S 8通道电平转换设计实战:从系统架构到QFN24 Layout再到量产测试
网络·单片机·物联网·安全·fpga开发·系统架构
云栖梦泽2 小时前
将RAW打包成MIPI CSI2
linux·人工智能·嵌入式硬件
伟大的前程3 小时前
us级开定时器中断,单片机的开销大,改用轮询的方式
单片机·嵌入式硬件
ACP广源盛1392462567315 小时前
IX8024@ACP# 搭配此芯 AI 服务器 + 爱芯元智产品完整方案
大数据·运维·服务器·人工智能·分布式·嵌入式硬件
ShallWeL16 小时前
NVIDIA Jetson 早期系列演进
人工智能·嵌入式硬件·边缘计算·智能硬件
2501_9142459318 小时前
C语言与硬件交互:从GPIO到中断的嵌入式编程实践
c语言·单片机·交互
2401_8541515518 小时前
嵌入式 Bootloader 与 OTA 固件升级深度解析——从 Flash 分区到安全回滚
开发语言·stm32·单片机·嵌入式硬件·安全·php
炸膛坦客19 小时前
单片机/C/C++八股:(二十四)编译文件( .bin 和 .hex ,包括 .elf 和 .axf )
c语言·c++·单片机
Yunhoa19 小时前
51单片机(DS18B20 数字温度传感器)
单片机·嵌入式硬件·51单片机
zlinear数据采集卡20 小时前
2mV纹波的代价:硬核拆解ZLinear模拟前端放大器与正负可调电源设计
arm开发·单片机·嵌入式硬件·fpga开发·架构·开源