首页 > 应用与设计 > 工业应用 > C2837x入门指南 >

电机驱动

最新课程

热门课程

C2837x入门指南(二十五)—通信系统之CAN

接下来我们讲一下控制器局域网CAN通讯 C2000里面的大部分芯片都会标配有CAN通讯接口 除了[听不清]系列里面的F2802X 那么我们新的F28系列里面 CAN通讯 我们叫做e-CAN也就是增强型的控制器 CAN通讯本身是德国博世公司提供的 用于汽车的一种性能组件 经过不断发展 形成了现有的国际标准 ISO11898 CAN通讯属于现场通讯 属于总线的范畴 是一种有效的支持 分布式控制 或者实时控制的创新通讯网络 我们的C2000里面的CAN通讯接口是符合CAN2.0标准的 最高的传输速度达到1兆 CAN通讯最大的特点是废除了传统的地址编码 取而代之是对通讯的数据块 来编码 这个编码叫做标志符 每条报文在发送的时候 有不同截点 可以识别的标识符 它有两种功能 用于报文的过滤和优先级的确定 标识符决定了CAN模块是否接收已发送的报文 如果有两个负责多个截点 要同时发送数据的时候 标识符还决定报文的优先级 我们看CAN通讯 所有截点都是挂在一个总线上 总线采用双绞线的方式 就是两根线就可以了 因此它的导线少 实现的成本也会比较低 而且假如说 线上有多个数据 进行传输 或者说线上有错误发生的时候 我们有冗余的错误降沿机制保证我的通讯可靠性会更高 接下来我们看看CAN通讯的总线 CAN通讯使用两线制的插动总线 也就是我们常说的双绞线 CANH和CANL每个截点是挂接到这个总线上面 总线会带有两个120欧姆的配备电阻 MCU利用发送器与CAN 进行总线通讯 CAN的总线是双绞线 传输速率决定了总线的长度 如果总线的长度低于40米的时候 它的传输速率最高达到 1兆BPS 我们看看每个模块是怎么挂到这个总线上来的 每个C2000芯片 内部都含有一个CAN的控制器 假如需要跟总线相连的话 这边需要一个CAN的tranceiver 也就是它的电频转换的芯片 我们推荐用TI Sn65HVD23X 接下来我们看看CAN通讯的工作原理 如何发送数据 以及数据发生冲突时如何仲裁 我刚才说了 CAN通讯的数据发送 都是基于标识符的 而不是基于地址 这么做的好处是首先总线上的节点数量 是不受限制的 第二是每个节点都能收到数据 去判断 这样它的实时性会有较大的提高 报文的内容是网络中唯一的标识符标志 比如邮箱的标识符 表示总线上是一个温度传感器 还是位置传感器 这些不同的节点 而且网络上所有的节点 都会接收到这个报文 每个节点会对报文进行接收测试 如果该报文是跟本接收点或本邮箱相关的 那么可以对它进行接收 如果不相关 把信号忽略掉 而且标识符具有可以决定报文的优先级 这样一个功能 当多个节点发送数据时 这些标识符决定某个报文享有的优先级的高低 我们看看这个无损按位中拆的机制 仲裁的主要原则是哪个节点的数字位越小 也就是它的标识符的数字越小 它的优先级越高 比如 在CAN的通信总线上 ABC同时在发送数据 我们看看它是如何仲裁的 首先 行驶完后 我在第一个时钟信号来判断 这个地方我们看到 B总线在下一个[听不清]是一个高电平 因此B在这个第一个时钟上升沿的时候 能取得总线的控制权 总线只保留了A和C A和C现在还是低电平 我们看下一个时钟的上升沿的时候 我们看到A继续保持低电平 C跳转到了高电平 所以C丢失了总线的控制权 A获得了总线控制权 我们可以看到 这时候总线的信号跟A是完全一样的 这样的话 A总线获得了控制权 A总线继续发送数据 B和C这个节点 失去了总线的控制权 在BC的控制区里面 它会产生相应的警报 来告诉节点 控制器已经丢失了控制权 在下个时刻重新发送 我们看看CAN通讯的数据类型 和结构 CAN的报文格式 每个报文里面最主要的是数据位 每个报文都含有0到8个字节的数据 前面就是我们说到的标识符 它分为两种 一种是标准的结构显示 是11位的标识符 还有一种扩展的标识符 在原来的11位的基础上 加上18位的标识符 我们看2.0的通讯 它是都支持这两种数据格式的 这个图中可以看到 这是我们2837X里面 CAN通讯的内部的结构框图 MCU的CAN通讯模块是一个全功能的 CAN控制器 包含一个报文处理器 一个可控制数据发送和管理 可以存储数据的帧 模块采用CAN2.0 Bactive的规划 也就是模块可以接受和发送标准的帧 也就是11位的帧 和扩展的29位的标识符的帧 CAN控制器模块包含32个邮箱 这个邮箱用来存放数据长度 也就是每个报文接受的0到8个字节的数据长度 都是把数据存放到这个邮箱里面来的 这32个邮箱可以自由分配成接收邮箱或者发送邮箱 并且可以把它配置为标准的帧 接受标准的帧还是扩展的帧 CAN邮箱模块主要分为几个部分 一个是MID 也就是包含邮箱的标识符 我总线发送过来的数据 具体放到哪个邮箱里面 就是靠这个MID的标识符 判断是否接收或者把数据存放在邮箱里面 除了MID 邮箱还有报文的控制域符 MED 和MDH的两个数据存放的高低字节 CAN模块包含多个寄存器 它们分为五个组 分别存储在0X006 00 和0X0061F的数据存储器中 那五个标识符主要是控制和状态寄存器 还有本地接收的[听不清]mask码 还有我们报文的时间钟 还有对象等等 那我们最后总结一下 CAN通讯的话 主要有几个特点 首先它符合CAN2.0的通讯规范的 它支持高达1兆的BPS 也就是要求它的总线长度是少于40米的 还有它含有32个邮箱 这些邮箱可以配置成接受或发送 也可以配置成接收标准 或拓展的标识符 等等 而且在我们的2837X里面 我们的CAN通讯还有一个非常重要的功能 就是self test 自检模式 这个自检又分为好几个模式 自检模式 它的主要功能是 在我程序开发的时候 来判断我的CAN通讯的功能是否正常 好的

