当前位置:网站首页>STM32学习之CAN控制器简介
STM32学习之CAN控制器简介
2022-07-27 14:13:00 【漠落】
1、STM32自带了基本扩展CAN外设,又称bxCAN,bxCAN的特点如下:
支持CAN协议2.0A和2.0B主动模式
波特率最高达1Mbps
支持时间触发通信
具有3个发送邮箱
具有3级深度的2个接收FIFO
可变的筛选器组(也称过滤器组,最多28个)
2、STM32 CAN控制器简介-模式
①初始化模式(INRQ=1,SLEEP=0)
②正常模式(INRQ=0,SLEEP=0)
③睡眠模式(SLEEP=1)
测试模式
①静默模式( LBKM=0,SILM=1 )
②环回模式( LBKM=1,SILM=0 )
③环回静默模式(LBKM=1,SILM=1)
调试模式
3、STM32 CAN控制器简介-bxCAN框图
CAN控制器框图如下:
CAN的标识符不表示目的地址而是表示发送优先级。接收节点根据标识符的值,来决定是否接收对应消息。
STM32 CAN控制器,提供了28个可配置的筛选器组(F1仅互联型才有28个,其他的只有14个),可降低CPU处理CAN通信的开销。
STM32 CAN控制器每个筛选器组由2个32位寄存器组成(CAN_FxR1和CAN_FxR2,x=0~27)。根据位宽不同,每个筛选器组可提供:
● 1个32位筛选器,包括:STDID[10:0]、EXTID[17:0]、IDE和RTR位
● 2个16位筛选器,包括:STDID[10:0]、IDE、RTR和EXTID[17:15]位
筛选器可配置为:屏蔽位模式和标识符列表模式。在屏蔽位模式下,标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位,应该按照“必须匹配”或“不用关心”处理。而在标识符列表模式下,屏蔽寄存器也被当作标识符寄存器用。因此,不是采用一个标识符加一个屏蔽位的方式,而是使用2个标识符寄存器。接收报文标识符的每一位都必须跟筛选器标识符相同。
通过CAN_FM1R和CAN_FS1R可配置筛选器的位宽和模式:
为了过滤出一组标识符,应该设置筛选器组工作在屏蔽位模式。
为了过滤出一个标识符,应该设置过滤器组工作在标识符列表模式。
应用程序不用的筛选器组,应该保持在禁用状态(通过CAN_FA1R设置)。
筛选器组中的每个筛选器,都被编号为(即:筛选器编号)从0开始,到某个最大数值-取决于筛选器组的模式和位宽的设置。
通过CAN_FFA1R的设置,可以将筛选器组关联到FIFO0/FIFO1
例:设置筛选器组0工作在:1个32位筛选器-标识符屏蔽模式,然后设置CAN_F0R1=0XFFFF0000,CAN_F0R2=0XFF00FF00。其中存放到CAN_F0R1的值就是期望收到的ID,即(STID+EXTID+IDE+RTR)最好是:0XFFFF0000。而0XFF00FF00就是设置我们需要必须关心的ID,表示收到的映像,其位[31:24]和位[15:8]这16个位的必须和CAN_F0R1中对应的位一模一样,而另外的16个位则不关心,可以一样,也可以不一样,都认为是正确的ID,即收到的映像必须是0XFFxx00xx,才算是正确的(x表示不关心)。
3、STM32 CAN控制器简介-发送流程
CAN发送流程:
CAN发送流程为:
程序选择1个空置的邮箱(TME=1)->设置标识符(ID),数据长度和发送数据->设置CAN_TIxR的TXRQ位为1,请求发送->邮箱挂号(等待成为最高优先级)->预定发送(等待总线空闲)->发送->邮箱空置。
CAN接收流程 :
CAN接收流程为:
FIFO空->收到有效报文->挂号_1(存入FIFO的一个邮箱,这个由硬件控制,我们不需要理会)->收到有效报文->挂号_2->收到有效报文->挂号_3->收到有效报文->溢出。
CAN收到的有效报文,存储在3级邮箱深度的FIFO中。FIFO接收到的报文数,我们可以通过查询CAN_RFxR的FMP寄存器来得到,只要FMP不为0,我们就可以从FIFO读出收到的报文。
4、STM32 CAN控制器简介-位时序:
STM32的CAN位时序,如下图所示:
STM32F103,设TS1=8、TS2=7、BRP=3,波特率=36000/[(9+8+1)*4]=500Kbps。
STM32F407,设TS1=6、TS2=5、BRP=5,波特率=42000/[(7+6+1)*6]=500Kbps。
---------------------
作者:奔跑吧_自己
来源:CSDN
原文:https://blog.csdn.net/qq_38721302/article/details/82989171
版权声明:本文为博主原创文章,转载请附上博文链接!
边栏推荐
- Data warehouse project is never a technical project
- [medical industry] DICOM converter tools
- FPGA timing constraint sharing 04_ Output delay constraint
- How to do well in enterprise system vulnerability assessment
- 泛型
- What is the execution method of the stand-alone parallel query of PostgreSQL?
- Graphical SQL is too vivid
- Graphic SQL of giant image
- 视觉系统设计实例(halcon-winform)-10.PLC通讯
- Web page table table, realizing rapid filtering
猜你喜欢

STM32F103C8T6在Arduino框架下驱动SH1106 1.3“ IIC OLED显示

The mobile terminal uses the list component of vantui. When multiple tab items are switched back and forth, the list is loaded many times, resulting in the failure of normal display of data

DIY制作示波器的超详细教程:(一)我不是为了做一个示波器

Tencent two sides: @bean and @component are used in the same class, what will happen?

Dialog manager Chapter 3: create controls

Stock trading 4

The interviewer asked: how to judge whether an element is in the visible area?

Jmeter录制接口自动化

周鸿祎:数字安全能力落后也会挨打
![Detailed explanation of Telnet remote login AAA mode [Huawei ENSP]](/img/48/dd0fa3c494c45f604b7a93c707b808.png)
Detailed explanation of Telnet remote login AAA mode [Huawei ENSP]
随机推荐
Nefu117 number of prime numbers [prime number theorem]
通过VN1630/VN7640的I/O功能来确认电源设置电压的时间精确度
Web页面table表格,实现快速筛选
LeetCode 191. Number of 1 Bits(位1的个数) 位运算/easy
Unityui aspect processing (induction and accumulation)
工具 - markdown编辑器常用方法
网络设备硬核技术内幕 路由器篇 16 DPDK及其前传(一)
Disk troubleshooting of kubernetes node
动态规划——股票买卖5
Nokia's patent business was hit for the first time, and Chinese enterprises are not so easy to knead
LeetCode 190. 颠倒二进制位 位运算/easy
Differences among CPU, GPU and NPU
Automatically configure SSH password free login and cancel SSH password free configuration script
多表查询_练习1&练习2&练习3
泛型
Internship: compilation of other configuration classes
腾讯二面:@Bean 与 @Component 用在同一个类上,会怎么样?
如何做好企业系统漏洞评估
Tencent two sides: @bean and @component are used in the same class, what will happen?
关于印发《深圳市工业和信息化局绿色制造试点示范管理暂行办法》的通知