今天农巡车摄像头到单片机到esp32到网页问题(数据传输)
·
1. HSE_VALUE配置错误(最根本的问题)
问题: 串口发出来全是乱码,换各种波特率都不对。
根本原因: stm32f4xx.h 里 HSE_VALUE 被设置成了 25000000(25MHz),但实际板子上的晶振是 8MHz。这导致STM32所有跟时钟有关的计算全部偏差,包括串口波特率、PWM频率、定时器周期、delay时间,全部是错的,我也是服了才发现。
解决: 把 HSE_VALUE 改成 8000000。
教训: 移植别人的工程或者用模板工程时,第一件事要确认时钟配置是否和自己的硬件匹配。
2. CH340没接VCC导致乱码
问题: 用CH340接STM32的PA2,(因为PA2是接的我的esp32RX端,我想看看是否单片机的数据传到了esp32),串口助手收到的是乱码。
原因: CH340的VCC没有接,模块没有基准电压,接收到的电平信号无法正确识别。
解决: 给CH340的VCC接STM32的3.3V。
教训: 串口模块必须供电且和目标设备共地,缺一不可。
3. 串口不共地导致通信异常
问题: STM32和ESP32串口通信收到乱码。
原因: 两个设备没有共地,电平基准不同,接收方无法正确判断高低电平。
解决: 用一根杜邦线把STM32的GND和ESP32的GND连在一起。
教训: 任何两个设备之间做串口通信,GND必须连通,这是最基础也最容易忘的一步。
4. ESP32网页不显示数据
问题: 网页一直显示"等待巡检数据",没有变化。
排查过程:
- 先用串口监视器手动发假数据测试ESP32解析逻辑
- 再用CH340直接接STM32验证STM32有没有在发数据
- 发现STM32发出来是乱码,定位到HSE_VALUE问题
- 改完HSE_VALUE后数据正常,ESP32成功收到并显示
解决: 修复HSE_VALUE,确保波特率一致,共地。对于我来说这个思想是很重要的
5. OpenMV串口引脚冲突(PA9被编码器和串口同时占用)
问题: 编码器初始化用了PA9,OpenMV串口也用了PA9,后初始化的把前面的覆盖掉,导致编码器左后轮失效。
解决: 把OpenMV通信改到USART3(PC10/PC11),彻底避开编码器引脚。
调试思路总结
今天整个调试过程体现的核心思路是分段隔离验证:
- 先验证最小单元:不跑整车(其实主要是方便),先单独让STM32发一条固定字符串,验证串口本身能不能工作
- 逐段排查:STM32→CH340→串口助手,一段一段确认,不要一上来就接全套硬件
- 区分硬件问题和软件问题:乱码是硬件/配置问题,没数据是逻辑问题,两类问题排查方向完全不同
- 改一个验一个:我每次只改一个变量(波特率、GND、VCC),不要同时改多个,否则不知道是哪个起了作用

更多推荐
所有评论(0)