打印
[APM32F1]

基于STM32F105移植极海E103&F103 CAN2——(二)CAN filter差异

[复制链接]
1228|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#技术资源# #申请原创# **背景
在上篇**中有提及——“......原ST标准库中,CAN_FilterInit()“只做了CAN1的filter配置”(为什么ST平台可以这样?为什么这里打了双引号?)......”
认真看完上篇**的道友,相信大部分的人都可以用上APM32的CAN2功能了(不会的来留言找我们),但难免还有如下几个疑问:

    • ST作为通用MCU的行业老大哥,其CAN外设标准库函数,为什么“只会”配置CAN1的filter?老大哥真的会犯这么低级的错误吗?
    • 为什么在STM32F105平台上可以这样用CAN_FilterInit(),但是移植到APM32平台后CAN2的配置就失效了?
    • STM老大哥的filter是0~27总共28个过滤器组,那这28个filter是怎么分配给到CAN1、CAN2的呢?还是说他们都是混合使用、等用到的时候才使能/关联CAN1/CAN2?怎么工程里不见关联配置这28个filter的操作,反而是简单粗暴地使用起来了(冥冥之中有默认配置)?

抱着“知其然 知其所以然”的态度,我们继续往下剖析下APM32F103/E103和STM32F105的CAN2差异。


二者差异
1、让我们先回到代码层面来分析CAN_FilterInit()这个关键函数
   
可见14~28这14个filter,只存在于STM32F105这种互联型产品里(F103没有!)
   
   

2、在STM32F105的平台上,貌似只要配置了以CAN1为偏移值的某部分寄存器(FMR、FA1R),CAN2外设的filter也会同时生效?
关键王炸来了(来自STM32 Reference Manuel):
ST的F105,对应偏移地址为0x200-0x31C,也即激活配置filter相关的寄存器,只存在于CAN1!这也就解释了,为什么STM老大哥的标准库,在CAN_FilterInit()中只需要管CAN1即可(老大哥还是权威的)。
   

3、我们再查看下APM32对CAN1 CAN2的描述
——意思就是,APM32的CAN1、CAN2,都有其单独关联、激活filter相关的寄存器,有独立的寄存器。
   
   
   

4、额外补充——关于STM32F105的filter号分配
并非”指腹为婚“地被定死了,其实也可以后期“逆天改命”进行修改配置的。跟CAN_FMR寄存器里的CAN2SB[5:0]位有关
   

   


代码实测
基于APM32 SDK的双CAN例程,仿真实测——实际CAN2对应filter偏移地址的寄存器,是被赋值了,跟上述推论一样:
“APM32的CAN1、CAN2,都有其单独关联、激活filter相关的寄存器,有独立的寄存器。”
   

   


使用特权

评论回复
沙发
七毛钱| | 2022-3-22 16:04 | 只看该作者
用用过极海的芯片,可以多了解了解

使用特权

评论回复
板凳
Fanexs168|  楼主 | 2022-5-26 12:50 | 只看该作者
自己给自己顶一下

使用特权

评论回复
地板
WoodData| | 2022-5-26 18:11 | 只看该作者
学习一下

使用特权

评论回复
5
pentruman| | 2022-6-2 09:12 | 只看该作者
这个是互相移植的吗?

使用特权

评论回复
6
Fanexs168|  楼主 | 2022-6-2 09:39 | 只看该作者
pentruman 发表于 2022-6-2 09:12
这个是互相移植的吗?

可以的,原105平台的CAN2可以移植到APM32F103xC和E103系列上。移植流程,查看我CAN2系列文案的第(一)篇

使用特权

评论回复
7
touser| | 2022-6-2 12:30 | 只看该作者
STM32F105代码兼容吗

使用特权

评论回复
8
youtome| | 2022-6-2 13:27 | 只看该作者
E103和F103有什么区别呢

使用特权

评论回复
9
Fanexs168|  楼主 | 2022-6-2 13:30 | 只看该作者
touser 发表于 2022-6-2 12:30
STM32F105代码兼容吗

如果你没用到STM32F105的USB Host,主要关注F105的CAN2功能,那么只要做CAN2的移植修改。其他外设代码上都可以兼容

使用特权

评论回复
10
Fanexs168|  楼主 | 2022-6-2 13:32 | 只看该作者
youtome 发表于 2022-6-2 13:27
E103和F103有什么区别呢

制程工艺不一样,但二者引脚定义和外设寄存器的设计、使用一样的。
APM32E103现在只有大容量的xCxE,跟APM32F103xC系列MCU一样,都额外支持CAN2功能(相较于市面通用F103平台来说)

使用特权

评论回复
11
lzbf| | 2022-6-2 14:37 | 只看该作者
CAN filter是什么?

使用特权

评论回复
12
Fanexs168|  楼主 | 2022-6-2 15:33 | 只看该作者
lzbf 发表于 2022-6-2 14:37
CAN filter是什么?

CAN外设的过滤器组。设定好后,由MCU硬件来过滤特定的CAN ID报文,免得用户自己在软件上再做筛选判别

使用特权

评论回复
13
gygp| | 2022-7-9 14:00 | 只看该作者
这个CAN filter是什么呢  

使用特权

评论回复
14
Fanexs168|  楼主 | 2022-7-10 16:46 | 只看该作者
gygp 发表于 2022-7-9 14:00
这个CAN filter是什么呢

CAN外设的过滤器组。设定好后,由MCU硬件来过滤特定的CAN ID报文,免得用户自己在软件上再做筛选判别

使用特权

评论回复
15
guijial511| | 2022-7-11 08:16 | 只看该作者
谢谢分享,学习了。

使用特权

评论回复
16
Fanexs168|  楼主 | 2022-8-10 13:55 | 只看该作者
可以理解为,APM32F103xC和APM32E103xE的CAN1、CAN2,二者各自有自己的0~13个filter过滤器组,给各自单独使用。所以配置上,以前用惯FST 103 单CAN资源的用户,可以把APM32的CAN2也作为CAN1的复制品用,而不是像ST 105一样——有一个“CAN2SB”寄存器是支持调整0~28过滤器filter分配给CAN1 CAN2使用

使用特权

评论回复
17
lajfda001| | 2022-8-16 10:23 | 只看该作者
学习一下,感觉这个不错的。

使用特权

评论回复
18
lajdfla001| | 2022-8-16 10:28 | 只看该作者
调通CAN总线很容易,如果想要做到精通,就难了。

使用特权

评论回复
19
jflahdink09| | 2022-8-16 11:11 | 只看该作者
CAN很容,如果弄精通,就很难了。麻烦的很。

使用特权

评论回复
20
alvpeg| | 2022-8-16 20:45 | 只看该作者
CAN2跟can有什么区别呢   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:极海半导体
简介:珠海极海半导体有限公司是一家致力于开发工业级/车规级微控制器、模拟与混合信号IC及系统级芯片的集成电路设计型企业。极海团队拥有20年集成电路设计经验和嵌入式系统开发能力,可为客户提供核心可靠的芯片产品及方案,实现准确感应、安全传输和实时控制,助力客户在智慧家居、高端消费电子、工业控制、汽车电子、智慧能源以及通信设施等领域的拓展创新。

16

主题

101

帖子

2

粉丝