当前位置: 首页 > news >正文

2.1、STM32 CAN外设简介

目录

1、简介

2、CAN网拓扑结构

3、CAN收发电路

4、CAN基本结构

5、发送过程

6、接收过程

1、简介

bxCAN中bx表示支持扩展格式

STM32波特率最高达1Mbps,可使用高速CAN

FIFO:(First Input First Output)先进先出寄存器

2、CAN网拓扑结构

使用F103c8t6将CAN收发器的RX和TX引脚接在PA11和PA12时,USB和CAN无法同时使用

可以映射到PB8和PB9

3、CAN收发电路

4、CAN基本结构

(1)GPIO:CAN_Tx配置为复用推挽输出,CAN_Rx配置为上拉输入。

(2)发送和接收控制器:只需把想发的报文告诉他,他就自动给你发出去,当他接收到一个报文后,就自动与你配置的过滤器进行比对,符合过滤器的报文自动存入FIFO的队列中,CPU直接读取FIFO即可。

(3)邮箱:将想发送的报文存入邮箱,控制器自动广播,为避免长时间等不到总线空闲,导致报文在邮箱滞留很久造成的CPU等待,因此设置了3个发送邮箱,提供缓冲区,CPU可以不用等待,向其他邮箱写入报文。

发送哪个邮箱的报文可根据先来后到(TXFP=0),也可按照ID号优先级处理(TXFP=1)。可由TXFP进行配置

(4)接收过滤器:可根据ID号对报文进行过滤,不是想要的报文会被直接丢弃。一共14个过滤器,在程序中可对任意一个过滤器进行配置,把想要接收的报文ID规则写入过滤器中,我们想要的报文会通过过滤器进入后续的FIFO中,进而被CPU读取。

如果只需要几种类型的报文ID,使用一两个过滤器即可满足要求,不被配置的过滤器默认处于失能状态。

硬件设计的过滤器可节省软件对报文ID比对的工作

(5)接收FIFO:FIFO0和FIFO1,每个FIFO有3个邮箱,可容纳3个报文排队。过滤器可指定进那个FIFO队伍。

处理报文排满问题:若同一个FIFO因没有被CPU及时读取而满了,STM32可配置FIFO的锁定状态,来处理FIFO满之后新的报文该怎么存:若配置FIFO锁定(RFLM=1),新的报文会被直接丢弃;若配置FIFO不锁定(RFLM=0),FIFO满之后,新的报文会把邮箱2的数据踢出去,自己占据邮箱2的位置。

若邮箱0报文被读取,邮箱1的数据就会存入邮箱0,邮箱2存入邮箱1。

5、发送过程

RQCP=x 表示任意值

TME=1 ,表示当前邮箱是空置状态

TXRQ=1,表示产生这个发送请求,邮箱进入挂号状态

CAN总线 = IDLE(空闲)

发送失败 = NART

NART = 0 表示使用自动重传,发送失败的报文会回到预定状态,下次总线空闲会再次发送;

NART = 1 表示禁止自动重传,发送失败后直接回到空置状态,TXOK=0

ABRQ = 1,可终止挂号状态和预定状态的发送,终止发送后状态和发送失败是一样的

6、接收过程

FIFO存满后,FOVR=1,FULL置1

溢出状态和挂号3状态其实是一个状态,溢出状态释放一个邮箱后会进入挂号2状态

http://www.lryc.cn/news/575749.html

相关文章:

  • 鸿蒙实时音视频流处理框架开发实战——基于HarmonyOS 4.0与分布式软总线的低延时高可靠架构
  • Miniconda+Jupyter+PyCharm初始环境配置
  • Java全栈面试实录:从电商平台到AIGC,技术栈深度解析
  • Linux驱动学习day8(按键驱动读取方式、GPIO、pinctrl子系统)
  • FFmpeg进行简单的视频编辑与代码写法实例
  • 推荐系统的视频特征-视频关键帧特征提取与向量生成
  • 【Unity】如何制作翻页UI
  • 圆周期性显示和消失——瞬态实现(CAD c#二次开发、插件定制)
  • 算法打卡 day4
  • Vue样式绑定与条件渲染详
  • MySQL多表关系
  • ASIO 避坑指南:高效、安全与稳健的异步网络编程
  • 游戏App前端安全加固:利用AI云防护技术抵御恶意攻击
  • vue3 json 转 实体
  • 临床开发计划:从实验室到市场的战略蓝图
  • day48-硬件学习之GPT定时器、UART及I2C
  • 面试150 判断子序列
  • 【已解决】Android Studio gradle遇到unresolved reference错误
  • 鸿蒙 SplitLayout 组件解析:折叠屏分割布局与多端适配指南
  • 视频关键帧提取
  • 跟着AI学习C#之项目实战-电商平台 Day1
  • Python打卡:Day36
  • mac电脑安装vscode的力扣插件报错解决办法
  • 板凳-------Mysql cookbook学习 (十--11)
  • Spring Boot高并发 锁的使用方法
  • Flutter 多平台项目开发指南
  • 使用java语言,计算202503291434距离当前时间,是否大于三天
  • SQL SERVER存储过程
  • 赋能 Java 工程,飞算科技重新定义智能开发
  • 自动化测试--app自动化测试之给手机设置锁屏图案