卧槽,电容引起了CAN通信不正常

摘要

本篇笔记主要记录基于恩智浦MPC5744P的CAN驱动开发和测试过程中使用英飞凌TLE9252带功能安全的CAN收发器时候遇到的问题。

准备工作

  1. 安装S32DS for PA, 因为我们在S32DS下开发MPC5744P。

  2. 安装S32DS 的SDK,  我们使用最新版3.0.3

问题提出

恩智浦的MPC5744P控制器局域网络CAN,跟我们之前使用的恩智浦Kinetis  KV, 等系列的flexCAN结构基本是一样的,本次在开发过程中在使用英飞凌TLE9252收发器时候,之前开发的可以正常通信的工程无法通信。英飞凌的TLE9252是比较新的一颗料,主要用于汽车上带功能安全的CAN通信网络,比一般的收发器复杂,有多种操作模式,如,睡眠模式,正常模式,监听模式等,正常操作模式中需要将EN脚和NSTB脚拉高。

be3b7ea946f85789495d0f8d273babe3.png

软件中添加

5da13863573a2be8ac13a23408479c39.png

其余驱动程序和初始化跟CAN0一样,收发采用统一接口,可是在测试时候发现CAN1不通,无法通信。

cf15af484a519a91211e115501f9070e.png

解决问题

先将CAN跳线到另一路非功能安全的收发器,CAN通信收发正常,排除CAN驱动软件问题。

将CAN1跳回TLE9252V,最后经过多次实验验证发现电路中C53和C55目前的设计47nF偏大在500kbps波特率下,信号失真无法通信,将波特率调低为50kbps可以正常通信。拆掉C53和C54,可以正常通信,临时飞线硬件设计更改为容值小一档的电容,在1Mbps,500kbps下可以正常通信。

e5cc23828991567794234816f1ab7b9e.png

总结

在经典CAN设计中,速率低的时候可以不用这两个电容,在带有CANFD的通信中,CAN FD 速率比较高,一般需要添加这两个电容,但容值不易大,可以用示波器抓下波形,调整为合适值。

234e48b0fecf726f3c8f68f8b2a424ad.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值