一、CAN基本原理
CAN的传输距离受CAN传输速度、节点数量等因素限制,在<5Kbps时最远可传输10Km;最大传输速度1Mbps时可传输40m。STM32芯片的CAN常用特性:
3个发送邮箱
三级深度的2个接收FIFO
最多28个过滤器
STM32F429的CAN控制器框图如下所示:
通过配置各个筛选器去筛选CAN总线上感兴趣的数据,总线数据符合筛选器设置的要求后将数据移送到FIFO中;具体是移送到FIFO 0还是FIFO 1,也在配置筛选器时候设置。
在FIFO 0中有数据时,如果配置了中断,开发者可以通过实现以下函数来解析接收的数据:
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan);
在FIFO 1中有数据时,如果配置了中断,开发者可以通过实现以下函数来解析接收的数据:
void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan);
CAN驱动软件开发中掌握以下四点即可适用大部分应用:数据帧的构成、总线仲裁机制、位时序、标识符。
1.1 数据帧的构成
CAN通信帧类型有五种:数据帧、遥控帧、错误帧、过载帧、间隔帧。其中数据帧最常用,数据帧格式如下: