一  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控制器芯片进行详细讲解。

最新文章

  1. C# 复制PDF页面到另一个PDF文档
  2. MyEclipse使用心得:集成和使用Maven的方法
  3. 掌握Thinkphp3.2.0----连贯操作
  4. 【转】linux ar 命令的使用说明那个和例子
  5. Ado.net 通用访问类
  6. SendMessage函数的常用消息及其应用大全
  7. java中replace和replaceAll的区别
  8. Oracle 大数据处理(一)
  9. 基于visual Studio2013解决面试题之1109全排列
  10. 使用python爬虫抓站的一些技巧总结:进阶篇
  11. 将linux的HOME目录下的文件夹名字改回英文
  12. 浅谈.NET,C#三层架构
  13. Flask 扩展 用户会话
  14. oracle拆分一个连续的字符串
  15. kafka简单回顾
  16. 记一次网页超时登录的Bug
  17. Blender 作的鸭脖
  18. lnmp安装总结
  19. JAVA声明一个对象数组
  20. 有符号无符号bit转换

热门文章

  1. 常用邮箱POP3和SMTP服务器 设置
  2. shell中echo基础及高级用法详解-渐入佳境
  3. maven实现compile时将资源目录输出到target中
  4. (第一章第三部分)TensorFlow框架之会话
  5. One-Hot编码(转)
  6. JZ-069-在 O(1) 时间内删除链表节点
  7. LGP3281口胡
  8. 网站SQL注入防御实战
  9. Numpy库基础___五
  10. 程序设计基础·Java学习笔记·面向对象(下)