MCP2551是UART到CAN的转换器吗?


12

我想使用我的计算机制作250 kbit / s的CAN总线嗅探器。经过研究,我发现MCP2551是一种用于CAN物理层的电压电平调节器。请记住,我想知道此设置是否可以工作。我只想记录交换的消息以进行自动测试,而不是进行交流:

PC <-> USB-UART(也许是CP2102,因为我已经有一个)<-> MCP2551 <-> CAN总线

如果不是,什么样的信号必须输入MCP2551才能使我成为总线的一部分?

Answers:


14

您可以这样做,但是在CAN总线上获得的将是使用CAN电压电平的UART。如果要与总线上的CAN设备通信,则必须向MCP2551提供CAN协议消息。收听方面相同:CAN消息与UART格式有很大不同,以致UART不知道如何处理它们。您至少会一直存在帧错误,并且不会了解消息的内容。
下图显示了CAN消息的结构:

在此处输入图片说明

收发器没有,周围有很多具有CAN接口的微控制器。MCP2551是为这些而设计的。在过去,我们使用了具有4个CAN接口的NXP LPC2294。它们每个都需要一个MCP2551连接到CAN总线。恩智浦最近的控制器包括LPC1800系列,该系列的所有成员均支持CAN。


我完全忘记了UART的开始/停止位以及可能的一些CAN“开始/结束位”情况。我可能会尝试找到一种使用FTDI作为gpio在PC上使用CAN堆栈的解决方案,最终将其传输到MCP2551
2012年

3
@rnunes-不只是开始/停止位。没有这些,UART传输只是一个8位字节。CAN消息要复杂得多,包括寻址,优先级和错误检查。您无法将两者进行比较。
stevenvh 2012年

但是使用FTDI时,我将一点一点地工作(基本上,这是一个非常快的USB <-> GPIO),而不是像UART那样逐字节工作。我已经在寻找那些CAN MCU,但是我现在想花点儿钱(这是一个学生爱好项目),而且我已经有了FTDI。如果我得出的结论是FTDI无法做到这一点,我将尝试使用CAN MCU。
2012年

堆栈将负责处理所有内容(例如,位填充)并将其一点一点传输到MCP2551。我现在遇到的唯一问题是FTDI延迟,因为我需要它快速且有规律,但是稍后再进行测量。
2012年

1
@rnunes-但是CP2102(SiLabs,不是FTDI)产生的是字节而不是位。一会儿你不能停止它。您既需要CP2102将您的微控制器与USB接口连接,又需要一个支持CAN + MCP2551的微控制器。或者也可以充当USB设备的微控制器。这样就不需要CP2102。
stevenvh 2012年

7

我已经在MPSSE模式下使用FT2232H(忘记UART),MCP2515和MCP2551 制作了USB / CAN接口。MCP2515是您在这里缺少的关键部件。好好研究它的作用。它是实际的CAN控制器,它执行成帧,ACK,校验和生成和验证,消息过滤以及标准要求CAN节点执行的其他不那么明显的事情。如果您想使用嗅探器,则MCP2515具有仅侦听模式,可确保总线上没有传输。MCP2551只是一个简单的物理层适配器,类似于用于RS-232的MAX232或用于RS-485的ADM485。

现在,由于FTDI MPSSE技术基本上不支持中断(我相信它仅在幕后使用批量USB传输),因此该体系结构还远远不够完善,因此我必须经常轮询控制器以获取新消息。这给USB主机控制器带来了很大的负担,但仍然不能保证不会丢失任何消息(如果启用“溢出模式”,MCP2515最多可以在内部存储2条收到的消息,如果没有,则只能存储一条)。更好的解决方案是使用具有内置CAN和USB外设的合适微控制器,例如STM32F105(103不能同时使用USB和CAN)。请参见此项目,以获取有关此想法的有效实施方案。stevenh建议的LPC18xx也可以使用,但是LPC17xx可能更便宜且更容易找到。


在这种情况下,集中存储不是问题,但是是的,理想的解决方案是使用带有CAN控制器的MCU作为CAN消息缓冲区。从现在开始,我将尝试使用您编写的第一个设置。谢谢
rnunes 2012年

+1使用FTDI芯片直接与不带uC的CAN控制器进行通信非常简单。显然,FTDI诞生了FT221X,这是专用于USB的SPI桥接器。(USB到I2C的型号也不同。)
Nick Alexeev

2

由于您了解我的问题后想收听现有的CAN总线,因此您根本无法使用UART。CAN和UART标记完全不同。

从理论上讲,您可以查看MCP2551发出的CAN接收线并解码CAN流量。这并非易事,但理论上是可能的。如果没有专用的CAN硬件,您将必须比CAN比特率快几倍的采样速度,然后在软件中对该比特流进行解码。您可能需要以大约1 Mbit / s的速度记录才能解码250 kbit / s的CAN。

使用微控制器会容易得多。PIC 18F2580和其他类似处理器均内置有CAN外设。硬件执行所有位级解码并接收整个CAN帧。然后,处理器可以通过其UART将收到的CAN帧发送到您的PC。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.