29905|17

1366

帖子

6

TA的资源

版主

楼主
 

盘它STM32H750之四(浅谈CANFD之一) [复制链接]

 

    太久没发帖了,刚好EE编辑器改了,看着确实比以前舒服了点。EE管理员为了坛友方便确实做了不少努力。

    话也不多说。玩起这个CANFD,只是单纯想玩下,没想到确实比传统CAN优势大多了。而且自己在公司项目上,设备对内通信上都是传统CAN,对于一些数据量传输稍微有些要求的,传统CAN确实显得力不从心。

    先谈CANFD这个词,英文总称是CAN-Flexible DataRate,从词面上就可以知道就是CAN的数据段波特率可变。也就是说,CAN-FD配置下,仲裁段(BRS到ACK)这部分速率与传统CAN一样最高为1Mbps,但是数据段上的速率可以达到5Mbps上,这样能保证更快速率的应用需求。这是第一点,这个在cubemx配置的话,也不至于不明白。

   第二点,传统CAN的一帧报文最多只能收发8字节数据,而CAN-FD则可以收发最高的64字节数据。这样大大提高了传输效率。这个在cubemx上,同样也可以初始化配置。

   楼主在本贴中,将以配置cubemx初始化代码说明,并且根据自制的CANFD分析仪,分析相关报文。





此内容由EEWORLD论坛网友RCSN原创,如需转载或用于商业用途需征得作者同意并注明出处

 

 

此帖出自stm32/stm8论坛

最新回复

兄弟 我也遇到和你一样的问题了 能不能发个代码 邮箱524771563@qq.com   万分感谢     详情 回复 发表于 2022-8-12 20:33
点赞(1) 关注(3)
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

我好像赶上直播了~

此帖出自stm32/stm8论坛
 
 

回复

1366

帖子

6

TA的资源

版主

板凳
 

 楼主现在用STM32开发,大部分情况下都是使用stm32cubemx生成初始化代码,所以在这里我也是按照cubemx生成过程来进行说明。楼主的H750板子有按键、RGB、debug串口、CAN。所以这里就使能了相关的外设

先说明下CANFD的时钟配置,CANFD的时钟可由HSE、PLL1Q、PKK2Q提供,楼主选择用PLL1Q,正常情况下可最高达400M。在这里楼主只是使用20M,比较方便配置波特率。

 

 

 

 

  

     

此帖出自stm32/stm8论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 

回复

1366

帖子

6

TA的资源

版主

4
 

接下来再看下FDCAN Configuration窗口的相关配置。

     初看这个窗口配置,楼主一开始也是有点懵逼,相比以前的CAN配置,确实多了不少内容。楼主就针对主要的相关配置内容进行说明。楼主在这里已经选择FDCAN模式为FD模式,传统CAN模式跟F1 F4等类型,这里主要说明CANFD模式下的相关配置。

  1、Frame Format:这个包含两种帧格式:FD mode with BitRate Switching和FD mode without BitRate Switching。这两个的区别就在楼主刚开始说明的CANFD功能一样。数据帧可变速率配置。这个配置其实就是比特率切换,在FDCAN_CCCR寄存器中,也就是在FD操作使能位的后一位。FD操作使能位必须使能,也就是该位置1。之后再配置比特率切换位,该比特率切换位置1为使能,也就是决定了数据位速率,数据段的的位速率可以数据数据位寄存器FDCAN_DBTP配置来切换数据段的波特率,使之数据段的波特率可以高于仲裁短的波特率,而仲裁段的波特率由标称位寄存器FDCAN_NBTP进行配置,这就是CANFD的一大特点。CAN的数据段波特率可变。当选择FD mode without BitRate Switching时候,也就是禁止比特率切换,此时仲裁段和数据段的波特率一样,FDCAN_DBTP寄存器配置也没用。

   

  2、由上面可知,两个报文段的波特率分别由FDCAN_DBTP和FDCAN_NBTP两个决定,对应的cubemx的配置如下截图:

 

 

 

此帖出自stm32/stm8论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1366

帖子

6

TA的资源

版主

