CAN2无法通信问题

news2024/11/29 4:06:32

文章目录

    • 一、CAN2通信要注意的问题
    • 二、CAN中断无法进入的问题

一、CAN2通信要注意的问题

在这里插入图片描述

从这张图片不难看出can1为主机,can2为从机。因此can2的启动前提是已经启动了can1.
can通讯can2是基于can1的
使用can2之前必须初始化can1
单独使用CAN2时一定要同时打开CAN1和CAN2的时钟,否则CAN2无法正常工作,因为CAN2是从CAN,CAN1是主CAN
因此举例如果使用FIFO0的话,将筛选器分配:
can1的筛选器组就从0开始 范围为0-14
CAN_FilterInitStructure.CAN_FilterNumber=0;
can2的筛选器组就从14开始 范围为14-27
CAN_FilterInitStructure.CAN_FilterNumber=14;
注意:can过滤器配置必须用16进制
如果还是不能用,就要检查CAN芯片的STB引脚是否使能了!!!,这个很重要!
当can正常工作时,STB引脚为低电平,当STB引脚为高电平的时候,CAN总线闲置

void can_filter(CAN_HandleTypeDef* hcan)
{
	CAN_FilterTypeDef		CAN_FilterConfigStructure;
	if (hcan == &hcan2)
	{
	    CAN_FilterConfigStructure.FilterBank = 14;//***********************!!
	}
	if (hcan == &hcan1)
	{
		CAN_FilterConfigStructure.FilterBank = 0;
	}
	CAN_FilterConfigStructure.FilterMode = CAN_FILTERMODE_IDMASK;
	CAN_FilterConfigStructure.FilterScale = CAN_FILTERSCALE_32BIT;
	CAN_FilterConfigStructure.FilterIdHigh = 0x0000;
	CAN_FilterConfigStructure.FilterIdLow = 0x0000;
	CAN_FilterConfigStructure.FilterMaskIdHigh = 0x0000;
	CAN_FilterConfigStructure.FilterMaskIdLow = 0x0000;

	CAN_FilterConfigStructure.FilterFIFOAssignment = CAN_RX_FIFO0;
	CAN_FilterConfigStructure.SlaveStartFilterBank = 14;
	CAN_FilterConfigStructure.FilterActivation = ENABLE;
    HAL_CAN_ConfigFilter(hcan, &CAN_FilterConfigStructure);      
}

  MX_CAN1_Init();//先初始化can1!!!!!
  MX_CAN2_Init();
 can_filter(hcan1);
 can_filter(hcan2);

二、CAN中断无法进入的问题

当邮箱一直被占用后,导致CAN通讯有问题,作为一种保护机制,应该重新进行初始化CAN
问题由来-最近一直在做16s智能电池的通信,可是无人机突然显示hub电压24v(此hub只支持2s-12s电池,无法显示16s电池电压),容易造成低电压返航,实际电压却依旧是64v
一直怀疑是crc校验的问题,最后用fdr进行数据记录,发现是不进电池中断,再往上查发现是整个CAN2中断都不进
所以查问题不要局限于自己的一面,有可能不是自己的问题,逐步扩大排查

  transmit_timeout = 0;
    while(!(((CANx->TSR)&CAN_TSR_TME0)&&((CANx->TSR)&CAN_TSR_TME1) &&((CANx->TSR)&CAN_TSR_TME2)))
    {
      transmit_timeout++;
      if(transmit_timeout == 65535)
      {    
        if(CANx == CAN1)
        {
          CAN_DeInit(CAN1);
          CAN_DeInit(CAN2);
          CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,6,CAN_Mode_Normal);
        }
        else
        {  
          CAN_DeInit(CAN2);
          CAN2_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,6,CAN_Mode_Normal);
        } 
      }
    }
  }

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

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

相关文章

数据采集代码示例

