关于用逻辑分析仪调试CAN总线的心得体会

1.CAN总线是一双绞线的差分信号如下图所示,CAN H 和CAN L都处于相同的电平2.5V时,呈隐性电平,逻辑1;当CAN H 处于3.5V 而CAN L处于1.5V时 总线呈显性电平逻辑0;对于为什么要叫隐性电平,是因为隐性电平比较"隐秘"两者的电压差察觉不出来都是一条横着的直线;对于为什么要叫显性电平,是因为两者的电压差明显,一下子就能看到,并且显性的样子像嘴巴张开的时候,意味就是0.

2.当我用逻辑分析仪接入CAN 检测总线电平的时候,我们要注意一般逻辑分析仪是不允许同时设置多段的电平阈值逻辑,因为CAN H 和CAN L 对应逻辑 0 和逻辑1 的分段电平阈值不一致 。(我这里对CAN L 设置的是低于1.6V为低电平高于他为高电平),一般来说我们可以将CAN L接入逻辑分析仪去检测电平逻辑,我们CAN总线的高低电平逻辑,需要你主动去配置阈值电压,所以建议用示波器去观察CAN H 和CAN L的压差去判断0 1 逻辑,如下图 我只接入了CAN L ,阈值电压设置的是高于1.6是高电平低于1.6是低电平

我用CAN上位机发送了一针 ID为0 数据域为00 11 22 33 44 55 66 77的数据,可以看出逻辑分析是可以根据CAN H 或者 CAN L 之间一段的信号来解析数据,但是需要我们设置正确的阈值电压,根据CAN L 解析出来的数据,可以根据图上观察,CAN总线只要有五个相同的数据,下一位数据会产生一个相反的电平位这个插入的位被称为“填充位”或“位填充”。它不是用户数据的一部分,而是由CAN控制器在传输数据时自动插入和移除的。这种位填充的机制有助于保持CAN总线上的电平变化,防止由于过长的连续相同电平导致的时钟同步问题。这有助于确保在CAN通信中的时钟同步和数据传输的准确性(CAN 总线不允许出现6个相同的Bit位)

3.可以观察发现,其实CAN L跟我们串口所在通信机制是类似的,CAN L 拉低的时候 信号开始传输 拉高的时候 是EOF停止信号

4.还有一个是值得注意的:CAN 收发器 (我这里使用的是TAJ1050)的GND要接到单片机 形成共地,否则波形会无法产生。

5.CAN总线在进行ID仲裁的时候硬件会自动屏蔽位填充。

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
can通信是一种常用的数据传输方式,用于不同设备之间的互联互通。而DSP28335和STM32都是嵌入式系统中常见的处理器,可以通过CAN总线进行通信。如果DSP28335无法接收到STM32发送的数据,可能存在以下几个可能的原因: 1. 硬件连接问题:首先需要确认DSP28335和STM32之间的CAN总线连接是否正确。需要检查CAN的引脚连接是否正确,如CAN_TX和CAN_RX引脚是否正确连接到对应的引脚。同时还需要确认CAN总线的电源和地连接是否正常,确保信号正常传输。 2. 软件设置问题:在DSP28335和STM32上进行CAN通信时,需要对CAN控制器进行正确的配置和初始化。如果DSP28335无法接收到STM32的数据,可能是由于通信参数设置不正确。需要检查CAN的波特率、过滤器设置等参数是否一致。 3. 通信协议不匹配:DSP28335和STM32使用不同的CAN通信协议,可以是CAN 2.0A、CAN 2.0B等。如果两者使用的通信协议不一致,就无法正常进行通信。需要确认两者使用的通信协议是否一致,并进行相应的协议兼容性处理。 4. 总线负载过重:如果CAN总线上设备过多,可能会导致总线负载过重,从而影响通信的稳定性。需要确保总线上设备数量适当,避免超过总线的负载能力。 综上所述,如果DSP28335无法接收到STM32发送的数据,需要仔细检查硬件连接、软件设置和通信协议等因素,以找出问题所在并进行相应的修正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值