# CAN
# 模块介绍
# CAN总线
CAN指的是控制器局域网络,全称为Controller Area Network,由德国BOSCH公司开发,是目前国际上应用广泛的现场总线之一,是一种能够实现分布式实时控制的串行通信网络,同时CAN总线是一个广播类型的总线,任何在总线上的节点都可以监听到总线上传输的数据,可以满足一对多的传输需求,同时具有实时性强、传输距离远、抗电磁干扰能力强、成本低等特点,其双线串行通信连接方式如下图所示:
CAN总线分为CAN_High和CAN_Low两根传输线,CAN控制器根据这两根线上的电位差来判断总线电平 ,数据发送时,CAN_High和CAN_Low都是2.5V,总线电平差为0,称之为静电平,即隐性电平。有数据发送时,CAN_High升高到3.5V,CAN_LOW降低到1.5V,总线电平差为2V。当CAN_High – CAN_Low < 0.5V的时候为隐性的,逻辑信号表现为“逻辑1”,当CAN_High – CAN_Low > 0.9V的时候为显性的,逻辑信号表现为“逻辑0”。
CAN总线协议包括五种类型的帧,分别为数据帧、遥控帧、错误帧、过载帧和帧间隔,各自作用如下表所示:
帧类型 | 作用 |
---|---|
数据帧 | 用于发送单元向接收单元传送数据的帧 |
遥控帧 | 用于接收单元向具有相同 ID 的发送单元请求数据的帧 |
错误帧 | 用于当检测出错误时向其它单元通知错误的帧 |
过载帧 | 用于接收单元通知其尚未做好接收准备的帧 |
帧间隔 | 用于将数据帧及遥控帧与前面的帧分离开来的帧 |
# TJA1050
TJA1050模块支持CAN总线协议高速收发功能,可作为收发器连接CAN总线控制器(例如STM32的CAN总线片上外设)和物理总线,将控制器的TTL电平信号转换成CAN_H和CAN_L信号,用于CAN总线通讯。模块完全遵循“ISO 11898”标准,最高数据传输波特率可达1M,引脚定义如下表所示:
序号 | TJA1050模块 | 备注 |
---|---|---|
1 | TXD | 模块输入口,接收CAN总线控制器的输出数据 |
2 | GND | 模块公共地 |
3 | VCC | 模块3.3V |
4 | RXD | 模块输出口,接收CAN总线发送的数据 |
5 | Vref | 模块参考电压 |
6 | CANL | CAN_L总线 |
7 | CANH | CAN_H总线 |
8 | S | 模块模式切换引脚(高速收发模式和休眠模式) |
# 模块配置和代码树
对于CAN模块,默认配置就可以测试。
[*] Enable CAN ---->
-- Enable CAN