首先,你需要安装一个 Lua 的爬虫库,例如 Luanode 或者 Lush: lua local ltn12 require("ltn12") local http require("") local response http.request{ host "", port , path "/", …

MySQL 5.7停服你的数据库还没迁移怎么破?

10月底,MySQL5.7版本正式终止生命周期状态,即EOL(End of Life),也就是俗称的“停服”,意味着该版本的用户将不能再获得新的安全补丁、版本迭代升级、维护和支持服务,众多使用MySQL 5.7的各个行业…

linux gdb 调试 常见调试命令介绍+总结

1.调试前准备 -g gcc arcg.c -g -oO -o app //必须添加-g 2.调试 gdb gdb app 3.常见调试命令 set args 1 2 3 4 5 6 //设置参数 show args //查看参数 3.1执行程序 1.start2. run gdb app set args 1 2 3 4 5 start //执行一行 c //继续执行 q…

了解千兆光模块和万兆光模块的标准规范

千兆光模块和万兆光模块作为数据中心和网络领域的关键设备,光模块生产需要遵循一些标准规范,为光模块的设计、制造和应用提供统一的规则和指导,确保光模块在各种设备和网络环境中能够正常工作,并满足用户的需求和期望,…

双十一全光谱灯哪个牌子好?双十一必备护眼台灯推荐

护眼台灯近些年来很受欢迎,它采用专业的技术能够帮助调节环境光的变化。尤其是在光线变化复杂的情况下,能够通过智能调光来改善环境,可以减少许多学生党上班族的近视风险,成为了许多学生党打工人的必备照明工具之一。不过随着它的…

移除元素(双指针)

27. 移除元素 - 力扣(LeetCode) 题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改…

如何准备软考-软件设计师(上)

前言: 参加了2023年下半年的软考-软件设计师的考试,之所以参加这个考试,主要出于以下几个目的: 1.减税。虽然只有1500的额度,但是考虑到税率,其实也不少,而且也没有更好的省钱途径。 2.学习。…

Unit2_2:动态规划DP

文章目录 一、最长公共子序列分析填表伪代码过程时间复杂度 二、最长公共子串问题分析过程时间复杂度 最小编辑距离背景分析状态转移方程填表伪代码案例 一、最长公共子序列 子序列:指从原序列中选取出来的具有相对顺序的一组元素,而这些元素不一定是连…

内衣洗衣机和手洗哪个干净?家用小型洗衣机推荐

在最近的几年来,人们对生活和健康的追求越来越高,使得越来越多的内衣洗衣机也走进了我们日常生活的视线,许多研究显示,单纯只是手洗是不能彻底消除我们贴身衣物上的细菌,而机洗则可以有效地消除大部分的细菌&#xff0…

毫米波雷达技术在自动驾驶中的关键作用:安全、精准、无可替代

自动驾驶技术正以前所未有的速度不断演进,而其中的关键之一就是毫米波雷达技术。作为自动驾驶系统中的核心感知器件之一,毫米波雷达在保障车辆安全、实现精准定位和应对复杂环境中发挥着不可替代的作用。本文将深入探讨毫米波雷达技术在自动驾驶中的关键…

报错 documentation/kbuild: is a directory. stop(Windows 内置Linux子系统WSL编译Linux内核)

目录 背景 苦苦求索 解决方案 背景 Windows 10的内置子系统Linux 编译SDK,在clean 时出现的报错. 苦苦求索 网上很多说是文件名有空格, 这确实会导致这个问题. 所以要先排除目录,文件名没有空格的情况. 找到名字有空格的文件 find ./ -name "* *"若是没有输出…

Ubuntu安装步骤

点击文件 --> 新建虚拟机: 找到第一章下载的ubuntu镜像文件,然后下一步 自定义名称和位置,然后下一步 根据需要定内存,2G以上即可: 单个文件即可 点击完成 回车,然后等待安装 回车 回车 回车 按上下键找…

EF Core 数据库映射成实体类

首先在 NuGet 包管理器中安装三个包 Microsoft.EntityFrameworkCore.SqlServer 是一个用于与 SQL Server 数据库进行交互的实体框架核心包。这个包提供了方便的方法和工具,用于在 .NET Core 应用程序中操作 SQL Server 数据库。 Microsoft.EntityFrameworkCore.Too…

PTA_乙级_1008

首先&#xff0c;它翻转前部分&#xff08;0 到 N-M-1&#xff09;。 然后&#xff0c;它翻转后部分&#xff08;N-M 到 N-1&#xff09;。 最后&#xff0c;它整体翻转整个数组&#xff08;0 到 N-1&#xff09; #include<iostream> using namespace std;// 反转数组的…

ABAP 7.58更新概览

背景 ABAP 7.58对应的ABAP平台版本和S4HANA版本是2023&#xff0c;如果大家确定自己的系统版本&#xff0c;也可以通过SM51 release notes查看SAP Kernel参数值&#xff0c;与下图对应。 前言 ABAP 7.58更新了很多内容啊&#xff0c;对于CDS和ABAP restful programming mod…

基于SSM的广告管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

八个提升编程体验的VS Code插件

1.GitHub Copilot 安装链接&#xff1a;https://marketplace.visualstudio.com/items?itemNameGitHub.copilot GitHub Copilot 是开发人员的人工智能编码伴侣&#xff0c;可以实时提供代码建议。 这个扩展使编码变得轻而易举。这个扩展可以改善编码体验&#xff0c;提高生产…

在window10上安装Flink-1.18.0

一、Flink介绍 1、Flink是什么&#xff1a; Flink是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架。是一个大数据处理引擎的处理框架,是针对流进行的处理. 它是Apache 旗下的一个框架和分布式的处理引擎,用于对无界和有界的数据进行状态的计算。 …

没有数据,没有实验条件怎么发表SCI论文?欢迎参加孟德尔随机化方法培训班!!!...

孟德尔随机化是什么&#xff1f;怎么用孟德尔随机化方法撰写发表论文&#xff1f;郑老师团队开设的利用孟德尔随机化方法快速撰写SCI论文课程包含&#xff1a;孟德尔随机化方法的基本介绍、利用孟德尔随机化方法撰写论文的过程、讲课老师现身说法介绍从学习到论文发表路径、以及…

【Docker】iptables基本原理

在当今数字化时代&#xff0c;网络安全问题变得越来越重要。为了保护我们的网络免受恶意攻击和未经授权的访问&#xff0c;我们需要使用一些工具来加强网络的安全性。其中&#xff0c;iptables是一个强大而受欢迎的防火墙工具&#xff0c;它可以帮助我们控制网络流量并保护网络…