41_STM32CAN外设简介

news2024/11/22 9:56:21

目录

STM32的CAN外设简介

CAN控制内核

工作模式

位时序及波特率

CAN发送邮箱

CAN接收FIFO

验收筛选器

筛选器设置举例


STM32的CAN外设简介

STM32的芯片中具有bxCAN控制器(Basic Extended CAN),它支持CAN协议2.0A和2.0B标准。

该CAN控制器支持最高的通讯速率为1Mb/s;可以自动地接收和发送CAN报文,支持使用标准ID和扩展ID的报文;外设中具有3个发送邮箱,发送报文的优先级可以使用软件控制,还可以记录发送的时间;具有2个3级深度的接收FIFO,可使用过滤功能只接收或不接收某些ID号的报文;可配置成自动重发;不支持使用DMA进行数据收发。

STM32的有两组CAN控制器,其中CAN1是主设备,框图中的“存储访问控制器”是由CAN1控制的, CAN2无法直接访问存储区域,所以使用CAN2的时候必须使能CAN1外设的时钟。

CAN控制内核

框图中标号①处的CAN控制内核包含了各种控制寄存器及状态寄存器,我们主要讲解其中的主控制寄存器CAN_MCR及位时序寄存器CAN_BTR。

主控制寄存器CAN_MCR负责管理CAN的工作模式,它使用以下寄存器位实现控制。

DBF调试冻结功能

DBF(Debug freeze)调试冻结,使用它可设置CAN处于工作状态或禁止收发的状态,禁止收发时仍可访问接收FIFO中的数据。这两种状态是当STM32芯片处于程序调试模式时才使用的,平时使用并不影响。

TTCM时间触发模式

TTCM(Time triggered communication mode)时间触发模式,它用于配置CAN的时间触发通信模式,在此模式下, CAN使用它内部定时器产生时间截,并把它保存在CAN_RDTxR、CAN_TDTxR寄存器中。内部定时器在每个CAN位时间累加,在接收和发送的帧起始位被采样,并生成时间戮。利用它可以实现ISO 11898-4 CAN标准的分时同步通信功能。

ABOM自动离线管理

ABOM自动离线管理,它用于设置是否使用自动离线管理功能。当节点检测到它发送错误或接收错误超过一定值时,会自动进入离线状态,在离线状态中,CAN不能接收或发送报文。处于离线状态的时候,可以软件控制恢复或者直接使用这个自动离线管理功能,它会在适当的时候自动恢复。

AWUM自动唤醒

AWUM,自动唤醒功能, CAN外设可以使用软件进入低功耗的睡眠模式,如果使能了这个自动唤醒功能,当CAN检测到总线活动的时候,会自动唤醒。

NART自动重传

NART报文自动重传功能,设置这个功能后,当报文发送失败时会自动重传至成功为止。若不使用这个功能,无论发送结果如何,消息只发送一次。

RFLM锁定模式

RFLMFIFO锁定模式,该功能用于锁定接收FIFO。锁定后,当接收FIFO溢出时,会丢弃下一个接收的报文。若不锁定,则下一个接收到的报文会覆盖原报文。

TXFP报文发送优先级的判定方法

TXFP报文发送优先级的判定方法,当CAN外设的发送邮箱中有多个待发送报文时,本功能可以控制它是根据报文的ID优先级还是报文存进邮箱的顺序来发送。

工作模式

为方便调试, STM32的CAN提供了测试模式,配置位时序寄存器CAN_BTR的SILM及LBKM寄存器位可以控制使用正常模式、静默模式、回环模式及静默回环模式

 

 

正常模式

正常模式下就是一个正常的CAN节点,可以向总线发送数据和接收数据。

静默模式

静默模式下,它自己的输出端的逻辑0数据会直接传输到它自己的输入端,逻辑1可以被发送到总线,所以它不能向总线发送显性位(逻辑0),只能发送隐性位(逻辑1)。输入端可以从总线接收内容。由于它只可发送的隐性位不会强制影响总线的状态,所以把它称为静默模式。这种模式一般用于监测,它可以用于分析总线上的流量,但又不会因为发送显性位而影响总线。

回环模式

回环模式下,它自己的输出端的所有内容都直接传输到自己的输入端,输出端的内容同时也会被传输到总线上,即也可使用总线监测它的发送内容。输入端只接收自己发送端的内容,不接收来自总线上的内容。使用回环模式可以进行自检。

