硬汉嵌入式论坛

 找回密码
 立即注册
查看: 8960|回复: 29
收起左侧

[CAN/FDCAN] 基于STM32H7的CMSIS-Driver驱动实现双CAN FD和双经典CAN两种方式案例发布(2021-03-25)

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
发表于 2021-3-25 08:18:10 | 显示全部楼层 |阅读模式
CMSIS-Driver的CAN-FD驱动一如既往的好理解,言简意赅,使用方便。


例程下载:
基于STM32H7的CMSIS-Driver驱动双CAN FD例子(经典CAN方式).7z (2.52 MB, 下载次数: 941)
基于STM32H7的CMSIS-Driver驱动双CAN FD例子(CAN FD方式).7z (2.52 MB, 下载次数: 625)

注意下面的这几个软件包要都安装当前的最新版:


操作说明:
1、K1按键按下,CAN1发送消息给CAN2,蜂鸣器鸣响2次。
2、K2按键按下,CAN2发送消息给CAN1,蜂鸣器鸣响2次。


跳线帽设置:


双CAN FD接线:



CMSIS-Driver框图:


教程文档:
QQ截图20210325133940.png

图片2.png


评分

参与人数 3金币 +60 收起 理由
mydeng + 20 很给力!
missfox + 20 很给力!
木兰花 + 20

查看全部评分

回复

使用道具 举报

0

主题

30

回帖

30

积分

新手上路

积分
30
发表于 2021-3-25 08:22:24 | 显示全部楼层
给力,等这个很久了
回复

使用道具 举报

0

主题

11

回帖

11

积分

新手上路

积分
11
发表于 2021-3-25 09:51:16 | 显示全部楼层
CAN FD和CAN 2.0能一块组网吗?比如一个主控用CAN FD带十几个CAN2.0?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
 楼主| 发表于 2021-3-25 10:16:07 | 显示全部楼层
echowjk 发表于 2021-3-25 09:51
CAN FD和CAN 2.0能一块组网吗?比如一个主控用CAN FD带十几个CAN2.0?

应该是可以的,CAN FD兼容CAN模式,后面我测试下。

我现在用的是V7板载的双CAN FD之间做的通信。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
 楼主| 发表于 2021-3-25 13:40:43 | 显示全部楼层
更新完毕,已经发布。
回复

使用道具 举报

12

主题

177

回帖

213

积分

高级会员

积分
213
发表于 2021-3-25 19:57:15 | 显示全部楼层
十分给力,期待很久了
回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2021-3-26 09:28:56 | 显示全部楼层
非常赞,学习下
代码不规范,亲人两行泪!
回复

使用道具 举报

5

主题

61

回帖

76

积分

初级会员

积分
76
发表于 2021-3-31 15:34:17 | 显示全部楼层
硬汉兄弟,我用H743 176Pin封装的这个芯片, 这个CANFD 仲裁段波特率1M,数据区波特率5M,发送接收可以,我想知道 这个最高是多少,我一直没找到H743的CANFD最高的通信速率是多少
回复

使用道具 举报

0

主题

22

回帖

22

积分

新手上路

积分
22
发表于 2021-3-31 20:35:45 | 显示全部楼层
dghwjh 发表于 2021-3-31 15:34
硬汉兄弟,我用H743 176Pin封装的这个芯片, 这个CANFD 仲裁段波特率1M,数据区波特率5M,发送接收可以,我 ...

我理解这个的限制应该是transceiver
回复

使用道具 举报

0

主题

22

回帖

22

积分

新手上路

积分
22
发表于 2021-3-31 20:36:21 | 显示全部楼层
eric2013 发表于 2021-3-25 10:16
应该是可以的,CAN FD兼容CAN模式,后面我测试下。

我现在用的是V7板载的双CAN FD之间做的通信。

CAN接收到CANFD,应该会报错。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
 楼主| 发表于 2021-4-2 08:26:37 | 显示全部楼层
yu2008 发表于 2021-3-31 20:36
CAN接收到CANFD,应该会报错。

对,都得用经典CAN模式才行。
回复

使用道具 举报

5

主题

16

回帖

31

积分

新手上路

积分
31
发表于 2021-4-12 19:30:54 | 显示全部楼层
很给力,感谢分享,下载来研究下。
回复

使用道具 举报

12

主题

177

回帖

213

积分

高级会员

积分
213
发表于 2021-4-18 21:17:46 | 显示全部楼层
硬汉,请问在现有的工程上添加CMSIS-CAN正确的步骤是什么样的呢?

我在manage runtime environment的cmsis driver里勾选了can(api),但是,在编译的时候出现“No FDCAN configured in STM32CubeMX!”

我看了一下我"MX_Device.h"中的内容和您给的模板不一样:除了CAN相关的宏定义外,各种时钟频率也完全不一样。
难道是直接编辑这个文件吗?但是文件的前面写了“ * Note : This file is generated by STM32CubeMX (DO NOT EDIT!)”
在添加cmsis-driver can驱动的时候,没看到哪里能打开stm32cubemx。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
 楼主| 发表于 2021-4-19 09:02:27 | 显示全部楼层