接下来我们讲一下控制器局域网CAN通讯

C2000里面的大部分芯片都会标配有CAN通讯接口

除了[听不清]系列里面的F2802X

那么我们新的F28系列里面 CAN通讯

我们叫做e-CAN也就是增强型的控制器

CAN通讯本身是德国博世公司提供的

用于汽车的一种性能组件 经过不断发展

形成了现有的国际标准 ISO11898

CAN通讯属于现场通讯

属于总线的范畴 是一种有效的支持

分布式控制 或者实时控制的创新通讯网络

我们的C2000里面的CAN通讯接口是符合CAN2.0标准的

最高的传输速度达到1兆

CAN通讯最大的特点是废除了传统的地址编码

取而代之是对通讯的数据块 来编码

这个编码叫做标志符

每条报文在发送的时候 有不同截点

可以识别的标识符 它有两种功能

用于报文的过滤和优先级的确定

标识符决定了CAN模块是否接收已发送的报文

如果有两个负责多个截点

要同时发送数据的时候

标识符还决定报文的优先级

我们看CAN通讯

所有截点都是挂在一个总线上

总线采用双绞线的方式 就是两根线就可以了

因此它的导线少 实现的成本也会比较低

而且假如说

线上有多个数据 进行传输

或者说线上有错误发生的时候

我们有冗余的错误降沿机制保证我的通讯可靠性会更高

接下来我们看看CAN通讯的总线

CAN通讯使用两线制的插动总线

也就是我们常说的双绞线

CANH和CANL每个截点是挂接到这个总线上面

总线会带有两个120欧姆的配备电阻

MCU利用发送器与CAN

进行总线通讯

CAN的总线是双绞线

传输速率决定了总线的长度

如果总线的长度低于40米的时候 它的传输速率最高达到

1兆BPS

我们看看每个模块是怎么挂到这个总线上来的

每个C2000芯片 内部都含有一个CAN的控制器

假如需要跟总线相连的话

这边需要一个CAN的tranceiver

也就是它的电频转换的芯片

我们推荐用TI Sn65HVD23X

接下来我们看看CAN通讯的工作原理

如何发送数据 以及数据发生冲突时如何仲裁

我刚才说了 CAN通讯的数据发送

都是基于标识符的 而不是基于地址

这么做的好处是首先总线上的节点数量

