can收发器 rx_CANOpen系列教程03 _CAN收发器功能、原理及作用

a84aa36e27dd180116456d6ec38f2c01.png

1写在前面

前面文章是从大方向介绍了CAN网络,让大家对CAN网络有一定的认识。本文将范围缩小,讲述整个CAN网络其中的一个CAN收发器。如下图标记出来的部分:

59b18459e0c9412ae06998829938d1cc.png

本文结合众多初学者容易产生的疑问来讲述CAN收发器相关的知识点,大概有如下几点:

什么是CAN收发器?

CAN总线差分信号

CAN收发器芯片和485芯片差异

2

什么是CAN收发器?

CAN收发器在整个CAN网络中所处的位置如上图所示。CAN收发器就是一块类似232或485的转换芯片,它的主要功能是将CAN控制器的TTL信号转换成CAN总线的差分信号。

2.1什么CAN控制器TTL信号?

现在的CAN控制器一般都与MCU集成在一起,其发送和接收TTL信号就是MCU引脚(高或低)信号。

以前还有独立的CAN控制器,一个CAN网络节点会包含三块芯片:MCU芯片、CAN控制器、CAN收发器。现在是将前两者集成在一起了(看文章开篇图片)。

3

CAN总线差分信号

CAN总线信号从CAN收发器出来,为「两线」「差分」信号,用隐形代表逻辑1,显性代表逻辑0。

c2ea8f1e12f1d99703e4dafafed03b76.png

1.CAN收发器两线

芯片引脚CAN_H、CAN_L

2.CAN_H和CAN_L电压

电压的大小根据芯片型号而定,一般常见的CAN收发芯片有3.3V和5V两种芯片。

如上图,为5VCAN收发芯片,在逻辑0和逻辑1时电压情况:

逻辑0时:

显性,CAN_H=3.5V,CAN_L=1.5V;

逻辑1时:

隐性,CAN_H=2.5V,CAN_L=2.5V;

当然,3.3V电压芯片的总线电压原理类似。而实际应用中,总线电压并非绝对的像上面说的3.5V、2.5V、1.5V这种电压,会受到导线电阻、外界干扰等影响。

3.隐性和显性

学过生物都知道,基因有隐性和显性。隐性的基因实际存在,但不会表现出来。有显性的基因就会表现出来。

这里CAN总线隐性信号和显性信号道理一样,当总线两种信号都有时,总线表现出来的就是显性信号。

提示:我们这里说的显性和隐性信号,指的是总线传输的bit位信号。

所以,CAN总线平时空闲表现为隐性状态。如果想要发送的信号为隐性位,那么总线才会呈现出来隐性。否则,只要其它有一个节点发送显性信号,你这个节点发送出来的隐性信号就无效。

4.CAN收发器R引脚

CAN收发器R引脚就是与CAN控制器接收相连的引脚。如下图:

ad1337744fc396489ec9666e5edc79d5.png

R引脚的信号是表示总线当前的信号,用于控制器实时监测总线信号。主要两个目的:

A.监测其它节点发送出来的信号:别人给它发送数据;

B.监测自身节点发送出去的信号:自己发送是否失败。就像上面说的,自己发送一个隐形信号,结果监测出来是显性信号,那就说明是别人在发送数据。

4

CAN收发器芯片和485芯片差异

CAN通信和485通信一样,属于半双工。但是,为什么CAN总线相比485通信不管在速度和稳定性上都具有明显优势呢?

4.1总线利用率

CAN收发器工作原理与485具有较大差异。从上面的差分信号可以看得出来,两种芯片同时存在,只有显性信号有效,而不会影响总线传输。简单来说就是CAN总线具有自动仲裁功能,这样就提高了总线的利用率。

RS485总线是一种常规的通信总线,它不能够做总线的自动仲裁,也就是不能够同时发送数据以避免总线竞争,所以整个系统的通信效率必然较低,数据冗余量较大,对于速度要求高的应用场所不适应用RS485总线。

提示:

CAN总线没有被发送出去的隐性信号,会由CAN控制器后续发送出去。这里牵涉到CAN总线优先级的问题,后续进一步讲述。

当然,CAN相比485具有明显优势,主要原因还是在于CAN控制器。

4.2可以不使用CAN收发器吗?

UART可以直接通过TX连接对方的RX引脚,利用TTL信号进行通信,那么CAN也可以吗?

答案:单向传输可以,双向传输就不行。

原因很简单,上面说了,CAN控制器会实时监测发送出去的信号是否正确。也就是说TX要与RX信号一致才行,否则CAN控制器认为你发送失败。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos php fpm 停止_如何关闭php-fpm进程?

因为你是编译的,可以在源码中复制php-fpm的init文件到系统中:cp -f sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm然后就可以使用以下命令启动、停止、重启和重新加载php-fpm了:service php-fpm startservice php-fpm restartservice php-fpm…

Mongodb聚合函数

