
初时can通信的大家可能会一脸懵逼,不知道他是干什么的,刚刚接触底层协议看不懂,cubemx也不会配置,这里分享我的个人经验。

can外设包含了很多内容,我们需要用cubemx生成,上面是一些简单介绍。

好了,我们进入到cubemx界面开始配置时钟树,这里我们需要选择HSE(高速外部时钟晶振),需要先行在rcc中打开选择晶振,接下来选择pll(锁相倍频环),可以进行一些分频和倍频。频率选择最大的数字就行。
接下来打开can,我建议选择普通的can,而不是fdcan(好像用不太到)
在can的界面下修改一些数据,如数据帧,波特率,字长,和FIFO
如果你要配置两个can,因该在数据段seg2把0改为1280.
fifo大家可能不太清楚它的功能,这里我介绍一下。
FIFO存储器是系统的缓冲环节,如果没有FIFO存储器,整个系统就不可能正常工作,它主要有几方面的功能:
1)对连续的数据流进行缓存,防止在进机和存储操作时丢失数据;
2)数据集中起来进行进栈和存储,可避免频繁的总线操作,减轻CPU的负担;
3)允许系统进行DMA操作,提高数据的传输速度。这是至关重要的一点,如果不采用DMA操作,数据传输将达不到传输要求,而且大大增加CPU的负担,无法同时完成数据的存储工作。
同时我们需要配置can的中断,如图。

基本配置完成,在project中按图勾选即可。

好了,can的底层已经配置好了,但是我们只是完成了一些参数的设定,还需要将他们在主函数中初始化。

初始化完成,can通信的功能就是接收和发送数据,所以我们要在代码中实现相应功能。

ppt中写的很清楚,就不在这里多过解释,这样can的功能已经基本实现。
本人还是小白,大佬勿喷,谢谢。
这篇博客主要介绍了CAN通信的初步配置,包括在cubemx中设置时钟树、选择HSE和PLL、配置CAN外设以及中断。讲解了FIFO在系统中的作用,如数据缓存、提高传输速度等,并提供了CAN中断的配置示例。最后,提到了在主函数中初始化CAN并实现数据收发的基本步骤。

4000

被折叠的 条评论
为什么被折叠?



