初时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的功能已经基本实现。
本人还是小白,大佬勿喷,谢谢。