回环静默模式

回环静默模式是以上两种模式的结合,自己的输出端的所有内容都直接传输到自己的输入端,并且不会向总线发送显性位影响总线,不能通过总线监测它的发送内容。输入端只接收自己发送端的内容,不接收来自总线上的内容。这种方式可以在“热自检”时使用,即自我检查的时候,不会干扰总线。

位时序及波特率

STM32外设定义的位时序与前面解释的CAN标准时序有一点区别:

STM32的CAN外设位时序中只包含3段,分别是同步段SYNC_SEG、位段BS1及位段BS2,采样点位于BS1及BS2段的交界处。其中SYNC_SEG段固定长度为1Tq,而BS1及BS2段可以在位时序寄存器CAN_BTR设置它们的时间长度,它们可以在重新同步期间增长或缩短,该长度SJW也可在位时序寄存器中配置。理解STM32的CAN外设的位时序时,可以把它的BS1段理解为是由CAN标准协议中PTS段与PBS1段合在一起的,而BS2段就相当于PBS2段。

通过配置位时序寄存器CAN_BTR的TS1[3:0]及TS2[2:0]寄存器位设定BS1及BS2段的长度后,就可以确定每个CAN数据位的时间:

BS1段时间:

 BS2段时间:

 一个bit数据位的时间:

其中单个时间片的长度Tq与CAN外设的所挂载的时钟总线及分频器配置有关,CAN1和CAN2外设都是挂载在APB1总线上的,而位时序寄存器CAN_BTR中的BRP[9:0]寄存器位可以设置CAN外设时钟的分频值,所以:

其中的PCLK指APB1时钟,默认值为36MHz。

最终可以计算出CAN通讯的波特率:

一种把波特率配置为1Mbps的方式:

CAN发送邮箱

CAN外设一共有3个发送邮箱,即最多可以缓存3个待发送的报文。每个发送邮箱中包含有标识符寄存器CAN,TIxR、数据长度控制寄存器CAN_TDTxR及2个数据寄存器CAN_TDLxR、CAN_TDHxR,它们的功能如下:

当要使用CAN外设发送报文时,把报文的各个段分解,按位置写入到这些寄存器中,并对标识符寄存器CAN(TIxR中)的发送请求寄存器位TMIDxR TXRQ置1,即可把数据发送出去。其中标识符寄存器CAN_TIxR中的STDID寄存器位比较特别。CAN的标准标识符的总位数为11位,而扩展标识符的总位数为29位的。当报文使用扩展标识符的时候,标识符寄存器CAN_TIxR中的STDID[10:0]等效于EXTID[18:28]位,它与EXTID[17:0]共同组成完整的29位扩展标识符。

CAN接收FIFO

CAN外设一共有2个接收FIFO,每个FIFO中有3个邮箱,即最多可以缓存6个接收到的报文。当接收到报文时,FIFO的报文计数器会自增,而STM32内部读取FIFO数据之后,报文计数器会自减,通过状态寄存器可获知报文计数器的值,而通过前面主控制寄存器的RFLM位,可设置锁定模式,锁定模式下FIFO溢出时会丢弃新报文,非锁定模式下FIFO溢出时新报文会覆盖旧报文。跟发送邮箱类似,每个接收FIFO中包含有标识符寄存器CAN_RIxR、数据长度控制寄存器CAN_RDTxR及2个数据寄存器CAN_RDLxR、CAN_RDHxR,其功能如下:

验收筛选器

CAN外设的验收筛选器,一共有28个筛选器组,每个筛选器组有2个寄存器, CAN1和CAN2共用的筛选器的。在CAN协议中,消息的标识符与节点地址无关,但与消息内容有关。因此,发送节点将报文广播给所有接收器时,接收节点会根据报文标识符的值来确定软件是否需要该消息,为了简化软件的工作, STM32的CAN外设接收报文前会先使用验收筛选器检查,只接收需要的报文到FIFO中。

