各种总线协议汇总(四)- CAN

本文详细介绍了CAN(Controller Area Network)总线的五种帧类型:数据帧、遥控帧、错误帧、过载帧和帧间隔,并提供了CAN波特率的计算公式。同时,讨论了CAN电平的逻辑状态以及CAN总线设置程序的相关代码示例,适用于STM32F103等微控制器。
摘要由CSDN通过智能技术生成

四、CAN(Controller Area Network)

(一)、CAN总线帧种类

CAN协议是通过以下5种类型的帧进行的: 数据帧 、摇控帧 、错误帧 、过载帧 、帧间隔

1、数据帧

数据帧一般由7个段构成,即:
(1) 帧起始。表示数据帧开始的段。
(2) 仲裁段。表示该帧优先级的段。
(3) 控制段。表示数据的字节数及保留位的段。
(4) 数据段。数据的内容,一帧可发送0~8个字节的数据。
(5) CRC段。检查帧的传输错误的段。
(6) ACK段。表示确认正常接收的段。
(7) 帧结束。表示数据帧结束的段。
数据帧

2、摇控帧

摇控帧只发ID不发数据,将ID发给另一台设备,请求返回数据。
摇控帧

3、错误帧

CAN网络具有严格的错误诊断功能,该功能已固化在硅片之中,一旦错误被检测,正在传送的数据帧将会立即停止而待总线空闲时再次重发直至发送成功,该过程并不需要CPU的干涉除非错误累计该发送器退隐(Bus Off)。
错误帧

4、过载帧

过载帧是接收节点向总线上其它节点报告自身接收能力达到极限的帧。

过载帧

5、帧间隔

帧间隔是用来隔离数据帧(或者遥控帧)的,也就是说,数据帧(或者遥控帧)通过插入帧间隔可以将本帧与先行帧(数据帧、遥控帧、错误帧、过载帧)分隔开来。

帧间间隔

(二)、CAN波特率计算

CAN通信波特率计算公式:
Baudrate = FPCLK / [ (tBS1+tBS2+t) * BRP]
tSJW:重新同步时间跳跃信号 range from 1~3
tBS1:时间段1的时间单元 range from 1~16
tBS2:时间段2的时间单元 range from 1~8
BRP:波特率分频器

Fpclk1/((tsjw+tbs1+tbs2) * brp)
在这里插入图片描述

当然很多设备的波特率都是固定的,比如以下这些设备:
汽油车:500K,250K,125K,100K
柴油车:250K
伺服电机控制器:250K,125K
EPEC控制器:250K
消防主机通信:5K,10K,13.3K

(三)、CAN电平类型
CAN_H CAN_L 电位差 电平
2.5V 2.5V 0V 隐性电平
3.5V 1.5V 2V 显性电平

隐性电平->逻辑‘1’     显性电平->逻辑‘0’
显性电平能覆盖阴性电平(驱动能力差异导致)
CAN物理层

(五)、CAN总线设置程序

下面列出CAN(从)机相关代码:
(主机和从机CAN的配置是差不多的,只不过发送接受的数据不同而导致之后的操作不同)

#include "bsp_can_master.h"
/*
 * CAN 差分信号的表示
 * 1:隐性电平 H2.5v - L2.5v = 0v
 * 0:显性电平 H3.5v - L1.5v = 2v
 */
//主从机CAN设置都一样,只不过发送接收有些许差异
typedef unsigned char u8;
//接收数据缓冲区
u8 RXBUF[5];
u8 RX_FLAG = 0;

CanTxMsg TXMessage;			//发送数据缓冲区
CanRxMsg RXMessage;			//接收数据缓冲区

void CAN_Master_GPIO_Configuration(void)
{
   
	GPIO_InitTypeDef GPIO_InitStructure;												//配置CAN对应引脚
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);	//使能GPIO和复用IO时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);				
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值