杰发科技AC7840——CAN通信简介(7)_波形分析

 参考:

CAN总线协议_stm32_mustfeng-GitCode 开源社区

0. 简介

隐形和显性波形

整帧数据表示

1. 字节描述

CAN数据帧标准格式
域段域段名位宽:bit描述
帧起始SOF(Start Of Frame)1数据帧起始标志,固定为1bit显性('b0)
仲裁段dentify(ID)11本数据帧的ID信息,ID信息的作用:①如果同
时有多个节点发送数据时,作为优先级依据(仲
裁机制);②目标节点通过ID信息来接受数据
(验收滤波技术)
RTRRemote Transmission Requ
est BIT
1RTR标识是否是远程帧(0,数据帧;1,远程
帧),在数据帧里这一位为显性('b0
IDEdentifier Extension Bit1DE用于区分标准格式与扩展格式,在标准格式中
IDE位为显性(‘b0),在扩展格式里IDE位为隐
性('b1)
R0保留位11bit保留位,固定为1'b0
DLCdata length4由4位组成,MSB先行(高位先行),它的二进
制编码用于表示本报文中的数据段含有多少个字
节,DLC段表示的数字为0到8,若接收方接收到
9~15的时候并不认为是错误
数据段data0~64据帧的核心内容,它由0~8个字节(0~64位)组
成,MSB先行
CRC段CRC15段用于检查帧传输错误,发送方以一定的方法计
算包括:帧起始、仲裁段、控制段、数据段;接
收方以同样的算法计算CRC值并进行比较,如果
不同则会向发送端反馈出错信息,重新发送;计
算和出错处理一般由CAN控制器硬件完成或由软
件控制最大重发数。
CRC界定符1CRC界定符(用于分隔的位),为隐性位(1'b
1),主要作用是把CRC校验码与后面的ACK段
间隔起来
A C K 槽ACK slot1在ACK槽位中,发送端发送的为隐性位,而接收
端则在这一位中发送显性位以示应答;发送ACK/
返回ACK这个过程使用到回读机制,即发送方先
在ACK槽发送隐性位后,回读到的总线上的电平
为显性0,发送方才知道它发送成功了,不用重发
ACK界定符1在ACK槽和帧结束之间由ACK界定符间隔开,
为隐性位
帧结束EOF7由发送端发送7个隐性位表示结束

2. 波形测试

空闲波形

空闲状态下是隐性电平,如图所示2条线都是高电平,大概都在2.5V左右,符合空闲波形解释。

也就是在这个时候,CAN盒子能识别到CAN总线是正常的。

想起来之前跑不起来时候的波形是低电平,说明是硬件问题。

通信波形

在CAN收发器端的整体波形

在CAN收发器端,放大之后看到电压,CAN_H 3V左右,CAN_L 1.6V左右

3. 波形分析

在上位机发送数据MCU仅接收数据的情况下:

因为逻辑分析仪无法完全显示差分信号(两根都是高电平的信号),于是使用MCU端引脚来测量RX/TX信号。可以看到右边解析的CAN数据都是正确的。其中0信号线接的是PE4表示RX,1信号线接的PE5表示TX。

GPIO_DRV_SetMuxModeSel(PORTE, 4U, PORT_MUX_ALT5);           /* CAN0_RX */
GPIO_DRV_SetMuxModeSel(PORTE, 5U, PORT_MUX_ALT5);           /* CAN0_TX */
GPIO_DRV_SetMuxModeSel(PORTE, 10U, PORT_MUX_ALT5);          /* 配置收发器standby功能*/

第一个字节0,因为有连续5个0,在中间插了个1,导致第一帧有10个数据位。

其他数据位都正常,就不都发上来了

CRC15位,中间插了一个1,导致有16位

CRC界定符是1位,ACK+ACK界定符共2位

结束符7位

在SOF和CRC之间才需要填充,因此后面7位1不用加相反电平。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2990532.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ中的交换机类型

交换机类型 可以看到,在订阅模型中,多了一个exchange角色,而且过程略有变化: Publisher:生产者,不再发送消息到队列中,而是发给交换机 Exchange:交换机,一方面&#xff…

记录——FPGA的学习路线

文章目录 一、前言二、编程语言2.1 书籍2.2 刷题网站2.3 仿真工具 三、基础知识3.1 专业基础课3.2 fpga相关专业知识 四、开发工具五、动手实验 一、前言 也不是心血来潮想学习fpga了,而是祥哥还有我一个国科大的同学都在往fpga这个方向走 并且看过我之前文章的同…

事务并发控制之说透mvcc

前言 不知道有没有人有过这样的想法💡,为什么在MySQL中已经有了各种各样的锁了,还需要mvcc呢?如果你没有想过这个问题,那只能证明你真的没有想过。 但是我的建议是可以去想一下,如果你从来没有想过这个问…

【MyBatisPlus】一、公共字段填充配置

目录 一、实体类配置 二、配置MyBatis Plus元对象处理器 三、接口字段自动填充 在使用mybatisplus项目中设置公共字段填充,可以按如下进行配置 一、实体类配置 TableField(value "create_time",fill FieldFill.INSERT)private LocalDateTime createTime…

StarRocks x Paimon 构建极速实时湖仓分析架构实践

Paimon 介绍 Apache Paimon 是新一代的湖格式,可以使用 Flink 和 Spark 构建实时 Lakehouse 架构,以进行流式处理和批处理操作。Paimon 创新性地使用 LSM(日志结构合并树)结构,将实时流式更新引入 Lakehouse 架构中。 …

AM解调 FPGA(寻找复刻电赛电赛D题的)

设计平台 Quartus II10.3mif产生工具modelsimSE (仿真用) DDS(直接数字式频率合成器) 从前面的内容可知,我们需要产生一个载波,并且在仿真时,我们还需要一个较低频率的正弦波信号来充当我们的…

c++图论基础(1)

目录 无向图 无向图度 无向图性质 有向图 有向图度 有向图性质 图的分类: 稀疏图: 稠密图: 零图: 有向完全图: 无向完全图: 度序列: 图是由顶点集合(简称点集)和顶点间的边(简称边…

JSON六种值类型的写法

JSON(JavaScript Object Notation)是一种人类可读的文本数据格式。它源于JavaScript,标准开放,格式要求更为严格,独立于具体编程语言,常用于数据交换。 列举一段JSON数据,解释JSON六种值类型的…

嵌入式开发一:初识Stm32

目录 一、嵌入式简介 1.1 嵌入式概念 1.2 嵌入式系统的组成 1.3 嵌入式的分类 1.3.1 嵌入式系统的分类 1.3.2 嵌入式处理器的分类 二、单片机简介(MCU嵌入式微控制器) 2.1 单片机是什么 2.2 单片机的作用是什么 2.3 单片机的发展历程 2.4 单片机发展趋势 2.5 复杂指…

HP Pavilion Plus Laptop 16-ab0040TU原厂Win11系统

惠普HP星16-abxxxx笔记本电脑原装出厂Windows11系统镜像安装包下载,恢复出厂开箱状态预装OEM系统 适用型号: 16-ab0011TU、16-ab0040TU、16-ab0041TU、16-ab0042TU、16-ab0043TU 16-ab0044TX、16-ab0045TX、16-ab0046TX、16-ab0047TX 链接&#xff1a…

mac资源库的东西可以删除吗?提升Mac运行速度秘籍 Mac实用软件

很多小伙伴在使用mac电脑处理工作的时候,就会很疑惑,电脑的运行速度怎么越来越慢,就想着通过删除mac资源库的东西,那么mac资源库的东西可以删除吗?删除了会不会造成电脑故障呢? 首先,mac资源库…

Android使用ProtoBuf 适配 gradle7.5 gradle8.0

ProtoBuf 适配 Gradle7.5 gradle-wrapper.properties 配置 distributionUrlhttps\://services.gradle.org/distributions/gradle-7.5-bin.zipProject:build.gradle: plugins {id com.android.application version 7.4.2 apply falseid com.android.library versio…

Unreal Engine子类化系统UButton

UE系统Button点击事件无法传递参数,通过子类化系统Button添加自定义参数扩展实现Button点击事件参数传递点击C类文件夹,在右边的区域点击鼠标右键,在弹出的菜单中选择“新建C类”在弹出的菜单中选中“显示所有类”,选择Button作为…

Vscode上使用Clang,MSVC, MinGW, (Release, Debug)开发c++完全配置教程(包含常见错误),不断更新中.....

1.VSCode报错头文件找不到 clang(pp_file_not_found) 在Fallback Flags中添加 -I(是-include的意思,链接你的编译器对应头文件地址,比如我下面的是MSVC的地址) 问题得到解决~

uniapp-css多颜色渐变:左右+上下

案例展示 案例代码&#xff1a; 代码灵感&#xff1a;使用伪类进行处理 <view class"headBox"></view>.headBox {height: 200rpx;background: linear-gradient(to right, #D3D5F0, #F0DCF3, #F7F6FB, #DAE8F2, #E1D3EE);position: relative; }.headBox…

【论文速读】|理解基于大语言模型的模糊测试驱动程序生成

本次分享论文&#xff1a;Understanding Large Language Model Based Fuzz Driver Generation 基本信息 原文作者&#xff1a;Cen Zhang, Mingqiang Bai, Yaowen Zheng, Yeting Li, Xiaofei Xie, Yuekang Li, Wei Ma, Limin Sun, Yang Liu 作者单位&#xff1a;南洋理工大学…

13.电子产品拆解分析-插排带3USB

13.电子产品拆解分析-插排带3USB 一、功能介绍二、电路分析以及器件作用1、三个插座之间通过电线连接,总开关控制火线2、通过FSD3773低待机功耗原边反馈AC/DC驱动芯片控制5V的输出一、功能介绍 ①一键控制总电源开关;②带三路USB输出;③最大支持2500W输出,10A输出电流;④8…

排序算法-计数排序

一、计数排序 这种排序算法 是利用数组下标来确定元素的正确位置的。 如果数组中有20个随机整数&#xff0c;取值范围为0~10&#xff0c;要求用最快的速度把这20个整数从小到大进行排序。 很大的情况下&#xff0c;它的性能甚至快过那些时间复杂度为O(nlogn&#xff09;的排序。…

汽车底盘域的学习笔记

前言&#xff1a;底盘域分为传统车型底盘域和新能源车型底盘域&#xff08;新能源系统又可以分为纯电和混动车型&#xff0c;有时间可以再研究一下&#xff09; 1&#xff1a;传统车型底盘域 细分的话可以分为四个子系统 传动系统 行驶系统 转向系统 制动系统 1.1传动系…

Golang | Leetcode Golang题解之第52题N皇后II

题目&#xff1a; 题解&#xff1a; func totalNQueens(n int) (ans int) {columns : make([]bool, n) // 列上是否有皇后diagonals1 : make([]bool, 2*n-1) // 左上到右下是否有皇后diagonals2 : make([]bool, 2*n-1) // 右上到左下是否有皇后var backtrack func(int)…