stm32内部的CAN总线

功能概述:

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

CAN2.0B内核:

  bxCAN模块可以完全自动地接收和发送CAN报文,且完全支持标准标识符(11位)和扩展标识符(29位)。

主要特征:

  支持CAN协议2.0A和2.0B主动模式;

  波特率最高可达1兆位/秒;(属于OSI11898标准)

  支持时间触发通信功能;(可以通过时间戳来进行数据同步)

发送
  3个发送邮箱;(邮箱:包含,数据、地址、ID等)

    共有3个发送邮箱供软件来发送报文。发送调度器根据优先级决定哪个邮箱的报文先被发送;
   发送报文的优先级特性可软件配置
   记录发送SOF时刻的时间戳
接收
  3级深度的2个接收FIFO;

    共有2个接收FIFO,每个FIFO都可以存放3个完整的报文。它们完全有硬件来管理;

  14个位宽可变的过滤器组-由整个CAN共享;(没通过过滤器的报文就直接丢弃掉)

    共有14个位宽可变/可配置的标识符过滤器组,软件通过对其设置,从而在引脚收到的报文中选择它的需要的报文,而把其他报文丢弃。

  标识符列表;
  FIFO溢出处理方式可配置;
  记录接收SOF时刻的时间戳;

可支持时间触发通信模式
  禁止自动重传模式
  16位自由运行定时器;(定时器的作用:提供时间戳)
  定时器分辨率可配置
  可在最后2个数据字节发送时间戳
管理
  中断可屏蔽
  邮箱占用单独1块地址空间,便于提高软件效率

相关寄存器:

  控制、状态和配置寄存器

  应用程序通过这些寄存器,可以:

    配置CAN参数,比如速度相关的波特率(所谓波特率就是发送一个位数据所花费的时间)

    请求发送报文

    处理报文接收

    管理中断

    获取诊断信息

CAN总线框架: 

bxCAN工作模式:

  bxCAN有3个主要的工作模式:初始化、正常和睡眠模式;

    还包括:测试模式、静默模式、环回模式、环回静默模式

  初始化模式:主要是进行配置,配置完就进入正常模式。然后进入睡眠模式(低功耗模式)

 报文发送过程:

  

报文接收过程: 

  接收到的报文,被存储在3级邮箱深度的FIFO中。FIFO完全由硬件来管理,从而节省了CPU的处理负荷,简化了软件并保证了数据的一致性。应用程序只能通过读取FIFO输出邮箱,来读取FIFO中最先收到的报文;

  有效报文
  根据CAN协议,当报文被正确接收(直到EOF域的最后1位都没有错误),且通过了标识符
  过滤,那么该报文被认为是有效报文。请参考14.5.4:标识符过滤。 

  接收相关的中断
  一旦往FIFO存入1个报文,硬件就会更新FMP[1:0]位,并且如果CAN_IER寄存器的FMPIE位
  为1,那么就会产生一个中断请求。
  当FIFO变满时(即第3个报文被存入),CAN_RFxR寄存器的FULL位就被置1,并且如果
  CAN_IER寄存器的FFIE位为1,那么就会产生一个满中断请求。
  在溢出的情况下,FOVR位被置1,并且如果CAN_IER寄存器的FOVIE位为1,那么就会产生
  一个溢出中断请求。

 

 

时间: 2024-10-27 22:10:19

stm32内部的CAN总线的相关文章

cpu工作原理简析

在了解CPU工作原理之前,我们先简单谈谈CPU是如何生产出来的.CPU是在特别纯净的硅材料上制造的.一个CPU芯片包含上百万个精巧的晶体管.人们在一块指甲盖大小的硅片上,用化学的方法蚀刻或光刻出晶体管.因此,从这个意义上说,CPU正是由晶体管组合而成的.简单而言,晶体管就是微型电子开关,它们是构建CPU的基石,你可以把一个晶体管当作一个电灯开关,它们有个操作位,分别代表两种状态:ON(开)和OFF(关).这一开一关就相当于晶体管的连通与断开,而这两种状态正好与二进制中的基础状态"0"和

与WebSphere MQ断开连接时测试WebSphere JMS应用程序

这一配置能够让您在开发生命周期的早期识别和http://www.aliyun.com/zixun/aggregation/7432.html">解决问题,而无需安装本地队列管理器或等待访问远程队列管理器. 在测试专为 WebSphere Application Server 开发的 JMS 应用程序时,开发团队可能并不总是能够访问 WebSphere MQ 环境.因此,在将应用程序代码部署到一个集成环境中之前,您可能无法识别缺陷并排除故障.本文将向您展示如何配置本地 WebSphere 测