5
 

 3、Auto Retranmission、Transmit pause、Protocol Exception。这三个配置主要针对发送而言。一个是自动重传,当总线出现仲裁发送失败时候,在空闲时会自动重传上一帧报文,这里我并不需要,所以禁能了;一个是发送暂停,这个配置对于一些特殊处理比较有用,在指定的时候暂停发送,这里初始化并不需要暂停发送,所以也是禁能了。第三个为协议异常处理功能,我查了下资料,这个功能的意思是使能该协议异常处理时,在接收帧数据过程中检测到隐性的保留位时, 该功能将使操作状态转变为 IDLE 并在下一个采样点中止当前帧。反之禁用此功能的话,隐性的保留位将被视为格式错误,并当做错误帧来进行处理,也可以使能相关中断自己处理。楼主配置如下。   4、再来说明CANFD的四个模式。正常模式、总线监控模式、内部回环测试、外部回环测试。内外部回环测试一般是验证下节点的收发是否有问题。总线监控模式是只收不发,监控总线报文。正常模式为收发。楼主在这里测试了内外部回环测试,链路是没问题。所以最后再切换到正常模式中来。

    5、再配置下收发FIFO的元素编号、长度等。这个我还没仔细了解,有空再细读下。但大概知道的是,传输的长度要对应FIFO的字节大小。我这里使用16个字节一帧传输。

    6、楼主此贴主要说明CANFD相关配置,故不使用任何中断收发,使用的是阻塞式轮询收发。所以NVIC设置那里并没有设置

 
 

此帖出自stm32/stm8论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1366

帖子

6

TA的资源

版主

6
 

     1、由cubemx生成的初始化代码如下,我们就只需要再配置下相关滤波器组,这里我接收没过滤任何ID,所以ID都接收,再配置下发送为16字节发送,波特率可变等,再使用HAL_FDCAN_Start开启CANFD工作。

  2、这里我使用按键,触发一次则发送一次报文。接收到的报文则转发的debug串口上。

 

此帖出自stm32/stm8论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1366

帖子

6

TA的资源

版主

7
 

接线以及效果图如下:

此帖出自stm32/stm8论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

6040

帖子

202

TA的资源

版主

8
 

楼主牛

此帖出自stm32/stm8论坛
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

9
 

楼主牛

此帖出自stm32/stm8论坛
 
 
 

回复

291

帖子

0

TA的资源

一粒金砂(高级)

10
 

大佬,CANFD相对于传统的CAN的传输效率高很多呀

此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

11
 
楼主您好,刚好我也在用H750VB的芯片调试它的CANFD功能,可是我怎么调,它都无法成功发送数据。我也是用的CubeMX自动生成的代码,可就是无法工作。您能把您这部分的调试代码发我测试一下吗?非常感谢,我的邮箱是59574852@qq.com.
此帖出自stm32/stm8论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

12
 

750厉害了,楼主共享一下笔记吧

 

此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

13
 

刚刚看到您的帖子是关于h750can的,最近使用h750can,使用的是传统模式,用cubemax总是配置不了,能给个建议吗?谢谢了

此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

14
 

楼主你好,我想使用STM32H750和STM32F072使用CAN总线通信,是否可以?072没有FDCAN,刚接触FDCAN还没有弄明白,请楼主指教,谢谢!

此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

15
 
之风呀 发表于 2020-4-23 12:01 刚刚看到您的帖子是关于h750can的,最近使用h750can,使用的是传统模式,用cubemax总是配置不了,能给个建 ...

传统模式配置好了吗?

传统模式,是不是就是和F0、F1一样的。

此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

16
 
RCSN 发表于 2019-6-24 23:46 接线以及效果图如下:

请问楼主所用的CAN FD扩展板是哪一款的啊

此帖出自stm32/stm8论坛
 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

17
 

居然是canfd,之前还没注意到。

此帖出自stm32/stm8论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

18
 
常乐天 发表于 2019-12-30 22:08 楼主您好,刚好我也在用H750VB的芯片调试它的CANFD功能,可是我怎么调,它都无法成功发送数据。我也是用的C ...

兄弟 我也遇到和你一样的问题了 能不能发个代码 邮箱524771563@qq.com   万分感谢

 

此帖出自stm32/stm8论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表