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

2024-04-27 15:12

本文主要是介绍杰发科技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不用加相反电平。

这篇关于杰发科技AC7840——CAN通信简介(7)_波形分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940828

相关文章

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group