Loto实践干货(3) 测量CAN总线通讯数据
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总线通讯数据的更多相关文章
- Loto实践干货(8)loto示波器在LED台灯调光问题维修中的应用案例
Loto实践干货(8)loto示波器在LED台灯调光问题维修中的应用案例 一位客户最近觉得觉得他的LED台灯好闪, 于是拆了看看,里面的控制板是这样的: 干掉双色调光功能,只调亮度的话闪烁的状况能好转 ...
- Loto实践干货(8) 实测 保险丝 用示波器带电流探头
本文用LOTO示波器和5A的电流探头来实验两种常见类型的保险丝的保护曲线.一种是熔断型的,另一种是自恢复型的.我们通常需要在一些电路中对电流过大的情况做保护,比如防止用户把输出源短路,比如防止用户对电 ...
- LOTO实践【干货】电压比较器的快速应用
LOTO实践[干货]电压比较器的快速应用 话不多说先上图: 最近出差去客户那边做设备调试,现场如上图,其中我负责的技术部分包含了一个掉落物监测的功能.硬件上的原理比较简单,发射板上的红外发射头阵列,以 ...
- I2C总线通讯协议
I2C总线通讯协议 1. I2C总线简介 I2C是Inter-Integrated Circuit的简称,读作:I-squared-C.由飞利浦公司于1980年代提出,为了让主板.嵌入式系统或手机用以 ...
- 让Elasticsearch飞起来!——性能优化实践干货
原文:让Elasticsearch飞起来!--性能优化实践干货 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog ...
- .Net最佳实践3:使用性能计数器收集性能数据
本文值得阅读吗? 本文讨论我们如何使用性能计数器从应用程序收集数据.我们将先了解的基本知识,然后我们将看到一个简单的示例,我们将从中收集一些性能数据. 介绍: - 我的应用程序的性能是最好的,像火箭 ...
- 如何在Windows系统上用抓包软件Wireshark截获iPhone等网络通讯数据
http://www.jb51.net/os/windows/189090.html 今天给大家介绍一种如何在Windows操作系统上使用著名的抓包工具软件Wireshark来截获iPhone.iPa ...
- Spring Boot干货系列:(八)数据存储篇-SQL关系型数据库之JdbcTemplate的使用
Spring Boot干货系列:(八)数据存储篇-SQL关系型数据库之JdbcTemplate的使用 原创 2017-04-13 嘟嘟MD 嘟爷java超神学堂 前言 前面几章介绍了一些基础,但都是静 ...
- java实现测量到的工程数据
[12,127,85,66,27,34,15,344,156,344,29,47,-] 这是某设备测量到的工程数据. 因工程要求,需要找出最大的 5 个值. 一般的想法是对它排序,输出前 5 个.但当 ...
- WOT干货大放送:大数据架构发展趋势及探索实践分享
WOT大数据处理技术分会场,PingCAP CTO黄东旭.易观智库CTO郭炜.Mob开发者服务平台技术副总监林荣波.宜信技术研发中心高级架构师王东及商助科技(99Click)顾问总监郑泉五位讲师, ...
随机推荐
- RFID EPC Class1 Gen2电子标签笔记
RFID EPC Class1 Gen2 符合EPC Class1 Gen2(简称G2)协议V109版的电子标签(Tag)和读写器(Reader)应该具有下述的特性 标签存储器分区 Tag memor ...
- C++ 多线程的错误和如何避免(15)
尽量不使用无锁架构,除非绝对必要 复杂性中有一些东西吸引了每一位工程师.与常规同步机制(如互斥锁.条件变量.异步等)相比,无锁编程听起来非常性感.然而,与我交谈过的每一位经验丰富的 C++ 开发人员都 ...
- Java的SPI机制实践
Java SPI机制概述 先给出结论:"Java的SPI是一种服务发现机制,用于约定接口和动态发现实现类,体现了分层解耦的思想". Java的SPI机制常用于框架扩展或组件替换,最 ...
- Springboot集成Disruptor做内部消息队列
一.基本介绍 Disruptor的github主页:https://github.com/LMAX-Exchange/disruptor 1,什么是 Disruptor? (1)Disruptor 是 ...
- django学习第二天---django视图系统,基于类的视图写法,FBV和CBV加装饰器
django视图系统 request对象 常用属性和方法 print(request) #wsgirequest对象 print(request.path) #请求路径 /index/ print(r ...
- oracle不等于1怎么查?
空值null比较特殊,它不能通过=或者<>进行查询,只能用is null或者is not null进行查询,例如你的数据中有null值,那么用 字段名=1,字段名<>1,字段名 ...
- macOS通过ssh使用PEM登录
在win上面可以使用XSHELL来登录类似于亚马逊这样的安全服务器,在mac上面就可以使用系统自带的命令工具来连接 使用命令 ssh -i key.pem [server] 如下: ssh -i ke ...
- Centos系统下,各种服务重启
1.sudo systemctl start firewalld 2../redis-server /usr/local/bin/redis.conf 3.mongod -f /etc/mongod ...
- 万字长文学会对接 AI 模型:Semantic Kernel 和 Kernel Memory,工良出品,超简单的教程
万字长文学会对接 AI 模型:Semantic Kernel 和 Kernel Memory,工良出品,超简单的教程 目录 万字长文学会对接 AI 模型:Semantic Kernel 和 Kerne ...
- Advanced .Net Debugging 3:基本调试任务(上)
一.简介 这是我的<Advanced .Net Debugging>这个系列的第三篇文章.这个系列的每篇文章写的周期都要很长,因为每篇文章都是原书的一章内容(太长的就会分开写).再者说,原 ...