CAN总线通信
1. CAN相关芯片
1.CAN控制器
2、CAN收发器:CAN收发器的作用是在逻辑电平和信号电平之间进行转换。
即逻辑电平从CAN控制芯片输出到CAN收发器,然后通过CAN收发器的内部转换,将逻辑电平转换为差分信号输出到CAN总线。 CAN总线上的节点可以决定是否需要总线上的数据。 。
2.CAN配置
无效(无效)
;
;
福雷;
;
3. CAN波特率计算公式
CAN波特率=系统时钟/分频器/(1*tq+tBS1+tBS2)
在
tBS1=tq*(TS1[3:0]+1)
tBS2=tq*(TS2[2:0]+1)
tq=(BRP[9:0]+1)*tPCLK
这里tq代表1个时间单位
tPCLK=APB时钟的时间周期
BRP[9:0]、TS1[3:0]和TS2[2:0]在寄存器中定义
整体配置保持不变
tBS1>=tBS2,tBS2>=1个CAN时钟周期,tBS2>=2tSJW
4. CAN发送和CAN接收
1、传输过程:CAN控制器将来自CPU的信号转换为逻辑电平(即逻辑0-显性电平或逻辑1-隐性电平)。 CAN发送器接收到逻辑电平后,将其转换为差分电平并输出到CAN总线。
2、接收过程:CAN接收器将CAN_H和CAN_L线上传输的差分电平转换为逻辑电平,输出给CAN控制器。然后CAN控制器将逻辑电平转换成相应的信号并发送给CPU。
5、STM32 CAN控制器介绍——发送过程和接收过程
程序选择一个空邮箱(TME=1)->设置标识符(ID)、数据长度和发送数据->设置TXRQ位为1,请求发送->邮箱注册(等待成为最高优先级)-> > 定时发送(等待总线空闲)->发送->邮箱为空
FIFO为空->收到有效消息->注册_1(保存在FIFO中的邮箱中,这个是由硬件控制的,我们不需要关心)->收到有效消息->注册_2->收到有效消息->- >收到有效消息->溢出。
CAN接收到的有效报文存储在深度为3个邮箱的FIFO中。我们可以通过查询FMP寄存器来获取FIFO接收到的消息数量。只要FMP不为0,我们就可以从FIFO中读取接收到的消息。
关注公众号,点击公众号首页右上角“···”,设置星星,实时关注智能汽车电子及软件最新资讯