STM32F103C8T6,bxCAN收发配置实例,包含ID过滤

article/2025/6/16 5:53:45

请添加图片描述

文章目录

  • 引言
  • bxCAN简介
    • bxCAN主要特点
  • 代码示例


引言


bxCAN简介

bxCAN是基本扩展CAN(Basic Extended CAN)的缩写,它支持CAN协议2.0A和2.0B。它的设计目标是,以最小的CPU负荷来高效处理大量收到的报文。它也支持报文发送的优先级要求(优先级特性可软件配置)。

对于安全紧要的应用,bxCAN提供所有支持时间触发通信模式所需的硬件功能。


bxCAN主要特点

● 支持CAN协议2.0A和2.0B主动模式
● 波特率最高可达1兆位/秒
● 支持时间触发通信功能
发送
● 3个发送邮箱
● 发送报文的优先级特性可软件配置
● 记录发送SOF时刻的时间戳
接收
● 3级深度的2个接收FIFO
● 可变的过滤器组:

  • ─ 在互联型产品中,CAN1和CAN2分享28个过滤器组
  • ─ 其它STM32F103xx系列产品中有14个过滤器组

● 标识符列表
● FIFO溢出处理方式可配置
● 记录接收SOF时刻的时间戳
时间触发通信模式
● 禁止自动重传模式
● 16位自由运行定时器
● 可在最后2个数据字节发送时间戳
管理
● 中断可屏蔽
● 邮箱占用单独1块地址空间,便于提高软件效率
双CAN
● CAN1:是主bxCAN,它负责管理在从bxCAN和512字节的SRAM存储器之间的通信
● CAN2:是从bxCAN,它不能直接访问SRAM存储器
● 这2个bxCAN模块共享512字节的SRAM存储器
在这里插入图片描述


代码示例