《嵌入式C编程:PIC单片机和C编程技术与应用》一导读

前 言 Embedded C Programming: Techniques and Applications of C and PIC MCUS 微控制器是将微型计算机的主要部分集成到一个芯片上的单芯片微型计算机.上电后,它会运行内部程序存储器上的程序.内部程序存储器可以使用只读存储器(ROM)或者Flash.我们在各种地方都会发现微型计算机的踪影,如家用电器.玩具.汽车和计算机外设(如键盘或鼠标).从电池充电器到雷达系统,几乎所有的电子设备中都有微型计算机的身影. PIC微控制器的速度很快,

三星3D V-NAND 32层对48层 仅仅是垂直层面的扩展?

三星公司已经开始量产其48层(即单NAND内48层单元,属于第三代升级技术)3D V-NAND芯片,预计其将被用于SSD T3(mSATA接口加850 EVO V2).NVMe SSD(PM971-NVMe)以及企业级SSD(PM1633a)等SSD产品.在各设备当中,将包含大量48层3D V-NAND存储芯片且通过引线键合技术实现彼此堆叠.三星公司在48层3D V-NAND芯片中集成了512 GB存储单元,意味着每个NAND晶片为32 GB容量(256 Gb).三星的32层(第二代方案)3D

《Arduino开发实战指南:LabVIEW卷》——1.1 什么是Arduino

1.1 什么是Arduino 1.1.1 Arduino与单片机 在了解Arduino之前,我们有必要先来了解一下单片机.那么,什么是单片机呢?单片机是指一个集成在一块芯片上的完整计算机系统.尽管它的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU.内存.内部和外部总线系统,目前大部分单片机还会具有外存.同时集成诸如通信接口.定时器.实时时钟等外围设备.而现在最强大的单片机系统甚至可以将声音.图像.网络.复杂的输入/输出系统集成在一块芯片上. Arduino是单片

CentOS redis集群部署 开启防火墙无法访问集群

问题描述 CentOS redis集群部署 开启防火墙无法访问集群 CentOS redis集群部署 开启防火墙无法访问集群 我现在是单机部署的一个伪集群,通过命令 redis-trib.rb check ip:端口 可以正常检测集群状态, 一旦我将iptables 防火墙 启动,就无法检测了~~这是为啥啊~ 还有一个问题 我用tomcat集群+redis 做session共享,也是一样,开启防火墙,就无法连接redis服务器 只要关闭防火墙,就一切正常~~ iptables 文件没问题,难道是

《深入浅出DPDK》—第2章2.1节存储系统简介

第2章 Cache和内存 2.1 存储系统简介一般而言,存储系统不仅仅指用于存储数据的磁盘.磁带和光盘存储器等,还包括内存和CPU内部的Cache.当处理完毕之后,系统还要提供数据存储的服务.存储系统的性能和系统的处理能力息息相关,如果CPU性能很好,处理速度很快,但是配备的存储系统吞吐率不够或者性能不够好,那CPU也只能处于忙等待,从而导致处理数据的能力下降.接下来本章会讨论Cache和内存,对于磁盘和磁带等永久性存储系统,在此不作讨论. 2.1.1 系统架构的演进在当今时代,一个处理器通常包

MPC8250处理器及其在宽带接入中的应用

摘要:MPC8250是Motorola公司推出的高性能32位嵌入式微处理器MPC82XX系列中的一种,本文介绍MPC8250的结构与特点,并与MPC860的特点进行对比,在此基础之上分析MPC8250应用于宽带接入产品的优势所在.最后提出一种充分利用MPC8250优点的接入路由器硬件设计方案. 关键词:嵌入式处理器 MPC8250 接入路由器 1 MPC8250简介 MPC8250是Motorla公司在嵌入式徽顺MPC860基础之上推出的MPC82XX系列微处理器中的一种.MPC82XX系列保留

基于stm32的can总线彻底研究

1.CAN总线的初始化 void can_init(void){      CAN_InitTypeDef        CAN_InitStructure;      CAN_FilterInitTypeDef  CAN_FilterInitStructure;       /* CAN register init */      CAN_DeInit();      CAN_StructInit(&CAN_InitStructure);          /* CAN cell init *