欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > CAN通信协议 HAL库学习

CAN通信协议 HAL库学习

2025/2/8 22:36:29 来源:https://blog.csdn.net/m0_62995834/article/details/143606397  浏览:    关键词:CAN通信协议 HAL库学习

1.CAN介绍

Controller Area Network,是ISO国际标准化的串行通信协议,为了满足汽车产业的“减少线束的数量”,通过多个LAN,进行大量数据的“高速通信”的需求。

低速CAN,通信协议10~125kbps,总线长度可达1000米

高速CAN,通信速率125kbps~1Mbps,总线长度<=40m.   高速CAN是经典CAN

CAN FD通信速率可达5Mbps,并且兼容经典CAN,遵循ISO 

CAN总线由两根总线(CANL和CANH)组成,,stm32芯片有CAN外设的,CAN和RS485类似,也是用两根线进行传输,CAN也是使用差分传输,低速CAN是开环总线,高速CAN是闭环总线,允许挂载多个设备节点(低速CAN20个和高速CAN30个),实际看CAN收发器芯片支持多少个

2.CAN总线特点

1.多主控制        每个设备都可以主动发送数据

2,没有类似地址的信息,添加设备不改变原来总线的状态

3.通信速度,速度快,距离远

4.错误检测和错误通知和错误恢复功能

5,故障封闭      判断故障类型,并且进行隔离

6,连接节点多,速度与数量找个平衡  

3.CAN应用场景:

        CAN总线协议已经广泛应用在汽车电子,工业自动化,船舶,医疗设备,工业设备等方面

4.CAN物理层        

        CAN使用差分信号进行数据传输,根据CAN_H和CAN_L上的电位差来判断总线电平。总线电平分为显性电平(逻辑0)和隐形电平(逻辑1),二者必居其一。

显性电平具有优先权。发送方通过使总线电平发送变化,将消息发送给接收方。

如高速CAN,显性电平(逻辑0)和隐形电平(逻辑1),二者必居其一。

显性电平(0)  Ucan_h - Ucan_l = 2V      隐形电平(1)Ucan_h - Ucan_l = 0V

5,硬件图:跳线帽

CAN收发芯片TJA1050

CANH和CANL之间的电阻用于阻抗匹配,减少回波反射

D引脚:CAN TX   R引脚:CAN RX    RS引脚:高速/静音模式选择(低电平为高速)

CANH:高电位CAN输入输出端        CANL:低电位CAN电压输入输出端

6.CAN协议层

        can总线以“帧”形式通信,CAN协议定义了5种类型的帧:“数据帧”,“遥控帧”,“错误帧”,

“过载帧”,“间隔帧”,其中数据帧最为常用

数据帧和遥控帧最常用

1.数据帧介绍

数据帧分为标准帧(CAN2.0A)和扩展帧(CAN2.0B),主要体现在仲裁段和控制段

数据帧由7段组成,数据帧又分为标准帧(CAN2.0A)和扩展帧(CAN2.0B),主要体现在仲裁段和控制段

显性信号为0,隐形信号为1

2.CAN位时序介绍

        CAN总线以“位同步”机制,实现对电平的正确采样。位数据都由四段组成:

同步段(SS),一个Tq

传播时间段(PTS),两个Tq

相位缓冲段1(PBS1)三个Tq

相位缓冲段2(PBS2),三个Tq

每段又由多个时序Tq组成,(Tq可以理解为单位长度)

节点检测到总线信号跳变在SS(同步段),表示节点与总线的时序是同步的,此时采样点的电平就是该位的电平

数据同步过程

硬件同步

再同步

利用普通数据位的边沿信号

再同步补偿宽度,通过SS和帧起始信号边沿信号的差距,通过调节PSB1和PSB2来达到SS和边沿信号同步

CAN总线仲裁        优先级决定

CAN总线处于空闲状态,最先开始发送消息的单元获得发送权。

多个单元同时开始发送时,从仲裁段(报文ID)的第一位开始进行仲裁。连续输出显性电平(逻辑0)最多的单元可继续发送,就是首先出现隐形电平的单元失去对总线的占有权变为接收

报文ID越小的报文

7.STM32CAN控制器介绍

1,CAN控制器介绍

STM32 CAN控制器(bxCAN属于STM32F1,F4,F7的控制器),H7属于FDCAN,可以当成一个经典CAN来用,支持CAN 2.0A和CAN2.0B Active脚本协议

bxCAN主要特点:

        波特率最高可达1Mbps(和CAN通信电路有关,CAN通信电路支持的话,才能到达这么高的波特率)

        支持时间触发通信((CAN的硬件内部定时器可以在TX/RX的帧起始位的采样点位置生成时间戳))只要配置好就行

2,CAN控制器模式

有三种模式:初始化模式正常模式睡眠模式

1.复位后进入睡眠模式(好处是降低功耗)没有数据发送,降低功耗进入睡眠模式

2,当需要对寄存器进行配置需要进入到初始化模式

3,初始化完成后,肯定是要进行CAN通信,你就要得进入正常模式,在CAN总线同步后,就可以开始接收和发送数据了,HAL库函数内部已经进行了寄存器的配置

.CAN控制器的测试模式有三种:静默模式,环回模式和环回静默模式

这三种模式在初始化模式下进行配置对CAN测试模式

3,CAN控制器框图

4,CAN控制器位时序

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com