STM32笔记---CAN采样点设置和报错

STM32笔记---CAN采样点设置和报错

    • 采样点设置
      • 再同步补偿宽度(SJW)设置
    • 报错分析
      • CAN中断使能寄存器
      • CAN错误状态寄存器

采样点设置

以前配置CAN参数的BS1BS2参数时认为总线波特率符合要求就可以了,其实同一个波特率可能对应多组参数设置的情况,这时就要从采样点的角度来考虑了。
采样点计算: ( 1 + B S 1 ) / ( 1 + B S 1 + B S 2 ) (1+BS1) / (1 + BS1 + BS2) (1+BS1)/(1+BS1+BS2)
CiA推荐的采样点设置:当波特率 > 800K采样点75%,当波特率 > 500K采样点80%, 当波特率 <= 500K采样点87.5% 。

再同步补偿宽度(SJW)设置

再同步补偿宽度(SJW)的设置范围位1-4TQ,相当于CAN总线的采样点可以根据实际情况在1-4个TQ范围内进行调整,这个值大可以增大CAN波特率的容错范围。
可以参考参考手册中位时序部分的描述。
在这里插入图片描述
在这里插入图片描述

参考连接:https://zhuanlan.zhihu.com/p/38299092

参考文章:
http://www.zlgcan.com/cancaiyang/68/

报错分析

之前使用CAN总线一直没详细搞清楚,使能的错误中断都具体对应的是什么,使用的时候一下把所有的CAN错误中断都使能上,正好今天遇到的CAN总线的一些问题,详细看了下。
使能所有的CAN错误中断:

/* 使能CAN错误中断 */HAL_CAN_ActivateNotification(&hcan, CAN_IT_ERROR | CAN_IT_BUSOFF | CAN_IT_ERROR_PASSIVE | CAN_IT_ERROR_WARNING | CAN_IT_LAST_ERROR_CODE);

CAN中断使能寄存器

在这里插入图片描述
在这里插入图片描述
这里我们要搞清楚ERRIE和后面LCEIE,BOFIE,EPVIE,EWGIE几个中断使能的关系:ERRIE相当于错误使能的总开关,其它的错误中断使能相当于分开关,这里我们可以在HAL库的CAN中断处理的部分找到依据,ERRIE中断使能后出错时会将主状态寄存器(MSR)中的ERRI位置位,然后再依次判断有哪些分开关管理的错误中断触发了。

/* Error interrupts management *********************************************/if ((interrupts & CAN_IT_ERROR) != 0U){if ((msrflags & CAN_MSR_ERRI) != 0U){/* Check Error Warning Flag */if (((interrupts & CAN_IT_ERROR_WARNING) != 0U) &&((esrflags & CAN_ESR_EWGF) != 0U)){/* Set CAN error code to Error Warning */errorcode |= HAL_CAN_ERROR_EWG;/* No need for clear of Error Warning Flag as read-only */}/* Check Error Passive Flag */if (((interrupts & CAN_IT_ERROR_PASSIVE) != 0U) &&((esrflags & CAN_ESR_EPVF) != 0U)){/* Set CAN error code to Error Passive */errorcode |= HAL_CAN_ERROR_EPV;/* No need for clear of Error Passive Flag as read-only */}/* Check Bus-off Flag */if (((interrupts & CAN_IT_BUSOFF) != 0U) &&((esrflags & CAN_ESR_BOFF) != 0U)){/* Set CAN error code to Bus-Off */errorcode |= HAL_CAN_ERROR_BOF;/* No need for clear of Error Bus-Off as read-only */}/* Check Last Error Code Flag */if (((interrupts & CAN_IT_LAST_ERROR_CODE) != 0U) &&((esrflags & CAN_ESR_LEC) != 0U)){switch (esrflags & CAN_ESR_LEC){case (CAN_ESR_LEC_0):/* Set CAN error code to Stuff error */errorcode |= HAL_CAN_ERROR_STF;break;case (CAN_ESR_LEC_1):/* Set CAN error code to Form error */errorcode |= HAL_CAN_ERROR_FOR;break;case (CAN_ESR_LEC_1 | CAN_ESR_LEC_0):/* Set CAN error code to Acknowledgement error */errorcode |= HAL_CAN_ERROR_ACK;break;case (CAN_ESR_LEC_2):/* Set CAN error code to Bit recessive error */errorcode |= HAL_CAN_ERROR_BR;break;case (CAN_ESR_LEC_2 | CAN_ESR_LEC_0):/* Set CAN error code to Bit Dominant error */errorcode |= HAL_CAN_ERROR_BD;break;case (CAN_ESR_LEC_2 | CAN_ESR_LEC_1):/* Set CAN error code to CRC error */errorcode |= HAL_CAN_ERROR_CRC;break;default:break;}/* Clear Last error code Flag */CLEAR_BIT(hcan->Instance->ESR, CAN_ESR_LEC);}}/* Clear ERRI Flag */__HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_ERRI);}

