如何理解CAN通信的线与

以下是我自己在学习CAN通信时遇到的问题以及自己浅显的理解,下面分享给大家。

相信大家在初学CAN通信的时候都会看到CAN通信的线与机制,即总线上只要有一个节点发显性电平0,那么此时总线就是0状态,只有所有节点都发隐性电平1时总线才是1状态。
如果只从计算机执行与和与运算的角度理解,那结果是显然的。但是在CAN通信中逻辑0和逻辑1是代表了具体的电压的,不可能说线与就线与,比如总线同时有节点发0和1,相与后是逻辑0,此时总线上CAN_H是3.5V,CAN_L是1.5V,那么为什么会得到这样的电压呢?
相信大家一定会说是硬件电路实现了这一操作,我们可以类比I2C,没错的确是电路上实现了线与。
我们先来看I2C如何实现线与:
在这里插入图片描述I2C
线与,从字面上理解就是,有0(低电平)即0,全1(高电平)才1,
我们知道I2C总线上MCU和各节点都只输出低电平和高阻态(可以理解为断路),而总线上的高电平由上拉电阻实现,如上图SDA线和SCL线都外接一个电阻R然后在与Vcc相连。
我们就以SDA线来分析(因为时钟线SCL只由主机控制),按照基本的电路知识我们知道,当主机和从机只要有一个输出为低电平时,电流从Vcc流入输出低电平的那个端口,此时SDA线为低电平。只有当主机和从机都输出高阻态时(都断开),SDA线相当于测Vcc的电压,因此才是高电平。
这样我们就从电路上理解了I2C如何实现线与。但是CAN呢?
在这里插入图片描述
就上面这个图,假设两个节点同时发送,节点一发0(CANH为3.5V,CANL为1.5V),节点2发1(CANH和CANL都为2.5V),按照分析I2C的方法,是不可能得到线与的结论的,那么是怎么实现线与的呢?对,正是CAN收发器,它帮我们实现了线与。
到这里我们就可以得出结论,CAN通信的线与并不是向大家说的简单的类比I2C,而是其通过更加复杂的电路实现的。
到这里,对于兴趣不大的同学,其实没必要继续了解CAN收发器如何实现线与机制,我们知道它做了这个事情就行了。
下面以收发器TJA1050为例,浅显讲解其如何实现线与。
首先其手册上给的原理图如下,
在这里插入图片描述

为了分析方便我们将其简化到纸上,如下图,
在这里插入图片描述

假设节点2已经发了隐性电平(CANH和CANL都为2.5V),
对节点1来说,当,

  1. mos1和mos2均关闭,CANH和CANL均测节点1的0.5Vcc处的电压,因此,CANH=CANL=2.5V,此时,节点1发隐性电平,总线为隐性;
  2. . mos1和mos2均打开,CANH接节点1的Vcc,电流从节点1的Vcc流到节点2的0.5Vcc,因此,CANH=5V。CANL接GND,电流从节点2的0.5Vcc流到节点1的GND,因此,CANL=0V。此时,节点1发显性电平,总线为显性。
    因此,线与成立。

至于上面所说,CANH=5V,CANL=0V而不是3.5V和1.5V,可能是由于控制了mos管并未完全导通而存在压降。

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: CAN通信是一种用于实现微控制器之间的高速数据传输的通信协议。51单片机(也称为STC单片机)可以通过CAN总线与其他设备进行通信。CAN总线是一种双线制的通信系统,由CAN发送器和CAN接收器组成。 在CAN通信中,可以使用标准帧和扩展帧进行数据传输。标准帧用于传输11位的标识符,扩展帧可以传输29位的标识符,这使得CAN通信可以支持更多的设备和更大的数据量。 为了在51单片机中实现CAN通信,首先需要连接CAN收发器和CAN控制器。然后,程序员需要编写代码来控制CAN收发器和CAN控制器之间的数据传输。这包括设置CAN收发器的通信速率、初始化CAN控制器的寄存器以及配置CAN消息的发送和接收。 一旦CAN通信的硬件和软件设置完成,51单片机可以发送和接收CAN消息。发送CAN消息时,程序员需要设置消息的标识符、数据长度以及数据内容。接收CAN消息时,程序员需要检查CAN接收缓冲区,以判断是否有新的CAN消息到达,并读取相应的数据。 通过CAN通信,51单片机可以实现与其他设备的实时数据交换。这对于控制系统、汽车电子以及工业自动化等应用非常有用。CAN通信具有高可靠性、高带宽以及抗干扰能力强的特点,使得51单片机成为许多应用中的理想选择。 ### 回答2: 51单片机CAN通信是指使用51单片机通过CAN总线与其他设备进行通信的一种方式。CAN(Controller Area Network,控制器局域网络)是一种快速、可靠的串行总线通信协议,广泛应用于汽车电子、工业自动化等领域。 51单片机CAN通信主要包括以下几个方面的内容: 1. CAN总线:CAN总线是一种双线制的串行通信线,其中包含CAN_H和CAN_L两个信号线。CAN总线具有抗干扰能力强、传输速率高、可靠性好等特点,因此在工业控制领域得到广泛应用。 2. 51单片机:51单片机是一款常用的低成本、低功耗的单片机,具备对CAN通信的支持。它可以通过CAN收发器与CAN总线相连接,实现与其他CAN设备的通信。 3. CAN控制器:51单片机通过内部的CAN控制器与CAN总线连接。CAN控制器负责处理接收和发送CAN数据帧,控制数据的传输和接收。 4. 编程:对于51单片机CAN通信,需要通过编程来实现。通过设置CAN控制寄存器和CAN速率寄存器,配置CAN通信参数,如波特率、滤波器等。然后通过发送和接收函数,实现与其他设备之间的数据交换。 5. 通信协议:CAN通信协议是指在CAN总线上进行数据交换时所采用的一种规范。它定义了数据帧的格式、报文的优先级、错误检测和纠正等。根据具体应用需求,可以选择使用标准CAN协议(CAN 2.0A/B)或扩展CAN协议(CAN FD) 综上所述,51单片机CAN通信是一种使用51单片机与其他设备进行串行通信的方法。通过使用CAN总线、CAN控制器和编程配置,可以实现与其他设备之间的数据交换。这种通信方式在工业控制、汽车电子等领域具有广泛的应用前景。 ### 回答3: 51单片机CAN通信是指使用51单片机来实现CAN总线通信。 CAN(Controller Area Network)是一种广泛应用于汽车、工业控制等领域的串行通信协议。CAN总线具有高可靠性、高实时性和高容错性的特点,能够在复杂的电磁环境中稳定传输数据。 在51单片机中,可以通过使用外部的CAN控制器芯片来实现CAN通信。通过与CAN控制器芯片的连接,51单片机可以实现CAN通信的发送和接收功能。 要实现CAN通信,首先需要初始化CAN控制器芯片,在51单片机中设置CAN通信的波特率、报文格式等参数。然后可以使用相应的函数来发送和接收CAN数据。 在发送数据时,可以将要发送的数据封装成CAN数据帧,并通过相应的函数将数据发送到CAN总线上。在接收数据时,可以通过循环读取CAN控制器接收到的数据,并进行相应的处理。 通过51单片机实现CAN通信可以应用于许多领域,比如汽车电子系统中的ECU(Engine Control Unit)通信、工业自动化中的设备联网等。 总之,51单片机可以通过与CAN控制器芯片的连接来实现CAN总线通信,通过相应的函数和设置参数,可以实现CAN数据的发送和接收,为各个领域的应用提供了稳定可靠的通信手段。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值