Loto实践干货(3) 测量CAN总线通讯数据

最近在做运动控制卡的项目,调试样机的过程中,需要验证CAN总线通讯功能的正确性。以前只限于理论上认识CAN总线,使用的CANbus的通讯卡也是有上位机例程,基本上简单地配置上位机软件就可以正常工作了。这次调试需要深入测试CAN接口的通讯过程,正好把之前的对CAN的认识再复习深化一下。

之所以采用CAN总线,是因为它只需要两根双绞线就可以连接多个通讯节点,并且可以传输相对远的距离,在工业现场抗干扰能力也很强。下图是我按照CAN总线的要求做的一条双绞线,黄色和绿色分别是CAN_High线和CAN_Low线。要求绞距20mm,不绞合的距离不超过50mm。

规定的双绞线传输距离与CAN总线的传输速率的关系如下表。我们的传输距离很短,所以可以采用很高的传输速率。即便是采用最高的传输速率,以OSC802示波器的25M带宽,也是足够调试用的。

下图是我设计驱动控制板的CAN通讯接口部分的原理图,使用SN65HVD230收发器:

打样后的运动控制板是这样的:

使用LOTO的USB示波器OSC802对CAN通讯的信号进行捕捉,抓取数据进行解析判断。

使用USB示波器OSC802的单次触发功能,很轻松对CAN总线上的电平信号进行了捕捉。不过我们现在还看不懂它,需要对CAN的电平逻辑和传输协议有所了解。

没有收发信号时,两条导线上的电平相同(大约2.5V)。这种电平状态为隐形状态,也称之为隐性电平,即为逻辑1。有信号时,CAN_H导线的电平升高至少1V;而对应的CAN_L导线电平降低同样值,这种电平状态为显形状态,也称之为显性电平,即为逻辑0。5V和3.3V的CAN收发器的逻辑电平会稍有不同。

我们通过程序发出一串CAN数据后,用OSC802捕捉到的波形如下:

根据波形进行数据解码需要注意的有两点:

1:在CAN协议中将CAN_H和CAN_L的差值为高电平时定义为显性,逻辑上表示为0,为低电平时定义为隐性,逻辑上表示为1。

2:在CAN的协议中当连续出现5个显性时就需要插入一个隐性。

CAN的标准帧和扩展帧协议格式:

所以,波形数据解读为:

图中被红色斜线划掉的为CAN协议有意在5个连续显性后面加的单个隐性位,所以去掉。所以,通过USB 示波器 OSC802抓取到的数据为:

这个数据帧发出的数据为:

1010101111001101

0xAB, 0xCD

解析结果与上位机收发的结果互相验证正确,所以此次运动控制板的CAN接口功能调试成功完成。