CAN错误状态寄存器

在这里插入图片描述
在这里插入图片描述
这个位置就是发生CAN错误时,实际要重点关注的位置,这个位置描述了具体是什么错误状态,然后寻找对应的解决办法。

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

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

相关文章

开发公司 or 个人开发者?软件开发如何选择?

引言 随着科技的发展&#xff0c;软件开发已成为一个相对复杂的行业&#xff0c;需要专业的技能和经验来保证项目的成功。许多企业、组织和个人都纷纷加入到了软件开发的队伍中。在选择软件开发人员时&#xff0c;您可能会面临一个选择&#xff1a;是找个人开发人员还是找专业的…

访问者模式【行为模式C++】

1.概述 访问者模式是一种行为设计模式&#xff0c; 它能将算法与其所作用的对象隔离开来。 访问者模式主要解决的是数据与算法的耦合问题&#xff0c;尤其是在数据结构比较稳定&#xff0c;而算法多变的情况下。为了不污染数据本身&#xff0c;访问者会将多种算法独立归档&…

数据结构与算法——22.哈希算法

这篇文章我们来讲一下哈希表中较为关键的部分——哈希算法 目录 1.哈希算法的介绍 2.hash算法的使用 2.1 Object.hashCode 2.2 String.hashCode 3.关于哈希表及哈希算法的一些思考 1.哈希算法的介绍 问题&#xff1a;什么是哈希算法&#xff1f;哈希算法有哪些&#xff…

一个专注于前端视觉效果的集合应用,包含CSS动效、Canvas动画、Three.js3D、人工智能应用等上百个案例

一个专注于前端视觉效果的集合应用&#xff0c;包含CSS动效、Canvas动画、Three.js3D、人工智能应用等上百个案例 文章目录 一个专注于前端视觉效果的集合应用&#xff0c;包含CSS动效、Canvas动画、Three.js3D、人工智能应用等上百个案例一、视觉设计二、交互设计三、Canvas动…

软件杯 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步&#xff1a;将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

NLP的奥秘:用 Python 揭秘人类语言与人工智能的桥梁【6000 字长文含代码示例】

目录 NLP 的核心任务 NLP 的发展历史 NLP 的技术与方法 传统的 NLP 技术与方法 规则基础方法&#xff1a;语言学的智慧 统计学习方法&#xff1a;数据的力量 深度学习方法&#xff1a;人工智能的新浪潮 NLP 的应用领域 Python在 NLP 中的应用 1、NLTK (Natural Langu…

【第十四届蓝桥杯省赛题目】

选择题&#xff1a; 1.设只含根结点的二叉树高度为1&#xff0c;共有62个结点的完全二叉树的高度为&#xff1f; A.4 B.5 C.6 D.7 解析&#xff1a;高度为K的满二叉树 节点数为 2k-1 &#xff0c;如果K6 最多有63个节点 故答案为6 选C 2.C中&#xff0c;bool类型的变量占用字…

【AAAI2024】点云的自适应邻域提取

论文标题&#xff1a;Point Deformable Network with Enhanced Normal Embedding for Point Cloud Analysis 论文地址&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/28497 两个创新点&#xff1a;可变邻域法向量提取 一、由固定邻居变为可变的邻域 二、最小二…

PCL-PEG-DCL (ACUPA) 聚己内酯聚乙二醇PSMA 抑制剂

