HAL库——CAN通信的中断接收

本文介绍了CAN协议基础,强调了CAN通信的位时序与波特率概念。接着,详细阐述了如何使用CubeMX配置STM32的CAN中断接收,包括时钟设置、中断优先级配置及中断回调函数的编写。最后提到了keil MDK5中的额外配置,特别是CAN滤波器的初始化。文中还讨论了中断接收的数据处理方式,提供了中断接收的程序执行流程。

一:CAN协议基础

CAN:Controller Area Network,控制器局域网络。这方面的参考资料很多,不详细写了。说几个在开发过程的特点:

  • CAN总线上所有连接节点并没有地址的概念,通过发送数据中的标识符ID进行区分,多个单元同时发送消息时也通过标识符的优先级来仲裁优先发送方。
  • CAN总线的信号是通过两根信号线之间的电压差值来确定信号类型,显性电平对应逻辑0,隐形电平对应逻辑1。(这部分都是由硬件电路实现的)
  • CAN协议包括数据帧、遥控帧、错误帧、过载帧、间隔帧。重点关注数据帧,包括:帧起始、仲裁段、控制段、数据段、CRC段、ACK段、帧结束。
  • CAN通信是一种半双工、异步通信。       
                                                    

CAN的位时序,在手册上看到的解释如下:

“位时序逻辑将监视串行总线,执行采样并调整采样点,在调整采样点时,需要在起始位边沿进行同步并后续的边沿进行再同步” 

然而,CAN通信并不是同步通信,一开始看到同步的时候就有点不理解了。后来想了想,这里的同步说的是在进行信号的采样时,保证在该开始采样的位置启动采样,在结束位置完成采样,不会因为数据量过多,采样时出现相位偏移的问题。

位时序和CAN通信的波特率是相关联的,所以这部分是必须要理解的,主要有一下几个概念:

  • 位速率:发送单元在非同步情况下每秒钟发送的位数
  • <
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值