打印
[APM32F1]

基于STM32F105移植极海E103&F103 CAN2——(一)移植流程

[复制链接]
1610|37
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Fanexs168 于 2022-11-7 16:53 编辑

#申请原创# #技术资源# 产品介绍
APM32F103xC系列(如F103RC/VC)、以及APM32E103xE(E103RE/VE/ZE)系列产品,相较于市面常见的F103系列产品,新增了CAN2资源。对于一些汽车前装、后装的应用来说,可以用来移植替换原有方案上的Sxx32F105(如果只是用到了双CAN资源,并不需要F105的USB OTG功能)。

测试条件
1、基于Keil MDK 5.29 + Segger Jlink(ST-Link也可以)
2、调试终端客户提供的测试代码(基于STM32F105标准库,移植PM32后CAN2异常)

移植流程:
1、修改工程宏定义(从STM32F10X_CL改成STM32F10X_HD)。
因极海F103、E103系列也是只是对标竞品的F103系列资源,只是在103的基础上增设了CAN2的外设功能。
   
2、使用startup_stm32f10x_hd.s启动文件(作下述对应修改)、并在stm32f10x.h中做相应CAN2中断向量号的修改。(具体差异,可参考《APM32F103xC_CAN2使用说明》)







3、CAN_FilterInit()、CAN_ConfigFilter()函数优化——
原STM32F105的CAN1&CAN2 内部有0~27 总共28个filter使用,但极海103系列的双CAN“只有0~13” 14个filter。(注意:可以理解为极海的CAN1/CAN2各有其专属14个filter
重点:原ST标准库中,CAN_FilterInit()“只做了CAN1的filter配置”(为什么ST平台可以这样?为什么这里打了双引号?后续**会专门说明),在APM32平台上配置,需要单独对CAN1和CAN2要用到的filter做配置。所以,需要把标准库里的CAN_FilterInit()函数进行封装修改,进行传参CANx指定需要配置的是CAN1,还是CAN2。(当然,你们也可以按照自己喜好的方式进行代码修改~)
   

   

   

头文件中的函数声明也要对应修改~
   

二次调用、封装CAN_FilterInit()的函数接口,也要做对应修改。
   

   
4、注意,对应的接收中断处理函数,也需要跟启动文件.s中的对应。否则会导致中断响应出错、CAN2接收中断无法进入等异常。
   

   

结语
修改前后的测试代码,以及文中提及的参考文档,都放到下述附件中,以供各位参考。
大伙也可以在极海官网www.geehy.com下载官方的SDK,参考极海官方对CAN2的配置。

F105_CAN.rar

4.91 MB

f修改完毕.rar

3.47 MB

APM32F103xC_CAN2使用说明.pdf

364.57 KB

使用特权

评论回复
沙发
大吉| | 2022-3-22 13:18 | 只看该作者
膜拜大神

使用特权

评论回复
板凳
七毛钱| | 2022-3-22 16:03 | 只看该作者
我也来摩拜大神

使用特权

评论回复
地板
地球十强666| | 2022-3-26 22:22 | 只看该作者
厉害厉害 玩国产的都这么认真吗

使用特权

评论回复
5
Minweil| | 2022-5-26 11:34 | 只看该作者
安装大神的方法,CAN2用回环模式发送正常,但是正常模式,CAN盒收不到,是为啥呢

使用特权

评论回复
6
Fanexs168|  楼主 | 2022-5-26 11:45 | 只看该作者
Minweil 发表于 2022-5-26 11:34
安装大神的方法,CAN2用回环模式发送正常,但是正常模式,CAN盒收不到,是为啥呢 ...

CAN波特率配对了么,跟CAN盒能对上不?
可以发你工程代码我们看看

使用特权

评论回复
7
Fanexs168|  楼主 | 2022-5-26 11:51 | 只看该作者
补充:“....使用startup_stm32f10x_hd.s启动文件(作下述对应修改)、并在stm32f10x.h中做相应CAN2中断向量号的修改。”
...\Libraries\CMSIS\Device\ST\STM32F10x\startup\arm  已经改好的.s启动文件在附件工程的这个路径下,注意看自己的keil环境是不是有问题,没把这个包含上,或者用到其他路径下的.s,从而看起来“工程的xxx.s没有修改添加中断向量”

自己调配下~

使用特权

评论回复
8
Minweil| | 2022-5-26 11:51 | 只看该作者
Fanexs168 发表于 2022-5-26 11:45
CAN波特率配对了么,跟CAN盒能对上不?
可以发你工程代码我们看看

通信设置和CAN1是一样的,波特率也是一样的,但是CAN1可以,CAN2不行,代码要怎么给你呢

使用特权

评论回复
9
Fanexs168|  楼主 | 2022-5-26 11:54 | 只看该作者
Minweil 发表于 2022-5-26 11:51
通信设置和CAN1是一样的,波特率也是一样的,但是CAN1可以,CAN2不行,代码要怎么给你呢
...

完整的例程工程压缩,附件放到这。还有你现在用的是我们APM32F103么。你可以试下我们F103 SDK的双CAN例程,极海官网www.geehy.com

使用特权

评论回复
10
Minweil| | 2022-5-26 12:02 | 只看该作者
项目代码,例程我也看了,也是一样的,CAN2正常发送不行


F103_CAN2_test.rar

504.01 KB

使用特权

评论回复
11
Fanexs168|  楼主 | 2022-5-26 12:41 | 只看该作者
Minweil 发表于 2022-5-26 12:02
项目代码,例程我也看了,也是一样的,CAN2正常发送不行

搞定了,就改2个地方。
1、CAN2的IO remap你用错了
2、CAN2的filter资源,注意用0~13,不用用14往后的filter号。跟STM32F105不一样。详情看我CAN2系列**的第(二)篇



使用特权

评论回复
12
Minweil| | 2022-5-26 14:08 | 只看该作者
非常感谢,目前来看是可以发送了

使用特权

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

使用特权

评论回复
14
Gfan| | 2022-5-27 19:16 | 只看该作者

使用特权

评论回复
15
alvpeg| | 2022-5-28 12:39 | 只看该作者
这个可以有。   

使用特权

评论回复
16
rosemoore| | 2022-5-28 14:34 | 只看该作者
单片机兼容性越好,越简单呢。  

使用特权

评论回复
17
sdCAD| | 2022-5-28 15:19 | 只看该作者
极海E103和f105兼容吗?

使用特权

评论回复
评论
Fanexs168 2022-5-30 09:47 回复TA
APM32E103xCxE,或者F103xC都支持双路CAN。如果原来用F105,没用到USB-Host功能,只需要双路CAN,那是可以考虑下APM32的103产品。CAN2只需要做文章描述的对应修改 
18
iamaiqiyi| | 2022-9-7 18:45 | 只看该作者
E103和F103有什么不同呢  

使用特权

评论回复
19
232321122| | 2022-9-7 18:59 | 只看该作者
最大的通信频率是多少

使用特权

评论回复
20
wilhelmina2| | 2022-9-7 21:49 | 只看该作者
CAN2有什么要求

使用特权

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

本版积分规则

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

16

主题

101

帖子

2

粉丝