PCL-PEG-DCL (ACUPA) 聚己内酯聚乙二醇PSMA 抑制剂 【中文名称】 聚己内酯聚乙二醇PSMA抑制剂DCL 【英文名称】 PCL-PEG-DCL (ACUPA) 【品 牌】 碳水科技&#xff08;Tanshtech&#xff09; 【纯 度】 95%以上 【保 存】 -20 【规 格】 50mg,100mg,500mg,…

2.SG90舵机模块

当我们输出一段脉冲信号的时候就可以调节舵机的角度 我们可以从原理图可以看到舵机的脚在PA6 从芯片手册我们又可以看到PA6对应TIM3_CH1,并且不用开启部分重映像就能使用 新建Servo.c存放PWM初始化 配置PWM void Servo_TIM3_Init(u16 arr,u16 psc) {//开启TIM3的时钟RCC_APB1…

GIS入门,Java不使用任何第三方库实现射线穿越法计算某个点是否与多边形相交,比普通射线法提升了计算性能

前言 在上一章中《GIS入门,Java不使用任何第三方库实现判断一个经纬度点是否在多个经纬度点组成的多边形内,计算某个点是否与多边形相交》,我们使用了一个最简单的算法“射线法”来计算一个点到是否与多边形相交,但是对于多边形非常多的顶点时,计算就会力有不逮。 本章将…

嵌入式工程师如何利用周末提升自己?

提升自己一定要趁早&#xff0c;这是作为中年人的我&#xff0c;对年轻人的忠告。 以前年轻&#xff0c;觉得时间多&#xff0c;总是幻想着&#xff0c;很多人也大器晚成啊&#xff0c;晚点努力也不晚。 前阵子小米汽车火了&#xff0c;雷总说这是他最后一次重大创业&#xff0…

富 格 林:规避虚假暗箱制胜法宝

富 格 林认为&#xff0c;现货黄金是众多黄金产品中交易规则优势较为明显的存在&#xff0c;尤其是进来的行情走势十分强劲&#xff0c;这给予了投资者更充足的做单机会。不过&#xff0c;机会的增加不意味着就一定可以制胜。要知道规避虚假暗箱才是制胜最有效的法宝。富 格 林…

禅道登录/创建版本/编辑版本接口 【禅道版本 18.12/18.11】

登录获取token import requestsurl = "http://192.168.1.234:6060/api.php/v1/tokens" payload = {"account": "jenkins","password": "jenkins123" } headers = {}response = requests.request

轻松上手MYSQL:MYSQL初识(上)

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《MYSQL入门》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 轻松上手MYSQL&#xff1a;从零开始构建你的数据库世界 &#x1f680; &#x1f680;欢迎来到My…

多维时序 | Matlab实现TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测

多维时序 | Matlab实现TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测 目录 多维时序 | Matlab实现TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【Matlab实现TCN-LSTM时间卷积长短期记忆神经网络多变量…

轻松上手MYSQL:MYSQL初识(下)

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《MYSQL入门》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 轻松上手MYSQL&#xff1a;从零开始构建你的数据库世界 &#x1f680; &#x1f680;欢迎来到My…

稀疏数组思想

稀疏数组的处理方法是&#xff1a; 1)记录数组一共有几行几列&#xff0c;有多少个不同的值 2)思想&#xff1a;把具有不同值的元素的行列及值记录在一个小规模的数组中&#xff0c;从而缩小程序的规模 例如下面原数组对应稀疏数组&#xff1a;

uni-starter的微信登录拿不到登录者的昵称,头像,手机号问题记录

uni-starter的微信登录竟然拿不到登录者的昵称&#xff0c;头像&#xff0c;手机号 获取手机号的方法在另外一篇文章中&#xff0c;需要认证&#xff0c;需要有营业执照 uni.login({"provider": type,"onlyAuthorize": true,// #ifdef APP"univerif…

2024认证杯A题完整论文教学分享

大家好&#xff0c;从昨天肝到现在&#xff0c;终于完成了2024认证杯A题 保暖纤维的保暖能力的完整论文啦。 给大家看一下目录吧&#xff1a; 目录 摘 要&#xff1a; 10 一、问题重述 13 二&#xff0e;问题分析 14 2.1问题一 14 2.2问题二 14 2.3问题三 14 三、模型…