今天要讨论的是使用STM32Cube MX配置CAN通讯。既然能见到这篇文章,说明您对CAN通讯已经有了很多的了解,而且目前正在使用这个东西,并且遇到了一些问题,就是不能通讯的问题。在使用STM32Cube调试CAN的时候我也遇到了很多的问题,这些问题都被解决了,今天就来聊一聊如何使用STM32Cube配置CAN通讯。CAN的基本原理自不必说,有不懂得地方可以直接百度。
硬件平台:野火野火STM32F429挑战者开发板,周立功USBCAN调试盒;软件:STM32Cube MX、CAN Test和Keil 5。
本篇文章要完成的工作:
1.开发板可以通过CAN循环发送数据,配置波特率为250kbits,引脚为PB8和PB9,使用周立功的CAN卡接收,在CAN Test上显示数据,
发送的数据ID = 0x18ff3333,数据为{0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
2.配置CAN的接收函数,在循环函数中接收CAN数据,当接收到CAN ID为0x18332201的扩展帧时,当接收的Data[0]=0x01的时候熄灭LED灯,否则LED灯点亮。
3.配置CAN的接收中断,当接收到0x18442201的扩展帧时,当接收到的Data[1]=0x02时熄灭LED灯,否则LED灯点亮。
设置以上三个任务的理由:配置CAN发送较为简单,可以直接使用CAN卡读取数据,没有读到就很可能是配置错误,或者函数使用错误,当数据能发送,就代表硬件是没有问题的。第二步在while中接收是由于配置中断复杂一点,现在while中看一下CAN的接收函数是否使用正确。第三步使用CAN中断,CAN中断使用较多,配置CAN中断有一定的意义。
打开STM32Cube MX开始进行配置。先配置下载调试口、时钟、LED(PH10见《STM32Cube学习笔记-点灯和打印》)。
然后配置CAN的引脚和参数。开发板的CAN使用的是PB8和PB9,在STM32Cube上配置如下。
左侧先选择CAN1,然后在Configuration的Parameter Settings中配置波特率和基本参数。
波特率计算法方法。
CAN时钟 = CAN所在的外设时钟/Prescaler,