UDS:基于CANFD &Stmin =0导致OTA失败问题分析及解决方法

1 篇文章 0 订阅
1 篇文章 0 订阅

问题描述:

软硬件描述

软件

Boot程序

CAN-FD通信(波特率:500k+2M),采用1ms的轮询接收和发送数据

UDS协议;

STmin =0连续帧时间间隔,连续帧间隔较短;

硬件

芯片型号TLE989X;

现象描述

在OTA过程中,上位机(CANOE)发送36服务(发送数据128Bytes)。上位机发送连续帧后boot未响应上位机(boot应做出正响应或负响应),导致OTA失败。

从CANOE 记录的Log来看,连续帧报文间隔109us;通过Keil仿真可以看到从数据寄存器中读取的数据是有问题的(倒数第二帧的后半部分数据不对)。

问题分析

问题分析一:是否因为CANFD模块接收到的数据没有上传到应用层导致失败

尝试方法一:使用FIFO功能接收数据
尝试结果:无法解决问题。TLE989x 集成的CANFD模块不支持FIFO功能,(FIFO功能仅适用于CAN模块)

尝试方法二:使用中断的方式进行数据的收/发

测试:
测量倒数第二帧发送完成到最后一帧发送完成时长(109us)

测量接收中断运行时长(31.4us)

结果:使用中断可以解决OTA失败的问题。

在使用中断方式进行数据收发时需注意中断运行时长,中断运行时间太长也导致接收丢数据,见下文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值