CAN 协议常见面试题总结

0.讲一下CAN通讯的过程

第一段:需要发送的通讯设备,先发送一个显性电平0,告诉其他通讯设备,需要开始通讯。

第二段:就是发送仲裁段,其中包括ID帧和数据帧类型,告诉其他通讯设备,需要和哪个通讯设备进行通讯,以及帧的类型,CAN通讯设备的优先级,就是由ID号决定的,往往ID号越小优先级别越高。为标准帧还是扩展帧,由仲裁段最后一位IDE位的电平决定的,IDE为显性则为标准帧,IDE为隐性则为扩展帧。

第三段,为控制段,共6位,四位储存数据段长度的信息,还有两位为保留位。

第四段:为数据段,固定长度为8个字节,先发送高位,后发送低位。

第五段,为CRC,为验证段;

第六段,为ACK为应答段,发送机发送两个隐形电平,接收机发送一个显性电平,告诉发送机,接收完成。

第七段,结束段,发送7个隐形电平

一CAN物理层

1.CAN使用差分信号进行数据传输,根据CAN_H和CAN_L上的电位差来判断总线电平。

2.总线电平分为显性电平(逻辑0)电位差5V和隐性电平(逻辑1)电位差0V

3.显性电平具有优先权。发送方通过使总线电平发生变化,将消息发送给接收方

4.高速CAN

 

二CAN协议层

0.标准帧和扩展帧区别是什么?标准帧的Id是多少比特?扩展帧的Id是多少比特

扩展帧与标准帧的区别在于扩展帧拥有更长字节的ID,以便能够扩展更多的CAN通讯设备。

标准帧的ID是11位比特长

扩展帧的ID是29位比特长

1.CAN总线以帧形式通信共包含5种帧

数据帧 遥控帧 错误帧 过载帧 间隔帧

数据帧:用于发送单元向接收单元传输数据的帧

遥控帧用于接收单元向具有相同ID的发送单元请求数据的帧

2.数据帧的组成

帧起始 仲裁帧 遥控帧 数据段 CRC段 ACK段 帧结束

3.CAN总线仲裁

多个单元同时发送 ,标准帧与扩展帧之间,标准帧的优先级会更高,扩展帧的优先级更低;相同帧类型中,报文ID值越小,优先级越高

4. CAN总线的的校验机制(CRC校验)?


Can总线的校验机制包括CRC校验和和ACK校验两个部分:

CRC校验和:CAN总线在发送数据帧时会对数据帧进行CRC校验和计算,并将计算结果追加到数据帧末尾。接收方在接收数据帧时会对数据帧进行CRC校验和计算,并将计算结果与数据帧中的CRC校验和进行比较,以判断数据帧是否发生了错误。如果计算结果与CRC校验和不一致,则认为数据帧发生了错误,接收方将丢弃该数据帧。

ACK校验:CAN总线在发送数据帧后,接收方需要向发送方发送一个ACK(应答)信号,告知发送方数据帧已经成功接收。如果发送方在规定的时间内未收到ACK信号,则认为该数据帧发送失败,发送方将重新发送该数据帧。


 

5 终端电阻是多大的?作用是什么

120Ω终端电阻 

在高速CAN通讯的过程中,可能会产生电感现象,对CAN通讯的高低电压产生影响,使得系统无法判别显性或者隐形电平,因此并联一个终端电阻,使得在阻抗高的时候电流可以从终端电阻流过,从而保证CAN通讯的正常运行。

6 CAN的通讯矩阵是哪两种?(制作DBC的时候字节的排列顺序?)


常用格式:

Intel格式(小端,数据低位在内存低位)

Lsb在低字节,msb在高字节,以起始位为原点,从左往右,自上而下填充

Motorola格式(大端,数据低位在内存高位)

Lsb在高字节,msb在低字节,以起始位为原点,从左往右,自上向下填充

7CAN FD 和CAN的 区别:


CAN-FD:一帧数据最长64字节。以理解成CAN协议的升级版,只升级了协议,物理层未改变。传输速率不同、数据长度不同、帧格式不同、ID长度不同。

1)速率不同:

CAN:最大传输速率1Mbps。
CAN-FD:速率可变,最大传输速率8Mbps。

2)数据长度不同

CAN:一帧数据最长8字节

CAN-FD:一帧数据最长64字节。

3)ID长度不同
CAN标准帧ID长度最长11bit。 CAN-FD标准帧ID长度可扩展到12bit。

4)帧格式不同

CAN-FD新增了FDF、BRS、ESI位,

FDF表示CAN报文还是CAN-FD报文。BRS:表示位速率转换,该位隐性时,速率可变,该位为显性时,以正常的CAN-FD总线速率传输(恒定速率)。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux Vim批量注释和自定义注释

使用 Vim 编辑 Shell 脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符"#"再退回命令模式,非常麻烦。连续行的注释其实可以用替换命令来完成。 换句话说,在指定…

每天一道算法题:17. 电话号码的字母组合

难度 中等 题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits “23” …

计算机提示找不到concrt140.dll怎么办,分享4个有效的修复方法

在计算机使用过程中,我们经常会遇到一些错误提示或者系统崩溃的情况。其中,concrt140.dll是一个常见的错误提示,这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题,我们需要采取一些修复措施。本文将介绍4个修复conc…

【Java 进阶篇】Java Session 原理及快速入门

大家好,欢迎来到本篇博客。今天,我们将探讨Java Web开发中一个重要而令人兴奋的概念,即Session(会话)。Session是一种在Web应用程序中跟踪用户状态和数据的机制。我们将深入了解Session的原理,并通过示例来…

