- 本课程为精品课,您可以登录eeworld继续观看:
- (25) -通信系统之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通讯的功能是否正常
好的
课程介绍
共计28课时,4小时27分22秒
C2837x入门指南
TI C2000 MCU PWM F2837xD ADC DAC DMA CLA C2837x CMP SDFM CAP QEP c28x
F2837x系列的最新 C2000™ Delfino™ 32 位 F2837xD 微控制器 (MCU),为工业实时控制实现最新创新,并设定了全新性能标准。这些最新 MCU 支持双核 C28x 处理功能与双实时控制加速器(也称为控制律加速器或 CLA),可提供 800 MIPS 浮点性能,从而可帮助设计人员为计算要求严格的控制应用开发低时延系统。此外,设计人员还可通过将多个嵌入式处理器整合在单个 MCU 中以降低复杂性,充分满足高级伺服驱动器、太阳能中央逆变器以及工业不间断电源 (UPS) 等需要实时信号分析的应用需求。
猜你喜欢
换一换
推荐帖子
- CCS5.5 如何实时修改全局变量的值
- 如题,我们这边有人用CCS3.3,在debug的时候将变量加入Watch Window就可以实时查看并且修改变量的值,不用停止和重新编译。 但是我的这个项目目前用的是CCS5.5,在debug的过程中可以将全局变量加入Expression窗口实时观测刷新,但是似乎直接修改没有反应。 请问CCS5.5有实现实时修改全局变量的方法吗? ...
- dik2141 DSP 与 ARM 处理器
- TI MCU 研讨会 2012年3月20日(星期二)广州
- 为了让您更好的了解MCU设计的解决方案、工具、技巧和实例,安富利科汇在广州承办为期一天的 TI MCU技术研讨会。德州仪器公司的多位MCU专家亲临现场做技术分享,您将获得应用中技术难题的宝贵建议。届时,我们将在现场展示最新的TI MCU 技术,发表诸多基于 TI MCU技术所开发的应用, 内容涉及实际高效能设计方案, 开发套件以及设计实例分享。良机难得,切勿错过...
- zglgoon TI技术论坛
- 一种基于PWM的电压输出DAC电路设计
- 本帖最后由 dontium 于 2015-1-23 11:38 编辑 一种基于PWM的电压输出DAC电路设计一种基于PWM的电压输出DAC电路设计一种基于PWM的电压输出DAC电路设计 ...
- 219219 模拟与混合信号
- 降低电感磁芯损耗的方法
- 大家都知道电感磁芯是很多电子产品中都会用于到的一种产品,例如手机、MP3、MP4、电脑、转换器、变压器及LED电视显示屏等等。而且大家应该也知道,电子产品在使用的过程中都产生一定的损耗,而电感磁芯也不例外。但是,如果当电感磁芯的损耗过大的话,会导致电感磁芯的使用寿命的减少,严重的话还会影响到应用电感磁芯的产品的正常运行。那么我们应该如何降低电感磁芯的损耗呢? ...
- qwqwqw2088 模拟与混合信号