/*** @brief       CAN初始化* @param       tsjw    : 重新同步跳跃时间单元.范围: 1~3;* @param       tbs2    : 时间段2的时间单元.范围: 1~8;* @param       tbs1    : 时间段1的时间单元.范围: 1~16;* @param       brp     : 波特率分频器.范围: 1~1024;*   @note      以上4个参数, 在函数内部会减1, 所以, 任何一个参数都不能等于0*              CAN挂在APB1上面, 其输入时钟频率为 Fpclk1 = PCLK1 = 36Mhz*              tq     = brp * tpclk1;*              波特率 = Fpclk1 / ((tbs1 + tbs2 + 1) * brp);*              我们设置 can_init(1, 6, 7, 6, 1), 则CAN波特率为:*              36M / ((6 + 7 + 1) * 6)  = 500Kbps*              45M / ((6 + 8 + 1) * 12) = 250Kbps*              45M / ((6 + 8 + 1) * 6)  = 500Kbps** @param       mode    : CAN_MODE_NORMAL,  普通模式;CAN_MODE_LOOPBACK,回环模式;* @retval      0,  初始化成功; 其他, 初始化失败;*/
//250K: 3, 6, 2, 16
//500K: 3, 6, 2, 8
uint8_t can_init(BaudRateType type, uint32_t mode)
{uint32_t tsjw, tbs2, tbs1;uint16_t brp;// uint16_t mask, num, tmp, i;if(type == Bd500K){tsjw = CAN_SJW_3TQ;tbs2 = CAN_BS2_2TQ;tbs1 = CAN_BS1_6TQ;brp  = 8;}else if(type == Bd250K){tsjw = CAN_SJW_3TQ;tbs2 = CAN_BS2_2TQ;tbs1 = CAN_BS1_6TQ;brp  = 16;}g_canx_handler.Instance = CAN1;g_canx_handler.Init.Prescaler = brp;                /* 分频系数(Fdiv)为brp+1 */g_canx_handler.Init.Mode = mode;                    /* 模式设置 */g_canx_handler.Init.SyncJumpWidth = tsjw;           /* 重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位 CAN_SJW_1TQ~CAN_SJW_4TQ */g_canx_handler.Init.TimeSeg1 = tbs1;                /* tbs1范围CAN_BS1_1TQ~CAN_BS1_16TQ */g_canx_handler.Init.TimeSeg2 = tbs2;                /* tbs2范围CAN_BS2_1TQ~CAN_BS2_8TQ */g_canx_handler.Init.TimeTriggeredMode = DISABLE;    /* 非时间触发通信模式 */g_canx_handler.Init.AutoBusOff = ENABLE;            /* 软件自动离线管理 */g_canx_handler.Init.AutoWakeUp = DISABLE;           /* 睡眠模式通过软件唤醒(清除CAN->MCR的SLEEP位) */g_canx_handler.Init.AutoRetransmission = ENABLE;    /* 禁止报文自动传送 */g_canx_handler.Init.ReceiveFifoLocked = DISABLE;    /* 报文不锁定,新的覆盖旧的 */g_canx_handler.Init.

http://www.hkcw.cn/article/AlMALnVpax.shtml

相关文章

使用 HTML + JavaScript 实现可拖拽的任务看板系统

本文将介绍如何使用 HTML、CSS 和 JavaScript 创建一个交互式任务看板系统。该系统支持拖拽任务、添加新任务以及动态创建列,适用于任务管理和团队协作场景。 效果演示 页面结构 HTML 部分主要包含三个默认的任务列(待办、进行中、已完成)和…

进程间通信II·命名管道

目录 原理 创建过程 特性 代码练习 客户端与服务端交互 小知识 原理 原理:两个进程各自的struct file 指向相同的inode和文件缓冲区(这里的inode和文件缓冲区也应用了引用计数)。 命名管道创建的是磁盘上的一种不刷新数据到缓冲区的常规…

Redis--缓存工具封装

经过前面的学习,发现缓存中的问题,无论是缓存穿透,缓存雪崩,还是缓存击穿,这些问题的解决方案业务代码逻辑都很复杂,我们也不应该每次都来重写这些逻辑,我们可以将其封装成工具。而在封装的时候…

ZC-OFDM雷达通信一体化减小PAPR——选择性映射法(SLM)

文章目录 前言一、SLM 技术1、简介2、原理 二、MATLAB 仿真1、核心代码2、仿真结果 三、资源自取 前言 在 OFDM 雷达通信一体化系统中,信号的传输由多个子载波协同完成,多个载波信号相互叠加形成最终的发射信号。此叠加过程可能导致信号峰值显著高于其均…

ESP32-idf学习(四)esp32C3驱动lcd

一、前言 屏幕是人机交互的重要媒介,而且现在我们产品升级的趋势越来越高大尚,不少产品都会用lcd来做界面,而esp32c3在一些项目上是可以替代主mcu,所以驱动lcd也是必须学会的啦 我新买的这块st7789,突然发现是带触摸…

Remote Sensing投稿记录(投稿邮箱写错、申请大修延期...)风雨波折投稿路

历时近一个半月,我中啦! RS是中科院二区,2023-2024影响因子4.2,五年影响因子4.9。 投稿前特意查了下预警,发现近五年都不在预警名单中,甚至最新中科院SCI分区(2025年3月)在各小类上…

ZC-OFDM雷达通信一体化减小PAPR——部分传输序列法(PTS)

文章目录 前言一、PTS 技术1、简介2、原理 二、MATLAB 仿真1、核心代码2、仿真结果 三、资源自取 前言 在 OFDM 雷达通信一体化系统中,信号的传输由多个子载波协同完成,多个载波信号相互叠加形成最终的发射信号。此叠加过程可能导致信号峰值显著高于其均…

第6章 放大电路的反馈

本章基本要求 会判:判断电路中有无反馈及反馈的性质 会算:估算深度负反馈条件下的放大倍数 会引:根据需求引入合适的反馈 会判振消振:判断电路是否能稳定工作,会消除自激振荡。 6.1 反馈的概念及判断 一、反馈的…

知识管理五强对比:Baklib高效突围

Baklib核心技术优势 Baklib的底层技术架构以知识中台为核心,深度融合自然语言处理(NLP)与分布式存储技术,实现多源异构数据的统一纳管。其智能分类引擎通过语义理解自动关联碎片化文档,结合动态标签体系与多维度权限控…

电机驱动器辐射骚扰整改

定位低压DC部分的骚扰源(排除法): 为确定是电源哪部分出现问题,可以采取如下步骤进行验证: a.将12V转5V的芯片去掉,仅剩12V器件工作,然后测试; b.将5V转3.3V和隔离5V的芯片去掉&am…

CTFHub-RCE 命令注入-过滤空格

观察源代码 代码里面可以发现过滤了空格 判断是Windows还是Linux 源代码中有 ping -c 4 说明是Linux 查看有哪些文件 127.0.0.1|ls 打开flag文件 我们尝试将空格转义打开这个文件 利用 ${IFS} 127.0.0.1|cat${IFS}flag_195671031713417.php 可是发现 文本内容显示不出来&…

2022年 中国商务年鉴(excel电子表格版)

2022年 中国商务年鉴(excel电子表格版).ziphttps://download.csdn.net/download/2401_84585615/89772883 https://download.csdn.net/download/2401_84585615/89772883 《中国商务年鉴2022》是由商务部国际贸易经济合作研究院主办的年度统计资料&#xf…

家长速查!3岁男童误吞“水精灵”危及生命

给孩子挑选放心的玩具是不少家长群讨论的热点。“小玩具”关乎“大安全”,如何帮助孩子远离“毒”“危”玩具?怎样合理选购、安全使用,让玩具成为孩子的益友?“六一”国际儿童节前夕,记者就此进行了走访。“毒”“危”玩具有何隐患?“本月我们又接诊了一名3岁男童误吞‘水…

划龙舟有多拼 鼓点一响全员开挂 岭南文化盛宴

广东龙舟不仅是一种仪式,更是一种文化符号。每一声鼓点都充满了热血与奋进,每一次冲刺都体现了拼搏与荣光。“下水!起桨!”有着20多年“龙舟龄”的东莞万江街道龙舟划手黄柱良,为了近日在东江江面举行的龙舟趁景活动,和伙伴们准备了1个多星期。活动当天上午,黄柱良和其他…

大巴黎如何拿到2025年欧冠的 战术转型与团队足球

2025年6月1日凌晨,2024-2025赛季欧冠决赛在慕尼黑安联球场举行,巴黎圣日耳曼以5-0大胜国际米兰,队史首次夺得欧冠奖杯。这场胜利不仅终结了巴黎多年来的“欧冠魔咒”,也标志着球队在姆巴佩离队后的战术转型取得巨大成功。比赛期间,大巴黎主帅恩里克延续了本赛季后半段的43…

thinkpad T-440p 2025.05.31

thinkpad T-440p 2025.05.31 老了退休了,说起来真的可恶现在笔记本的设计师,只有固态硬盘了

堆与堆排序及 Top-K 问题解析:从原理到实践

一、堆的本质与核心特性 堆是一种基于完全二叉树的数据结构,其核心特性为父节点与子节点的数值关系,分为大堆和小堆两类: 大堆:每个父节点的值均大于或等于其子节点的值,堆顶元素为最大值。如: 小堆:每个…

【题解-洛谷】P8094 [USACO22JAN] Cow Frisbee S

题目:P8094 [USACO22JAN] Cow Frisbee S 题目描述 Farmer John 的 N ( N ≤ 3 10 5 ) N\ (N\le 3\times 10^5) N (N≤3105) 头奶牛的高度为 1 , 2 , … , N 1, 2, \ldots, N 1,2,…,N。一天,奶牛以某个顺序排成一行玩飞盘;令 h 1 … h …

如何利用差分隐私技术在医疗领域守护患者隐私

在数字化医疗快速发展的当下,医疗数据已然成为一座蕴藏无限价值的宝库。一份完整的电子病历,不仅记录着患者的疾病诊断、治疗记录,还可能包含基因数据、生活习惯等敏感信息;而基因检测报告中携带的遗传密码,更是与个人…

Kanass入门教程- 事项管理

kanass是一款国产开源免费、简洁易用的项目管理工具,包含项目管理、项目集管理、事项管理、版本管理、迭代管理、计划管理等相关模块。工具功能完善,用户界面友好,操作流畅。本文主要介绍事项管理使用指南。 1、添加事项 事项有多种类型 分…