Qt利用VCPKG和CMake和OpenCV和Tesseract实现中英文OCR

文章目录 1. 开发平台2. 下载文件2.1 下载安装 OpenCV 库2.2 下载安装 Tesseract-OCR库2.3 下载训练好的语言包 3. CMakeLists.txt 内容4. Main.cpp4.1 中英文混合OCR 5. 在Qt Creator 中设置 CMake vcpkg5.1 在初始化配置文件里修改5.2 在构建配置里修改 说明:在Q…

npm install:sill idealTree buildDeps

执行npm install,卡在 sill idealTree buildDeps PS D:\workspace-groovy\attendance-india-web> npm install -g cnpm --registryhttps://registry.npm.taobao.org [..................] / idealTree:node_global: sill idealTree buildDeps[.................…

Java代码如何对Excel文件进行zip压缩

1:新建 ZipUtils 工具类 package com.ly.cloud.datacollection.util;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import ja…

【EI会议征稿】第四届计算机网络安全与软件工程国际学术会议(CNSSE 2024)

第四届计算机网络安全与软件工程国际学术会议(CNSSE 2024) 2024 4th International Conference on Computer Network Security and Software Engineering 第四届计算机网络安全与软件工程国际学术会议(CNSSE 2024)将于2024年2月…

Adobe Photoshop Elements 2024 v24.0 简体中文版 | 中文直装版

下载: http://dt1.8tupian.net/2/29913a53b500.pg3介绍:Photoshop Elements 2024(简称PSE即PS简化版)是一款定位在数码摄影领域的全新的图像处理软件,该软件包括了专业版的大多数特性,只有少量的简化选项,提供了调整颜…

最新 vie-vite框架下 jtopo安装使用

官方地址 官方源码 安装下载 1.官方好像都没有给git地址,尝试npm安装报错 2.找到1.0.5之前的版本npm i jtopo2,安装成功后使用报错,应该是版本冲突了 1.本地引入, 点击官方源码下载,需要jtopo_npm文件 2.引入到本…

【机器学习3】有监督学习经典分类算法

1 支持向量机 在现实世界的机器学习领域, SVM涵盖了各个方面的知识, 也是面试题目中常见的基础模型。 SVM的分类结果仅依赖于支持向量,对于任意线性可分的两组点,它 们在SVM分类的超平面上的投影都是线性不可分的。 2逻辑回归 …

Python--- lstrip()--删除字符串两边的空白字符、rstrip()--删除字符串左边的空白字符、strip()--删除字符串右边的空白字符

strip() 方法主要作用:删除字符串两边的空白字符(如空格) lstrip() 方法 left strip,作用:只删除字符串左边的空白字符 rstrip() 方法,作用:只删除字符串右边的空白字符 strip 英 /strɪp…

k8s 目录和文件挂载到宿主机

k8s生产中常用的volumes挂载方式有:hostPath、pv,pvc、nfs 1.hostPath挂载 hostPath是将主机节点文件系统上的文件或目录挂载到Pod 中,同时pod中的目录或者文件也会实时存在宿主机上,如果pod删除,hostpath中的文…

android studio 编译Telegram源码经验总结(2023-11-05)

前言 Telegram是一款强大的端到端加密IM,专注于安全性和速度,支持Android/IOS/Windows/macOS等平台,功能丰富,运行流畅,免费开源,代码具有学习和研究意义。 一、android telegram源码下载地址: …

农林牧数据可视化监控平台 | 智慧农垦

数字农业是一种现代农业方式,它将信息作为农业生产的重要元素,并利用现代信息技术进行农业生产过程的实时可视化、数字化设计和信息化管理。能将信息技术与农业生产的各个环节有机融合,对于改造传统农业和改变农业生产方式具有重要意义。 图扑…

在HTML单页面中,使用Bootstrap框架的多选框如何提交数据

1.引入Bootstrap CSS和JavaScript文件&#xff1a;确保在HTML页面的标签内引入Bootstrap的CSS和JavaScript文件。可以使用CDN链接或者下载本地文件。 <link rel"stylesheet" href"https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css&q…

git命令行操作

git remote update origin --prune 更新本地的git分支保持和远程分支一致 git clone -b develop XXX 拉取某个分支的代码 1、创建一个空文件夹&#xff0c;在其中打开Git Bash Here&#xff0c;输入&#xff1a; git clone 刚刚复制的粘贴过来&#xff0c;回车 2、打开你拉下…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Maven核心概念

一.Maven的POM POM全称&#xff1a;Project Object Model【项目对象模型】&#xff0c;将项目封装为对象模型&#xff0c;便于使用Maven管理【构建】项目 pom.xml常用标签 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://m…

OAuth2.0双令牌

OAuth 2.0是一种基于令牌的身份验证和授权协议&#xff0c;它允许用户授权第三方应用程序访问他们的资源&#xff0c;而不必共享他们的凭据。 在OAuth 2.0中&#xff0c;通常会使用两种类型的令牌&#xff1a;访问令牌和刷新令牌。访问令牌是用于访问资源的令牌&#xff0c;可…

MySQL之表的约束

目录 表的约束1.空属性2.默认值3.列描述4.zerofill5.主键6.自增长7.唯一键8.外键 表的约束 真正约束字段的是数据类型&#xff0c;数据类型规定了数据的用法、范围…假如我们没有按照其规定的约束&#xff0c;那么数据将插入不成功但是数据类型约束很单一&#xff0c;需要有一…