can总线第三讲
一 CAN控制器
官方定义:CAN控制器用于将欲收发的信息(报文),转换为符合CAN规范的CAN帧,通过CAN收发器,在CAN-bus上交换信息。
举个便于理解的例子:就像您发快递一样,要根据快递公司提供的快递单填写具体的信息(发件人和收件人的地址、联系电话等),快递公司将之标准化(统一的快递单格式,并对每一件快递进行编号),随后才能传递信息(您快递的具体东西,如文件、衣服、手机等)。
(1)CAN控制器分类
CAN控制器芯片分为两类: 一类是独立的控制器芯片,如SJA1000;另一类是和微控制器做在一起,如NXP半导体公司的Cortex-M0内核LPC11Cxx系列微控制器、LPC2000系列32位ARM微控制器。CAN控制器的大致分类及相应的产品可参见
(2)CAN控制器的工作原理
为了便于读者理解CAN控制器的工作原理,下面给出了一个SJA1000 CAN控制器的经过简化的结构框图如图1所示。
接口管理逻辑
接口管理逻辑如图1所示。接口管理逻辑用于连接外部主控制器,解释来自主控制器的命令,控制CAN控制器寄存器的寻址,并向主控制器提供中断信息和状态信息。
CAN核心模块
CAN核心模块如图1所示。收到一个报文时,CAN核心模块根据CAN规范将串行位流转换成用于接收的并行数据,发送一个报文时则相反。
发送缓冲器
发送缓冲器如图1所示。发送缓冲器用于存储一个完整的报文,当CAN控制器发送初始化时,接口管理逻辑会使CAN核心模块从发送缓冲器读CAN报文。
验收滤波器
验收滤波器如图1所示,验收滤波器可以根据用户的编程设置,过滤掉无须接收的报文。
接收FIFO
接收FIFO如图1所示。接收FIFO是验收滤波器和主控制器之间的接口,用于存储从CAN 总线上接收的所有报文。
工作模式
CAN控制器可以有两种工作模式(BasicCAN和PeliCAN)。BasicCAN仅支持标准模式,PeliCAN支持CAN2.0B的标准模式和扩展模式。
二 CAN收发器
官方定义:CAN收发器是CAN控制器和物理总线之间的接口,将CAN控制器的逻辑电平转换为CAN总线的差分电平,在两条有差分电压的总线电缆上传输数据。
举个便于理解的例子:这类似于快递员,负责收发快递的工作。
目前市面上常见CAN收发器的分类及相应产品参见表2。
三 CAN-bus接口电路保护器件
在汽车电子中,CAN-bus系统往往用于对安全至关重要的功能,比如引擎控制、ABS系统以及气囊等,如果受到干扰导致工作失常将出现严重事故;此外,在不受到干扰的的同时,CAN-bus系统也不能干扰其它电子元件;所以CAN-bus系统必须满足电磁干扰(EMI)和静电放电(ESD)标准的严格要求。此外,在许多场合CAN-bus接口有可能会遭到雷电、大电流浪涌的冲击(例如许多户外安装的设备),所以还需要使用保护器件以防浪涌。
(1)共模扼流圈。如:EPCOS B8793。
(2)ESD防护。常见的CAN-bus专用ESD保护元件型号有NXP PESD1CAN或Onsemi NUP2105L等ESD元件。
四CAN总线控制器芯片滤波器的作用
官方定义:CAN总线控制器芯片滤波器用来设置自己的CAN地址。
在CAN总线上,CAN帧信息由一个节点发送,其它节点同时接收。每当总线上有帧信息,节点都会把滤波器的设置和接收到的帧信息的标识码相比较,节点只接收符合一定条件的信息,对不符合条件的CAN帧不予接收,只给出应答信号。
便于理解的例子:这类似于家门口收信件的邮箱,用来标明自己家的详细地址。邮递员分发邮件的时候,带着一堆信件在小区内投寄,邮箱地址则表明自己家的收信件地址,如果地址正确,邮递员就会把信件投递进邮箱(成功接收邮件);如果地址不符,邮递员则不会投送邮件(拒收该邮件)。
五 CAN总线控制器滤波的作用:
1、降低硬件中断频率,只有成功接收时才响应接收中断。类似于:快递员找到您家地址的时候,才会给您打电话。
2、简化软件实现的复杂程度,提高软件运行的效率。
不同的CAN控制器芯片的滤波器设置有所不同,下文中将针对具体的CAN控制器芯片进行详细讲解。
can总线第三讲的更多相关文章
- Linux设备管理(三)_总线设备的挂接
扒完了字符设备,我们来看看平台总线设备,平台总线是Linux中的一种虚拟总线,我们知道,总线+设备+驱动是Linux驱动模型的三大组件,设计这样的模型就是将驱动代码和设备信息相分离,对于稍微复杂一点的 ...
- C# Azure 消息队列ServiceBus (服务总线队列)
1. 前言 在阅读本文之前,可以查看微软官方的说明. https://www.azure.cn/documentation/articles/service-bus-create-queues/ 2. ...
- EventBus总线讲解
在我们公司经常用到总线,具体的总线是什么让我理解我也不清楚,但是在这几个月下来,我已经知道总线如何使用,现在加上示例讲解总线如何使用. 1. 首先我们的新建一个类,这个类其实是用于总线传递的模型 us ...
- Android事件总线
Android中Activity.Service.Fragment之间的相互通信比较麻烦,主要有以下一些方法: (1)使用广播,发送者发出广播,接收者接收广播后进行处理: (2)使用Handler和M ...
- 设备模型(device-model)之平台总线(bus),驱动(driver),设备(device)
关于关于驱动设备模型相关概念请参考<Linux Device Drivers>等相关书籍,和内核源码目录...\Documentation\driver-model 简单来说总线(bus) ...
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...
- 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载
一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用 ...
- Windows Azure 服务总线和物联网
机器到机器 (M2M) 计算正迅速成为一种技术,所有开发人员和架构师需要拥抱. 许多研究表明一个未来世界的数百亿美元的设备 (在地球上的每一个人的出现).MSDN杂志有2篇文章讨论Azure服务总线和 ...
- ABP理论学习之事件总线和领域事件
返回总目录 本篇目录 事件总线 定义事件 触发事件 处理事件 句柄注册 取消注册 在C#中,我们可以在一个类中定义自己的事件,而其他的类可以注册该事件,当某些事情发生时,可以通知到该类.这对于桌面应用 ...
随机推荐
- 关于linux下,ls vi等命令失效的解决方法(配置下环境变量出现问题)
转至:https://www.cnblogs.com/afeiiii/p/13824530.html 配置完环境变量source之后,linux的ls vi命令均失效,报错如下: 解决方法 1.输入 ...
- oj教程--深度优先DFS
深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法.
- 分享自研实现的多数据源(支持同DB不同表、跨DB表、内存数据、外部系统数据等)分页查询工具类实现原理及使用
思考: 提起分页查询,想必任何一个开发人员(不论是新手还是老手)都能快速编码实现,实现原理再简单不过,无非就是写一条SELECT查询的SQL语句,ORDER BY分页排序的字段, 再结合limit ( ...
- pd.cut和pd.qcut()之间的区别
- w10环境vs2017,vs2019配置Opengl快捷方法
最近,计算机图形学老师向我们布置了任务,配置自己的opengl.百度之后我发现很多教程和方法尝试之后,我发现一种简单的方法来分享给大家. 首先我的软件配置是w10专业版系统+Visual Stdio ...
- python之pyc
pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后, 加载的速度有所提高,而且pyc是一种跨平台的字节码,是由Python的虚拟机来执行的, ...
- linux 常用命令:
查看启动进程命令 ps -ef | grep donet 1.vi 进入编辑界面 2.ls,ll 查看命令 3.cd 进入命令 4.i 进入插入界面 5. esc 退出编辑界面 6.输入:冒号,进入 ...
- Docker重要容器命令
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 容器重要命令 启动守护式容器 docker run -d 镜像 docker run -d image [command][arg...] 使用c ...
- 阿里一面,说说你了解zookeeper的应用场景有哪些?
1.前言 又到了金三银四的时候,大家都按耐不住内心的躁动,我在这里给大家分享下之前面试中遇到的一个知识点(zookeeper应用场景),希望对大家有些帮助.如有不足,欢迎大佬们指点指点. 2.zook ...
- IIS将应用程序池配置为在计划时间执行回收 (IIS 7)
将应用程序池配置为在计划时间执行回收 您可以通过以下方法执行此过程:使用用户界面 (UI).在命令行窗口中运行 Appcmd.exe 命令.直接编辑配置文件或编写 WMI 脚本. 如下只介绍用户界面U ...