gallop020142 发表于 2021-4-18 21:17
硬汉,请问在现有的工程上添加CMSIS-CAN正确的步骤是什么样的呢?

我在manage runtime environment的cms ...

在RTE里面运行一次STM32CubeMX,使能CAN1和CAN2即可
回复

使用道具 举报

12

主题

177

回帖

213

积分

高级会员

积分
213
发表于 2021-4-19 11:42:22 | 显示全部楼层
eric2013 发表于 2021-4-19 09:02
在RTE里面运行一次STM32CubeMX,使能CAN1和CAN2即可

谢谢,在网上找到了怎么在RTE里面打开STM32CubeMx:Manage Run-Time Environment -> Device -> STM32Cube Framework (API) -> STM32CubeMx 旁边的运行按钮

现在CAN是使能了,但我还有两个疑问:
1. 在Cube里面是不是不能修改芯片?把STM32H743XHx修改成STM32H743VIT
2. 时钟树还需要根据实际配置吗?现在Cube里面选不了HSE
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
 楼主| 发表于 2021-4-20 08:46:05 | 显示全部楼层
gallop020142 发表于 2021-4-19 11:42
谢谢,在网上找到了怎么在RTE里面打开STM32CubeMx:Manage Run-Time Environment -> Device -> STM32Cube ...

可以换芯片,用不到CubeMX配置的时钟树
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
发表于 2021-5-17 10:48:35 | 显示全部楼层
大佬你好,我把您的代码移植到IAR后,CAN不会输出是咋回事
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
 楼主| 发表于 2021-5-17 14:53:08 | 显示全部楼层
浅笑 发表于 2021-5-17 10:48
大佬你好,我把您的代码移植到IAR后,CAN不会输出是咋回事

注意bsp.C中CAN时钟配置。
回复

使用道具 举报

16

主题

203

回帖

251

积分

高级会员

积分
251
发表于 2023-5-15 09:33:29 | 显示全部楼层
eric2013 发表于 2021-5-17 14:53
注意bsp.C中CAN时钟配置。

下载不了
回复

使用道具 举报

16

主题

203

回帖

251

积分

高级会员

积分
251
发表于 2023-5-15 09:35:42 | 显示全部楼层
eric2013 发表于 2021-5-17 14:53
注意bsp.C中CAN时钟配置。

好了,回复一下就能下载了

回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2023-5-16 17:53:07 | 显示全部楼层
请问下教程文档在哪啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
 楼主| 发表于 2023-5-16 20:25:30 | 显示全部楼层
asddcai 发表于 2023-5-16 17:53
请问下教程文档在哪啊

只有ST的HAL库CAN做教程了,这个没弄教程。

教程可以看这个

下载.png
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-8-24 17:51:45 | 显示全部楼层
刚接触H7系列,经典can工程,烧录到V7开发板,出现死机情况,你们有遇到过吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
 楼主| 发表于 2023-8-24 17:53:11 | 显示全部楼层
yaoyuzhu 发表于 2023-8-24 17:51
刚接触H7系列,经典can工程,烧录到V7开发板,出现死机情况,你们有遇到过吗?

CMSIS软件包是不是用的5.8.0,这个版本有bug,可以使用5.7.0
回复

使用道具 举报

22

主题

93

回帖

159

积分

初级会员

积分
159
发表于 2023-9-14 09:06:29 | 显示全部楼层
不知道大家有没有发现一个问题,用ptrCAN1->ObjectSetFilter设置接收ID时,如果设置了4个接收ID那么运行正常,如果设置了3个接收ID,那么除了能接收到设置的3个ID报文数据,还能接收到ID为0x000的报文数据,很奇怪。
回复

使用道具 举报

8

主题

157

回帖

181

积分

初级会员

积分
181
发表于 2023-9-14 10:06:02 | 显示全部楼层
shibinjie 发表于 2023-9-14 09:06
不知道大家有没有发现一个问题,用ptrCAN1->ObjectSetFilter设置接收ID时,如果设置了4个接收ID那么运行正 ...

过滤器配置数组能贴出来?我这两天下试试
回复

使用道具 举报

22

主题

93

回帖

159

积分

初级会员

积分
159
发表于 2023-9-14 10:16:52 | 显示全部楼层
shibinjie 发表于 2023-9-14 09:06
不知道大家有没有发现一个问题,用ptrCAN1->ObjectSetFilter设置接收ID时,如果设置了4个接收ID那么运行正 ...

看了下源代码,原来是双ID的原因
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-10-27 11:05:36 | 显示全部楼层
牛 最近正好学习这个
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-11-1 11:38:51 | 显示全部楼层
经典CAN链接失效了,麻烦补一下
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
 楼主| 发表于 2023-11-1 12:18:32 | 显示全部楼层
huangxxshuai 发表于 2023-11-1 11:38
经典CAN链接失效了,麻烦补一下

测试了下,正常

下载.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 09:11 , Processed in 0.337998 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表