插入 测试数据 for(var j1;j<3;j){ for(var i1;i<3;i){ var person{Name:"jack"i,Age:i,Address:["henan","wuhan"],Course:[{Name:"shuxue",Score:i},{Name:"wuli",Score:i}]}db.DemoTest.Person.insert(pers…

php rename函数_php rename函数怎么用

PHP rename()函数用于重命名文件或目录&#xff0c;语法“rename(文件旧名称,新名称,句柄环境)”&#xff0c;使用用户指定的新名称更改文件或目录的旧名称&#xff0c;并且可以根据需要在目录之间移动&#xff1b;成功时返回True&#xff0c;失败时返回False。php rename()函数…

Spring Data Redis实战之提供RedisTemplate

为什么80%的码农都做不了架构师&#xff1f;>>> 参考&#xff1a; http://www.cnblogs.com/edwinchen/p/3816938.html 本项目创建的是Maven项目 一、pom.xml引入dependencies <dependency><groupId>org.springframework.data</groupId><artif…

php映射,PHP实现路由映射到指定控制器

自定义路由的功能&#xff0c;指定到pathinfo的url上,再次升级之前的脚本SimpleLoader.phpclass SimpleLoader{public static function run($rulesarray()){header("content-type:text/html;charsetutf-8");self::register();self::commandLine();self::router($rule…

Commonjs规范及Node模块实现

前面的话 Node在实现中并非完全按照CommonJS规范实现&#xff0c;而是对模块规范进行了一定的取舍&#xff0c;同时也增加了少许自身需要的特性。本文将详细介绍NodeJS的模块实现 引入 nodejs是区别于javascript的&#xff0c;在javascript中的顶层对象是window&#xff0c;而在…

thinkphp3 php jwt,ThinkPHP5 使用 JWT 进行加密

- 使用 Composer安装此扩展- 代码示例<?php /*** [InterCommon-接口公用]* Author RainCyan* DateTime 2019-08-12T16:38:080800*/namespace app\hladmin\controller;use think\Controller;use \Firebase\JWT\JWT;class InterCommonController extends Controller {private…

JavaWeb网上图书商城完整项目--day02-14.登录功能的login页面处理

1、现在注册成功之后&#xff0c;我们来到登录页面&#xff0c;登录页面在于 在登录页面。我们也需要向注册页面一样对登录的用户名、密码 验证码等在jsp页面中进行校验&#xff0c;校验我们单独放置一个login.js文件中进行处理&#xff0c;然后login.jsp加载该js文件 我们来看…

php多线程是什么意思,多线程是什么意思

线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中的实际运作单位&#xff0c;而多线程就是指从软件或者硬件上实现多个线程并发执行的技术&#xff0c;具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程&#…

Activity中与ListActivity中使用listview区别

一.Activity中与ListActivity中使用listview区别&#xff08;本身没多大区别&#xff0c;只是ListActivity在listview的显示上做了一些优化&#xff09;Activity中使用Listview步骤&#xff1a;1.xml布局中,ListView标签id可以任意取值如&#xff1a;<ListView andro…

basic knowledge

Position 属性&#xff1a;规定元素的定位类型。即元素脱离文档流的布局&#xff0c;在页面的任意位置显示。 ①absolute &#xff1a;绝对定位&#xff1b;脱离文档流的布局&#xff0c;遗留下来的空间由后面的元素填充。定位的起始位置为最近的父元素(postion不为static)&…

python爬虫之scrapy框架

Scrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架。 其可以应用在数据挖掘&#xff0c;信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的&#xff0c; 也可以应用在获取API所返回的数据(例如 Amazon As…

Linux学习第三步(Centos7安装mysql5.7数据库)

版本&#xff1a;mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar 前言&#xff1a;在linux下安装mysql不如windows下面那么简单&#xff0c;但是也不是很难。本文向大家讲解了如何在Centos7下如何安装mysql5.7版本,如果有什么问题和错误的地方&#xff0c;欢迎大家指出。 注释&…

linux oracle删除恢复数据恢复,Linux下Oracle误删除数据文件恢复操作

检查数据文件的位置如下&#xff1a;SQL> select name from v$datafile;NAME--------------------------------------------------------------------------------/u01/app/Oracle/oradata/marven/system01.dbf/u01/app/oracle/oradata/marven/undotbs1.dbf/u01/app/oracle/…

数据库如何处理数据库太大_网络数据库中的数据处理

数据库如何处理数据库太大Before learning the data manipulation in a network model, we are discussing data manipulation language, so what is the data manipulation language? 在学习网络模型中的数据操作之前&#xff0c;我们正在讨论数据操作语言&#xff0c;那么什…

oracle12537错误,ORA-12537:TNS:connection closed错误处理方法

1.ORA-12537:TNS:connection closed错误处理过程检查监听正常&#xff0c;Oracle服务也是正常启动的&#xff0c;但是登录不进去。2.解决方案1. cd $ORACLE_HOME/bin/ 进入bin目录2. ll oracle-rwxrwxrwx. 1 ora12 dba 323762222 6?. 14 19:12 oracle3.chmod 6571 oracle 更改…

操作系统中的死锁_操作系统中的死锁介绍

操作系统中的死锁1.1究竟什么是僵局&#xff1f; (1.1 What exactly is a deadlock?) In a multiprogramming environment, there may be several processes with a finite number of resources. A process may request another resource while still holding some of the oth…

centos配置ipv6地址

首先打开网站注册一个账号&#xff1a;http://www.tunnelbroker.net创建一个ipv6的地址&#xff1a;把下面的命令在linux上执行一遍&#xff0c;这个方式是临时生效&#xff0c;重启网卡和重启系统自动失效。把上面的命令保存到一个配置文件中&#xff1a;vi /etc/sysconfig/ne…

NFS部署及优化(一)

NFS部署及优化&#xff08;一&#xff09;一、NFS的基本概念NFS network file system 网络文件系统必然通过网络通信来实现文件的访问和写入&#xff0c;所以做这个实验的话最好有两台虚拟机配置:A&#xff1a;一个192.169.50.201为server端B&#xff1a;一个192.169.50.200为…

HDU 4923 Room and Moor(瞎搞题)

瞎搞题啊。找出1 1 0 0这样的序列&#xff0c;然后存起来&#xff0c;这样的情况下最好的选择是1的个数除以这段的总和。然后从前向后扫一遍。变扫边进行合并。每次合并。合并的是他的前驱。这样到最后从t-1找出的那条链就是最后满足条件的数的大小。Room and Moor Time Limit:…