stm32学习——CAN通信

CAN基础知识介绍

串行通信协议
1.多主控制,两个以上单位发送消息,根据标识符(ID)决定优先级
2.系统柔软性总线上添加单元,已连接的其他单元不需要改变
3.具有错误检测,错误通知,错误恢复
4.故障封闭错误
5.连接节点多
CAN 控制器根据CAN_L和CAN_H上的电位差判断总线电平,电线总电平分为D显性电平(之差为2V)和R隐形电平(之差为0V)
显性电平具有优先权

帧种类

帧种类.PNG

数据帧由7个段组成
帧起始,仲裁段,控制段,数据段,CRC段(检查传输错误),ACK段(确认正常传输),帧结束
重点掌握四个重点:标识符,数据帧的构成,总线仲裁,位时序

CAN控制原理与配置

stm32自带基本扩展CAN外设,又称bxCAN
三种模式


模式.PNG

工作模式:通过CAN_MCR寄存器控制INRQ和SLEEP
测试模式:通过CAN_BTR寄存器控制LBKM和SILM

标志符筛选器

筛选器可配置为屏蔽位模式和标识符列表模式,屏蔽位模式下,标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位

为了过滤一组标识符,设置屏蔽位模式
为了过滤一个标识符,设置标识符列表模式
通过CAN_FFA1R的设置,可以筛选关联到FIFO0/FIFO1


掩码.PNG

CAN发送流程

流程.PNG

初始化流程

初始化流程

CAN初始化函数名 :u8 CAN_Mode_Init()
发送函数 u8 CAN_Send_Msg(u8* Msg,u8 len)
接收函数 u8 CAN_Receive_Msg(u8 *buf)

你可能感兴趣的:(stm32学习——CAN通信)