【CAN】STM32新能源汽车CAN通信实现过程

【CAN】STM32新能源汽车CAN通信实现过程


文章目录

  • 前言
  • 一、软件
    • 1.PA11、PA12口配置
    • 2.PB8、PB9口配置
  • 二、接线图
  • 三、硬件原理图
  • 四、上位机
  • 总结


前言

【电机控制】直流有刷电机、无刷电机汇总——持续更新
使用工具:
1.控制器——STM32F103C8T6
2.仿真器——STLINK
3.CAN模块——TAJ1050集成芯片
4.USB转CAN分析仪
5.瑞萨CAN入门书
6.上位机——CANLINtools


在这里插入图片描述

提示:以下是本篇文章正文内容,下面案例可供参考

STM32F103C8T6芯片两个CAN口,PB8PB9和PA11PA12在CAN初始化配置中有不同需注意

一、软件

1.PA11、PA12口配置

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);//ʹÄÜÍâÉèʱÖÓ
  RCC_APB1PeriphClockCmd( RCC_APB1Periph_CAN1 , ENABLE);
  /* ¸´Óù¦ÄܺÍGPIOB¶Ë¿ÚʱÖÓʹÄÜ*/	 
  //RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);	                        											 
 
  //GPIO_PinRemapConfig(GPIO_Remap1_CAN1, ENABLE);

  /* Configure CAN pin: RX */	 // PB8
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;	 // ÉÏÀ­ÊäÈë
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  /* Configure CAN pin: TX */   // PB9
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // ¸´ÓÃÍÆÍìÊä³ö
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);//ʹÄÜCAN1ʱÖÓ	

2.PB8、PB9口配置

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//ʹÄÜÍâÉèʱÖÓ
	
  /* ¸´Óù¦ÄܺÍGPIOB¶Ë¿ÚʱÖÓʹÄÜ*/	 
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);	                        											 
 
  GPIO_PinRemapConfig(GPIO_Remap1_CAN1, ENABLE);

  /* Configure CAN pin: RX */	 // PB8
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;	 // ÉÏÀ­ÊäÈë
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  
  /* Configure CAN pin: TX */   // PB9
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // ¸´ÓÃÍÆÍìÊä³ö
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);//ʹÄÜCAN1ʱÖÓ

二、接线图

在这里插入图片描述

三、硬件原理图

在这里插入图片描述

四、上位机

在这里插入图片描述

总结

本文仅仅简单介绍了【CAN】STM32新能源汽车CAN通信实现过程,评论区欢迎讨论。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 拼图游戏

拼图游戏(puzzle)是一种常见的益智游戏,玩家通过拖动图块来正确拼接成完整的图片。 由一张原图,分割成图块,拼图块的大小将会根据行列数自动调整,然后随机打乱,玩家通过拖拽图块,最后复原原图。 &#x1f…

小米财报:业绩远超预期,汽车推着手机跑!

随着一季度财报陆续出炉,企业间的分化越来越明显。 新环境下,很多公司都陷入停滞时,去讨论“掉队”已经没有多少意义,现在真正值得我们关注的,是那些在逆风情况下,还能“领先”的企业。毫无疑问&#xff0…

9.js函数

函数是js复杂数据类型的一种---可以理解为存放代码的盒子 用来帮助我们封装、复用、扩展以及调用代码的工具 函数的两个阶段 (1)声明函数(理解为创造) ——声明式声明 语法:function 函数名(参数){...代码} ——赋值时…

算法:二分查找题目练习

目录 题目一:二分查找 朴素的二分模版 题目二:在排序数组中查找元素的第⼀个和最后⼀个位置 查找区间左端点 查找区间右端点 查找区间左端点二分模版 查找区间右端点二分模版 题目三:搜索插⼊位置 题目四:x的平方根 题目…

unity开发Hololens,使用unity自带的UGUI

hololens 使用UGUI 新建画布,添加组件, 画布模式改成WorldSpace,这样在能在3D场景里 随意的移动位置, 添加NearIteractionTouchaBleUnityUI、CanvasUtility组件 EaventsToReceive改成Pointer, 这样,UGUI的…

Sass是什么?有哪些优缺点?

目录 一、Sass是什么? 二、Sass的优缺点 三、Sass与SaaS 一、Sass是什么? Sass是世界上最成熟、最稳定、最强大的专业级CSS扩展语言。 Sass makes CSS fun again. Sass is an extension of CSS, adding nested rules, variables, mixins, selector in…

基于hive的酒店价格数据可视化分析系统设计和实现