Loto实践干货(3) 测量CAN总线通讯数据的更多相关文章

  1. Loto实践干货(8)loto示波器在LED台灯调光问题维修中的应用案例

    Loto实践干货(8)loto示波器在LED台灯调光问题维修中的应用案例 一位客户最近觉得觉得他的LED台灯好闪, 于是拆了看看,里面的控制板是这样的: 干掉双色调光功能,只调亮度的话闪烁的状况能好转 ...

  2. Loto实践干货(8) 实测 保险丝 用示波器带电流探头

    本文用LOTO示波器和5A的电流探头来实验两种常见类型的保险丝的保护曲线.一种是熔断型的,另一种是自恢复型的.我们通常需要在一些电路中对电流过大的情况做保护,比如防止用户把输出源短路,比如防止用户对电 ...

  3. LOTO实践【干货】电压比较器的快速应用

    LOTO实践[干货]电压比较器的快速应用 话不多说先上图: 最近出差去客户那边做设备调试,现场如上图,其中我负责的技术部分包含了一个掉落物监测的功能.硬件上的原理比较简单,发射板上的红外发射头阵列,以 ...

  4. I2C总线通讯协议

    I2C总线通讯协议 1. I2C总线简介 I2C是Inter-Integrated Circuit的简称,读作:I-squared-C.由飞利浦公司于1980年代提出,为了让主板.嵌入式系统或手机用以 ...

  5. 让Elasticsearch飞起来!——性能优化实践干货

    原文:让Elasticsearch飞起来!--性能优化实践干货 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog ...

  6. .Net最佳实践3:使用性能计数器收集性能数据

    本文值得阅读吗? 本文讨论我们如何使用性能计数器从应用程序收集数据.我们将先了解的基本知识,然后我们将看到一个简单的示例,我们将从中收集一些性能数据. 介绍: - 我的应用程序的性能是最好的,像火箭 ...

  7. 如何在Windows系统上用抓包软件Wireshark截获iPhone等网络通讯数据

    http://www.jb51.net/os/windows/189090.html 今天给大家介绍一种如何在Windows操作系统上使用著名的抓包工具软件Wireshark来截获iPhone.iPa ...

  8. Spring Boot干货系列:(八)数据存储篇-SQL关系型数据库之JdbcTemplate的使用

    Spring Boot干货系列:(八)数据存储篇-SQL关系型数据库之JdbcTemplate的使用 原创 2017-04-13 嘟嘟MD 嘟爷java超神学堂 前言 前面几章介绍了一些基础,但都是静 ...

  9. java实现测量到的工程数据

    [12,127,85,66,27,34,15,344,156,344,29,47,-] 这是某设备测量到的工程数据. 因工程要求,需要找出最大的 5 个值. 一般的想法是对它排序,输出前 5 个.但当 ...

  10. WOT干货大放送:大数据架构发展趋势及探索实践分享

      WOT大数据处理技术分会场,PingCAP CTO黄东旭.易观智库CTO郭炜.Mob开发者服务平台技术副总监林荣波.宜信技术研发中心高级架构师王东及商助科技(99Click)顾问总监郑泉五位讲师, ...

随机推荐

  1. 解决邮件客户端QQ Mail及Thunderbird无法登入Outlook的问题

    最近无论是安卓手机的邮件客户端, 或者是 Ubuntu 下的 Thunderbird 都无法登入 Outlook 账号, 原因是需要开启双因素验证. 这个在 Outlook 界面上是不能直接设置的, ...

  2. Js中fetch方法

    Js中fetch方法 fetch()方法定义在Window对象以及WorkerGlobalScope对象上,用于发起获取资源的请求,其返回一个Promise对象,这个Promise对象会在请求响应后被 ...

  3. Frogger题解

    Frogger 法一:floyd #include<iostream> #include<cstring> #include<algorithm> #include ...

  4. python课本学习-第二章

    chapter 2 编程基础 一.基本语法 1.注释 python注释以\("#"\)开始 多行注释使用三个单引号/双引号作为开始和结束标志 2.标识符与关键字 python命名时 ...

  5. acm交互题

    1.Dragon Balls 根据勾股定理把所有整数点都给求解出来,然后依次询问,注意数据范围 暴力求解,把每次可能的值都求出来,然后逐个比较. #include<bits/stdc++.h&g ...

  6. 【Android 逆向】【ARM汇编】 arm64部分知识

    arm64寄存器更多 X0-X30 SP CPSR PC 64位 W0-W30 32位 PC寄存器的值禁止修改 参数放在 X0-X7/W0-W7 结果放在 X0 函数返回 RET 相当于 bl lr ...

  7. RAID 10磁盘阵列实践

    RAID概述 RAID技术通过把多个硬盘设备组合成一个容量更大.安全性更好的磁盘阵列,利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数 ...

  8. js之以面向对象的形式书写贪吃蛇

    此代码存在一定的小bug,当蛇出边界之后存在一定的小问题 分析贪吃蛇功能需求: 1.食物 (1)每次生成一个,位置随意但不可超出规定范围 (2)每次蛇吃到食物之后,前一个食物消失同时新的食物又生成 ( ...

  9. 阿尔萨斯(Arthas)入门

    目录 简介 Arthas(阿尔萨斯) 能为你做什么 安装 快速安装 全量安装 卸载 使用 启动arthas 查看dashboard 通过thread命令来获取到arthas-demo进程的Main C ...

  10. Finder Error code -36 “访达” 错误代码-36

    导致这个问题的原因是你的iCloud (iCloud和iCloud Drive是不一样的) 快满了. 如果你想解决这个问题,有以下三个方法: 1.多买苹果iCloud.(是的,苹果现在太恶心了.但这是 ...