当前位置: 首页 > article >正文

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控制器位时序


http://www.kler.cn/a/383952.html

相关文章:

  • ajax关于axios库的运用小案例
  • 一台工控机出现C++工程线程卡住问题的排查
  • 设计模式 策略模式 场景Vue (技术提升)
  • 第18篇 :关于SystemVerilog中的约束随机机制(一)
  • 如何在 Rust 中实现内存安全:与 C/C++ 的对比分析
  • java的体系结构
  • 【数据集】【YOLO】【目标检测】安全帽识别数据集 22789 张,YOLO安全帽佩戴目标检测实战训练教程!
  • 【芯智雲城】Sigmastar星宸科技图传编/解码方案
  • springboot图书管理系统(一个简单的单体架构项目,适合小白)
  • JAVA 通过三菱MC协议 采集设备寄存器地址信息
  • 王珊数据库系统概论第六版PDF+第五版课后答案+课件
  • Android 开发 Java中 list实现 按照时间格式 yyyy-MM-dd HH:mm 顺序
  • aspose如何获取PPT放映页“切换”的“持续时间”值
  • 基础数据结构——队列(链表实现)
  • 【django】Django REST Framework (DRF) 项目中实现 JWT
  • Caused by: org.apache.flink.api.common.io.ParseException: Row too short:
  • Java实现pdf转图片
  • ipv6的 fc00(FC00::/7) 和 fec0(FEC0::/10)
  • 深度学习:Masked Self-Attention 详解
  • 【Chapter 2_ Sentosa_DSML Community Edition Product Features】
  • 职场浅谈:情商高的“4”种表现,情商高的人才更容易走向成功
  • yolo v5 开源项目
  • 基于Spring Boot的中小型制造企业质量管理系统设计与实现,LW+源码+讲解
  • Cesium 贝塞尔曲线
  • 【Ai测评】GPT Search偷偷上线,向Google和微软发起挑战!
  • win11安装最新rabbitmq