是不受限制的

第二是每个节点都能收到数据 去判断

这样它的实时性会有较大的提高

报文的内容是网络中唯一的标识符标志

比如邮箱的标识符

表示总线上是一个温度传感器 还是位置传感器

这些不同的节点

而且网络上所有的节点

都会接收到这个报文

每个节点会对报文进行接收测试

如果该报文是跟本接收点或本邮箱相关的

那么可以对它进行接收

如果不相关 把信号忽略掉

而且标识符具有可以决定报文的优先级

这样一个功能

当多个节点发送数据时

这些标识符决定某个报文享有的优先级的高低

我们看看这个无损按位中拆的机制

仲裁的主要原则是哪个节点的数字位越小

也就是它的标识符的数字越小

它的优先级越高

比如 在CAN的通信总线上

ABC同时在发送数据

我们看看它是如何仲裁的

首先 行驶完后 我在第一个时钟信号来判断

这个地方我们看到

B总线在下一个[听不清]是一个高电平

因此B在这个第一个时钟上升沿的时候

能取得总线的控制权

总线只保留了A和C

A和C现在还是低电平

我们看下一个时钟的上升沿的时候

我们看到A继续保持低电平

C跳转到了高电平

所以C丢失了总线的控制权

A获得了总线控制权

我们可以看到 这时候总线的信号跟A是完全一样的

这样的话 A总线获得了控制权

A总线继续发送数据

B和C这个节点 失去了总线的控制权

在BC的控制区里面 它会产生相应的警报

来告诉节点 控制器已经丢失了控制权

在下个时刻重新发送

我们看看CAN通讯的数据类型

和结构

CAN的报文格式 每个报文里面最主要的是数据位

每个报文都含有0到8个字节的数据

前面就是我们说到的标识符

它分为两种 一种是标准的结构显示

是11位的标识符

还有一种扩展的标识符 在原来的11位的基础上

加上18位的标识符

我们看2.0的通讯 它是都支持这两种数据格式的

这个图中可以看到 这是我们2837X里面

CAN通讯的内部的结构框图

MCU的CAN通讯模块是一个全功能的

CAN控制器 包含一个报文处理器

一个可控制数据发送和管理

可以存储数据的帧

模块采用CAN2.0

Bactive的规划 也就是模块可以接受和发送标准的帧

也就是11位的帧

和扩展的29位的标识符的帧

CAN控制器模块包含32个邮箱

这个邮箱用来存放数据长度

也就是每个报文接受的0到8个字节的数据长度

都是把数据存放到这个邮箱里面来的

这32个邮箱可以自由分配成接收邮箱或者发送邮箱

并且可以把它配置为标准的帧

接受标准的帧还是扩展的帧

CAN邮箱模块主要分为几个部分

一个是MID 也就是包含邮箱的标识符

我总线发送过来的数据

具体放到哪个邮箱里面 就是靠这个MID的标识符

判断是否接收或者把数据存放在邮箱里面

除了MID 邮箱还有报文的控制域符

MED 和MDH的两个数据存放的高低字节

CAN模块包含多个寄存器

它们分为五个组

分别存储在0X006 00 和0X0061F的数据存储器中

那五个标识符主要是控制和状态寄存器

还有本地接收的[听不清]mask码

还有我们报文的时间钟 还有对象等等

那我们最后总结一下

CAN通讯的话 主要有几个特点

首先它符合CAN2.0的通讯规范的

它支持高达1兆的BPS

也就是要求它的总线长度是少于40米的

还有它含有32个邮箱

这些邮箱可以配置成接受或发送

也可以配置成接收标准

或拓展的标识符

等等

而且在我们的2837X里面

我们的CAN通讯还有一个非常重要的功能

就是self test

自检模式 这个自检又分为好几个模式 自检模式 它的主要功能是

在我程序开发的时候

来判断我的CAN通讯的功能是否正常

好的

视频报错
手机看
扫码用手机观看
收藏本课程

视频简介

C2837x入门指南(二十五)—通信系统之CAN

所属课程:C2837x入门指南 发布时间:2016.07.12 视频集数:28 本节视频时长:00:10:02
C2837x概述;芯片架构; 开发环境;外设寄存器操作;复位和中断;系统初始化;模拟子系统 ADC DAC CMP SDFM;控制类外设PWM CAP QEP。
TI培训小程序