Answers:
您可以这样做,但是在CAN总线上获得的将是使用CAN电压电平的UART。如果要与总线上的CAN设备通信,则必须向MCP2551提供CAN协议消息。收听方面相同:CAN消息与UART格式有很大不同,以致UART不知道如何处理它们。您至少会一直存在帧错误,并且不会了解消息的内容。
下图显示了CAN消息的结构:
收发器没有,周围有很多具有CAN接口的微控制器。MCP2551是为这些而设计的。在过去,我们使用了具有4个CAN接口的NXP LPC2294。它们每个都需要一个MCP2551连接到CAN总线。恩智浦最近的控制器包括LPC1800系列,该系列的所有成员均支持CAN。
我已经在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总线,因此您根本无法使用UART。CAN和UART标记完全不同。
从理论上讲,您可以查看MCP2551发出的CAN接收线并解码CAN流量。这并非易事,但理论上是可能的。如果没有专用的CAN硬件,您将必须比CAN比特率快几倍的采样速度,然后在软件中对该比特流进行解码。您可能需要以大约1 Mbit / s的速度记录才能解码250 kbit / s的CAN。
使用微控制器会容易得多。PIC 18F2580和其他类似处理器均内置有CAN外设。硬件执行所有位级解码并接收整个CAN帧。然后,处理器可以通过其UART将收到的CAN帧发送到您的PC。