TC377TX 超声波雷达数据更新缓慢问题排查

本文详细探讨了超声波雷达数据更新缓慢的问题,从表象、原理到原因查找,最终定位为中断执行时间和MCU发送电脉冲时间过长。通过对中断函数执行时间的测试,发现不同任务中Dio_FlipChannel函数执行效率差异,原因是访问DSRAM的速度问题。解决方案是将CORE1 OS相关的全局变量和CSA存储至DSRAM1,实车测试后确认问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、问题表象

  通过标定数据查看超声波雷达实时的距离大小,发现距离并没有实时更新,而是在实际值与默认值之间跳变,更新十分缓慢。
  泊车功能必须依赖超声波雷达测距来实现,当雷达数据更新缓慢时,会导致泊车失败。

2、超声波雷达测距实现原理

  MCU给超声波雷达发送一个400us/580us的低电平,超声波雷达接收到之后会回复当前距离的波形。MCU在TASK中启动发波,然后再定时400us的中断中拉高IO,等待超声波雷达回波。
  超声波雷达发波时间要求:
在这里插入图片描述

3、原因查找

  实车测试发现,该问题在实车测试时百分百出现。因此直接抓取超声波雷达的通信波形,确认MCU发波是否正常。
  波形结果:

  • 单发多收实测波形:610~620us左右。——MCU发波最大会超过657us。在这里插入图片描述
  • 单发单收实测波形:430~440us左右。——MCU发波最大会超过472us。在这里插入图片描述
      通过测试通信波形确认,当前导致故障的原因是MCU发送的电脉冲时间超出最大的误差范围,导致雷达认为当前接收的波形无效因此没有回波。MCU接收不到回波则认为雷达距离为默认值。

4、问题排查

  MCU发送给雷达的低脉冲的时间长短,取决于定时中断函数执行时间的影响,因为MCU IO拉高是在中断中执行的。当中断函数执行时间过长时,会导致MCU IO不会立马拉高,导致低脉冲时间增长。
  测试中断函数的执行时间,确认该问题是否是因为中断执行时间过长导致的。
  测试函数执行的函数接口及使用方法:

//函数执行时间测试接口:
#include "IfxStm_reg.h"
uint32 s_Stm1[100];
uint32 s_Stm2[100];
float32 s_stm[100];
uint8 s_i =<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值