电子产业一站式赋能平台

PCB联盟网

搜索
查看: 26|回复: 0
收起左侧

多设备CAN总线通信异常的故障排查

[复制链接]

936

主题

936

帖子

7732

积分

高级会员

Rank: 5Rank: 5

积分
7732
发表于 3 天前 | 显示全部楼层 |阅读模式

necs0r1bd5s6407546219.gif

necs0r1bd5s6407546219.gif
) I0 U. N0 z- S+ J" ?/ z
点击上方蓝色字体,关注我们
& w+ s" r4 r, C' q9 U4 V/ w2 M* u( c/ P8 M/ j: C

2 z1 {4 i0 L/ v/ k  z6 A% Z根据这位朋友提供的背景和故障现象,初步判断可能存在以下几类问题:CAN总线硬件问题、CAN总线通信参数配置问题、CAN转TTL芯片的问题、CAN总线流控或负载问题。
: }! H. {+ ]% t; S) G8 F/ P5 {" k! Z. ]$ y: N) m1 O# j- k- L$ Y, L
下面我将从这些方向进行详细的排查和解决方案分析。
1 Z2 M  C( Y& i, t$ j- z+ ]
  • 逐个连接设备,确保单独工作正常,之后逐个增加,确认问题出现的具体场景和设备。
  • 使用CAN调试工具监控总线状态,特别是错误帧和异常帧。
  • 检查CAN总线终端电阻、接线是否正确。
  • 调整发送间隔和波特率,避免总线拥堵。
  • 如果条件允许,测试更高性能的CAN转TTL芯片或直接更换稳定的CAN接口IMU模块。0 u3 F, N/ g0 n# ^: g

    2avfhzbd3fp6407546319.png

    2avfhzbd3fp6407546319.png
    ; e; `, h' h  s
    7 H$ o( m' n% `) L9 k- W. {
    1
    ! h6 }, ^! e& f4 p) I5 s( |?? CAN终端电阻
    + ~1 H8 h+ ^( ?: U[/ol]首先,应从硬件连接与物理层问题入手。
    $ F, G  \$ _7 Q$ U% ~' d: k7 ?3 f7 Z2 b# E
    CAN总线的两端需要各加一个120Ω的终端电阻,以确保信号反射和波形的完整性。
    $ t4 p! l! ~8 o* d' e, u2 u8 E6 L5 Y! s" R6 B! {* t& Z4 \. g

    qoneejud02e6407546419.png

    qoneejud02e6407546419.png
    9 ?7 I/ x! e  j8 C( ^4 D

      D& X4 {8 D! T' o实际测量CANH与CANL之间的电阻,应该接近60Ω,若偏差较大,应检查终端电阻的接入情况,避免多个设备重复接入。3 r, z9 x3 Y! Q0 z

    2 w. ]3 b9 j. x$ o; C此外,确保CANH和CANL的连接正确且未反接,最好采用双绞线布线以减少干扰。
    " e# C1 X* D& r" y4 A2& J: D4 {2 A, D+ w) w2 d6 u
    ?? CAN波特率与参数配置问题
    . @7 c7 E* d  b7 P$ n/ X其次,CAN波特率与时序配置是否一致,是故障排查的关键。, D$ L8 [% H7 f6 C& W

    0 e% L5 m7 ]2 w9 N  g* D如果STM32和CAN转TTL芯片的波特率设置不一致,将导致通信失败。
    8 ~* {/ W9 C9 J- A! Y: ]
    % {# T" k8 \7 U& N. `8 S9 `

    qlwygr2tcvq6407546519.jpg

    qlwygr2tcvq6407546519.jpg

    " T& q; }7 A/ u. X& X( K建议使用CAN调试工具或示波器确认波特率和信号时序是否一致,并调整STM32的CAN定时器配置,确保Prescaler、SJW、BS1、BS2的设置与转换芯片保持一致。4 o" B) {, t( h( j) P1 r# v6 Z

    & i9 O* j! b% @& O5 r3 X* {. [同时,还应注意每个设备的CAN ID是否唯一有效,避免冲突或仲裁失败。" x; b# W9 v5 n6 p. m
    [/ol]1 C5 H7 o" P4 s, a# l; b$ j4 U
    3
    0 O: k0 O8 _' g5 D4 S, r??? CAN转TTL芯片问题/ Z# T+ a- A, C) S; I
    [/ol]除了波特率和ID冲突,CAN转TTL转换芯片的缓存深度和处理速度也是影响通信稳定性的因素。
    4 Z* _3 K8 X# |4 k) Z) {! \; W0 Y如果多个设备并发发送数据时,转换芯片的缓存溢出或处理不及时,会导致数据丢失或停止发送。( S! @! s" o" N2 t

    hscnkp4rui56407546619.png

    hscnkp4rui56407546619.png
    + r; r5 C& U/ _% |- H8 ~' L
    建议查看芯片手册或咨询厂家,确认缓存容量是否能支持当前并发需求。1 H* f+ z/ R1 U+ ^
    如果可能,降低串口波特率或调整CAN波特率进行测试。
    $ v1 Z( y& o9 X! e! V9 b3 V. S/ m此外,确认芯片的工作模式(标准帧、扩展帧)是否与STM32的CAN配置一致。; x8 y6 n2 w1 F& A6 z$ ~
    40 q) X1 ^# j* U' l6 U: \
    ?? CAN总线负载与流控问题; s2 ^+ i! b; O# i4 j$ y5 k0 `; J( V
    CAN总线的负载过高也可能导致通信异常。
    , ]  y3 w' D1 [  W+ q* f" y" L% H) t7 H7 D2 a
    当多个设备频繁发送数据时,总线利用率过高可能引发拥堵或冲突。! j+ Q+ I$ G; g2 Z
    ' H: k6 n5 B( e) s) k
    可以通过CAN调试工具监控总线负载,如果利用率超过60%-70%,
    3 u3 s: b4 n4 s0 a- E/ `3 J' W5 |- {, o; w3 N: t
    建议适当延长每个设备的发送周期,减少总线冲突的可能性。
    / B0 @! x4 d# O3 ]- k! @) Z2 G. L; w) o" i+ ?, T
    同时,确认CAN转TTL芯片是否支持硬件或软件流控,确保发送节奏合理。
    1 ~* s9 k4 E8 z[/ol]
    $ `1 l- A2 ?( f" M% y

    zh04yf3d3ck6407546719.jpg

    zh04yf3d3ck6407546719.jpg
    3 v0 j) ^, e$ U; [

    nvhga2udc326407546819.gif

    nvhga2udc326407546819.gif
    * j3 A4 _. v  k0 h
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表