摘要 本文基于Django框架和Hive技术,设计和实现了一种酒店价格数据可视化分析系 统,旨在为酒店管理者提供直观、清晰的数据洞察和决策支持。在研究中,首先深入分 析了酒店价格数据可视化分析系统的背景和意义,认识到对于酒店行…

电商项目之有趣的支付签名算法

文章目录 1 问题背景2 思路3 代码实现 1 问题背景 在发起支付的时候,一般都需要对发送的请求参数进行加密或者签名,下文简称这个过程为“签名”。行业内比较普遍的签发算法有: (1)按支付渠道给定的字段排序进行拼接&am…

一篇文章讲透排序算法之希尔排序

希尔排序是对插入排序的优化,如果你不了解插入排序的话,可以先阅读这篇文章:插入排序 目录 1.插入排序的问题 2.希尔排序的思路 3.希尔排序的实现 4.希尔排序的优化 5.希尔排序的时间复杂度 1.插入排序的问题 如果用插入排序对一个逆序…

改进rust代码的35种具体方法-类型(十八)-不要惊慌

上一篇文章 它看起来非常复杂,这就是为什么它贴合的塑料盖上用大号友好字母印上“不要恐慌”的原因之一。——道格拉斯亚当斯 此项目的标题将更准确地描述为更喜欢返回Result而不是使用panic!(但不要惊慌更吸引人)。 Rust的panic机制主要是为…

Mycat+Mysql搭建数据集群实现数据分片存储

前言 MyCAT介绍 * 一个彻底开源的,面向企业应用开发的“大数据库集群”; * 支持事务、ACID、可以替代MySQL的加强版数据库; * 一个可以视为“MySQL”集群的企业级数据库,用来替代昂贵的Oracle集群; * 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL; * 一个新颖…

Linux_应用篇(08) 信号-基础

本章将讨论信号,虽然信号的基本概念比较简单,但是其所涉及到的细节内容比较多,所以本章篇幅也会相对比较长。 事实上,在很多应用程序当中,都会存在处理异步事件这种需求,而信号提供了一种处理异步事件的方法…

DNS的服务与部署(2)

1、dns的安装及开启 dnf install bind.x86_64 -y #安装 #Berkeley Internet Name Domain (BIND) systemctl enable --now named #启用dns服务,服务名称叫named firewall-cmd --permanent --add-servicedns #火墙设置 firewall-cmd --reload …

重学java 39.多线程 — 线程安全

逐渐成为一个情绪稳定且安静成长的人 ——24.5.24 线程安全 什么时候发生? 当多个线程访问同一个资源时,导致了数据有问题,出现并发问题,数据不能及时更新,导致数据发生错误,出现线程安全问题 多线程安全问…

【C++项目】实时聊天的在线匹配五子棋对战游戏

目录 项目介绍 开发环境 核心技术 项目前置知识点介绍 Websocketpp 1. WebSocket基本认识 2. WebSocket协议切换原理解析 3. WebSocket报文格式 4. Websocketpp介绍 5. 搭建一个简单WebSocket服务器 JsonCpp 1. Json格式的基本认识 2. JsonCpp介绍 3. 序列化与反序…

DatePicker日期选择框(antd-design组件库)简单使用

1.DatePicker日期选择框 输入或选择日期的控件。 2.何时使用 当用户需要输入一个日期,可以点击标准输入框,弹出日期面板进行选择。 组件代码来自: 日期选择框 DatePicker - Ant Design 3.本地验证前的准备 参考文章【react项目antd组件-demo:…

C#应用的用户配置窗体方案 - 开源研究系列文章

这次继续整理以前的代码。本着软件模块化的原理,这次笔者对软件中的用户配置窗体进行剥离出来,单独的放在一个Dll类库里进行操作,这样在其它应用程序里也能够快速的复用该类库,达到了快速开发软件的效果。 笔者其它模块化应用的例…

基于Python对评论进行情感分析可视化

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 在当今数字化时代,用户生成内容(UGC)如在线评论、社交媒体…

力扣HOT100 - 75. 颜色分类

解题思路&#xff1a; 单指针&#xff0c;对数组进行两次遍历。 class Solution {public void sortColors(int[] nums) {int p 0;int n nums.length;for (int i 0; i < n; i) {if (nums[i] 0) {int tmp nums[i];nums[i] nums[p];nums[p] tmp;p;}}for (int i p; i …

面试八股之JVM篇3.5——垃圾回收——G1垃圾回收器

&#x1f308;hello&#xff0c;你好鸭&#xff0c;我是Ethan&#xff0c;一名不断学习的码农&#xff0c;很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 &#x1f3c3;人生之义&#xff0c;在于追求&#xff0c;不在成败&#xff0c;勤通…