STM32输入捕获超声波模块
一、工作原理回顾1.1 HC-SR04模块工作流程textSTM32 HC-SR04模块 │ │ │────Trig高电平(≥10μs)───→│ 1. 接收到触发信号 │ │ │ │ 2. 自动发射8个40kHz方波 │ │ │←────Echo高电平──────────│ 3. 发射完成Echo拉高 │ (持续时间超声波往返时间) │ │ │ │ │ 4. 收到回波Echo拉低 │←────Echo低电平──────────│关键点Echo引脚高电平的持续时间就是超声波从发射到返回的完整时间。1.2 距离计算公式text距离(cm) 高电平时间(μs) × 声速(cm/μs) / 2 常温(25℃)下声速 ≈ 343m/s 0.0343 cm/μs 简化公式距离(cm) 高电平时间(μs) / 58简化公式的推导0.0343/2 0.01715倒数约为58.3。1.3 输入捕获测时原理text定时器时钟: 1MHz (1个计数周期1μs) Echo信号: ────────┐ ┌──────── │ │ │ 高电平持续时间 │ │ (如: 5800μs) │ ────────────┴────┴────────────────────┴────┴────→ 捕获事件: ↑上升沿捕获 ↑下降沿捕获 记录CNT1000 记录CNT6800 高电平时间 6800 - 1000 5800μs 距离 5800 / 58 100cm定时器以1MHz的频率计数每μs加1在Echo信号的上升沿和下降沿分别记录计数值差值就是高电平持续的时间。一句话总结输入捕获 硬件自动给信号跳变打时间戳。二、硬件连接HC-SR04引脚连接到STM32说明VCC5V注意HC-SR04需要5V供电GNDGND共地TrigPA0任意GPIO触发信号输出EchoPA6TIM3_CH1必须接到定时器的捕获通道引脚重要Echo引脚输出的是5V高电平STM32的GPIO耐受5V才能直连。如果不确定建议用电平转换电路或串联1kΩ电阻分压保护。三、CubeMX配置3.1 基础配置新建工程选择芯片如STM32F103C8T6RCCHSE设为Crystal/Ceramic ResonatorSYSDebug设为Serial Wire定时器3配置输入捕获为什么用TIM3TIM3是通用定时器有4个捕获通道选择它是因为其通道1PA6正好可以用。USART1配置调试用PA6Echo已被定时器自动配置不需要单独设置。GPIO配置时钟树配置四、调试要点与常见问题5.1 时序检查清单检查项正常值异常排查Trig高电平时间≥10μs检查延时函数是否准确Echo高电平时间200μs~24ms对应3~400cm超出范围说明测量异常测量间隔≥60ms太短会导致回波干扰5.2 常见问题及解决问题现象可能原因解决方法始终返回0Echo引脚连接错误确认Echo接到了TIM3_CH1PA6测量值跳动大未做滤波连续测5次取平均近距离测不准模块盲区2-4cm软件屏蔽200μs的结果长时间运行卡死超时处理缺失加入上面代码中的超时机制串口无输出波特率不匹配确认115200且接线正确
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2562203.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!