筛选器工作的时候,可以调整筛选ID的长度及过滤模式。

        根据筛选ID长度来分类有有以下两种:

        检查STDID[10:0]、 EXTID[17:0]、 IDE和RTR位,一共31位。

        检查STDID[10:0]、 RTR、 IDE 和EXTID[17:15],一共16位。

        而根据过滤的方法分为以下两种模式:

        标识符列表模式,它把要接收报文的ID列成一个表,要求报文ID与列表中的某一个标识符完全相同才可以接收,可以理解为白名单管理。

        掩码模式,它把可接收报文ID的某几位作为列表,这几位被称为掩码,可以把它理解成关键字搜索,只要掩码(关键字)相同,就符合要求,报文就会被保存到接收FIFO。

通过配置筛选尺度寄存器CAN_FS1R的FSCx位可以设置筛选器工作在哪个尺度。

通过配置筛选模式寄存器CAN FM1R的FBMx位可以设置筛选器工作在哪个模式。

每组筛选器包含2个32位的寄存器,分别为CAN_FxR1和CAN_FxR2,它们用来存储要筛选的ID或掩码,各个寄存器位代表的意义与图中两个寄存器下面“映射”的一栏一致,各个模式的说明如下: 

 

筛选器设置举例

如在掩码模式时,第一个寄存器存储要筛选的ID,第二个寄存器存储掩码,掩码为1的部分表示该位必须与ID中的内容一致,筛选的结果为表中第三行的ID值,它是一组包含多个的ID值,其中x表示该位可以为1可以为0。

如工作在标识符模式时,2个寄存器存储的都是要筛选的ID,它只包含2个要筛选的ID值(32位模式时)。

如果使能了筛选器,且报文的ID与所有筛选器的配置都不匹配,CAN外设会丢弃该报文,不存入接收FIFO

CAN2外设的结构与CAN1外设是一样的,它们共用筛选器,且由于存储访问控制器由CAN1控制,所以要使用CAN2的时候必须要使能CAN1的时钟。

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

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

相关文章

汉字风格迁移篇--KAGAN:一种中国诗歌风格转换的方法

🚀针对问题: 以往的方法都是针对单字图像,容易忽略了中文句子或一张图像中包含的多个字符。 🚀提出的方法: Constancy Loss, Smooth L1 loss;TV loss ,key-attention mechanism GAN;多通道鉴别器 🚀使用的指标 L1 Loss ,SSIM, PSNR, LPIPS 已有工作 字符风…

LiveGBS国标流媒体平台-海康NVR摄像机自带物联网卡摄像头注册GB/T28181国标平台看不到设备的时候如何抓包及排查

GB/T28181国标流媒体平台海康大华宇视华为等硬件NVR摄像机注册到LiveGBS国标平台看不到设备的时候如何抓包及排查1、设备注册后查看不到1.1、是否是自带物联网卡的摄像头1.2、关闭萤石云1.3、防火墙排查1.4、端口排查1.5、IP地址排查1.6、设备TCP/IP配置排查1.7、设备多网卡排查…

java计算机毕业设计基于安卓Android的学生作业管理系统APP

项目介绍 网络的广泛应用给生活带来了十分的便利。所以把学生作业管理与现在网络相结合,利用java技术建设学生作业管理APP,实现学生作业管理的信息化。则对于进一步提高学生作业管理发展,丰富学生作业管理经验能起到不少的促进作用。 学生作业管理APP能够通过互联网得到广泛的、…

国内船载B级(CSTDMA)AIS设备使用问题简析

2019-06-30 01:45王晏海朱小平 航海订阅 2019年3期 收藏 王晏海 朱小平 国内船载B级(CSTDMA)AIS设备使用问题简析_参考网 摘 要:国内船载B级AIS大多采用载波侦听时分多址(CSTDMA)技术,目前仍存在部分船…

已解决raise JSONDecodeError(“Expecting value”, s, err.value) from None

已解决raise JSONDecodeError(“Expecting value”, s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 文章目录报错代码报错翻译报错原因解决方法帮忙解决报错代码 粉丝群一个小伙伴想用Python读取json报错,但是…

分布式基础篇1——环境搭建

一、项目简介1、电商模式2、项目前置知识3、项目技术&特色4、项目架构图5、微服务划分图二、分布式基础概念1、微服务2、集群&分布式&节点3、远程调用4、负载均衡5、服务注册/发现&注册中心6、配置中心7、服务熔断和服务降级8、API网关三、环境搭建1、使用 Vag…

PGL 系列(三)词向量 Skip-gram

环境 python 3.6.8paddlepaddle-gpu 2.3.0numpy 1.19.5一、Skip-gram概念 Skip-gram:根据中心词推理上下文 在Skip-gram中,先在句子中选定一个中心词,并把其他词作为这个中心词的上下文。如 上图 Skip-gram所示,把“spiked”作为中心词,把“Pineapples、are、and、yellow”…

万亿数字化市场,数据科学为何能扛起“价值担当”?

数据科学家,被誉是“21世纪最性感的职业”。 如今,一股数据科学的热潮正席卷国内各大高校。今年十月底,一系列数据科学的网络直播课在多所大学火爆异常,吸引来自北大、清华、北师大、哈工大、浙大等多所高校学生广泛参与。 该系…

低碳正在成为春城的新名片

导读:分布式光伏,昆明树立了新标杆。 提到昆明,很多人的第一印象是“春城”。“天气常如二三月,花枝不断四时春”,从古至今,人们毫不吝啬对这座宜居城市的赞誉。在绿色能源时代,昆明也有得天独厚…

进程间通信--共享内存篇

文章目录共享内存的概念共享内存使用须知创建共享内存共享内存的映射与链接共享内存的映射取消共享内存的删除共享内存实现进程通信总结共享内存的概念 共享内存字面理解就是进程间共同享有的存储空间,不同于管道通信,共享内存就像是进程自己的空间一样…

磷脂PEG化靶向蛋白肽系列 DSPE-PEG- RGR(CRGRRST)/ TH/ R8/ NGR 为华生物提供

品牌:为华生物 产地:广州 中文名称:磷脂-聚乙二醇-肿瘤靶向蛋白 肿瘤靶向蛋白-聚乙二醇-磷脂 英文名称: DSPE-PEG- RGR(CRGRRST) PEG分子量400、600、1k、2k、3.4k、5k、10k其他分子量可定制 分子量:根据客户需求定制…

002.爬楼梯

1.题目链接: 70. 爬楼梯 2.解题思路: 2.1.题目要求: 给个阶数 n,要求返回爬完 n 阶有几种方法。 一次可以爬 1 步 或者 2 步。 示例 1 输入:n 1 输出:1 解释:有一种方法可以爬到楼顶。 1.…

springBoot集成webSocket并使用postMan进行测试

简单描述 简单来讲,webSocket是一种在http协议基础上的另一种新协议,叫ws协议。 http协议是单工通信,客户端发起请求,服务端收到请求并处理,返回给客户端,然后客户端收到服务端的请求。 ws协议是全双工通…

代码随想录训练营第51天|LeetCode 309.最佳买卖股票时机含冷冻期、 714.买卖股票的最佳时机含手续费

参考 代码随想录 题目一:LeetCode 309.最佳买卖股票时机含冷冻期 如果没有冷冻期,就可以只定义两个状态,加入冷冻期后定义下面的四个状态: 状态一( j 0):买入状态,不一定当天买…

设计模式-java

设计模式: 纸上得来终觉浅,绝知此事要躬行 设计原则 1) 单一职责原则 com.zh.designpatterns.design_principles.demo01_single_principle 概念:对类来说的,即一个类应该只负责一项职责。如类A负责两个不同职责:职责1&#x…

[AAAI 2022]多角度意图分解图网络的捆绑推荐

Multi-View Intent Disentangle Graph Networks for Bundle Recommendation捆绑推荐是什么?Bundle recommendation offers promotions of bundled items instead of a single one, which is a common strategy for sales revenue increase and latent customer mini…

谈谈对IO多路复用的select机制的理解

一、技术背景 如果要彻底明白select机制,还是要首先去了解IO,网络编程、Blocking IO、No Blocking IO的相关概念及底层实现。下面只是作为技术背景去介绍这几个概念。 1、理解IO本质 IO从英文本身去解释就是输入输出(Input/Output),这里不…

web前端期末大作业:基于HTML+CSS+JavaScript实现网上鲜花店网站设计(14页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

手机进销存网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 功能模块包括:员工模块、手机类型模块、供应商模块、采购模块、客户模块、销售模块、统计模块、库存模块 (1…

Springboot内置的工具类之FileCopyUtils

前言 Spring内置的工具类里,最喜欢用的就是文件读写这一部分,虽然原生的写法也没几句,但是就是懒,不想循环、判断什么的,直接调用现成的静态方法,多高效,哈哈,这就是懒人必备。 Res…