2017-10-12 72 views
0

为了充分披露,我是一名电气工程师,软件不是我的强项。我想建立一个CAN分析器。硬件非常简单,一个连接到微控制器的CAN收发器。我在挣扎的地方是如何将它与电脑连接。选择USB接口?

我的下跪反应是使用FTDI芯片将串行转换为USB。这在计算机端很容易编程,数据可以以流方式异步到达。另外,FTDI还有USB设备的驱动程序。问题是串行连接无法维持CAN速度并传输数据。充其量,我将不得不缓冲微型数据,然后将其发送到计算机。

我的第二个想法是我可以在微控制器上设置一个USB堆栈。这将消除串行链路的物理瓶颈。理论上,这完成了上述所有内容。我动摇的地方并不知道这种链接的实际限制。 USB 2.0应该能够维持CAN速度而不会出现问题,但是我所使用的所有串行终端都只能达到115200.这是一个实际的限制,或者如果我直接与驱动程序交谈,速度可能会提高得更快?

是否有一个USB链接可以像虚拟通信端口一样易于使用,但可以本地维持CAN速度?

回答

2

如果实现在115200波特/ bps的速率可以超过

CAN具有为1Mbps的最大比特率(https://www.orionbms.com/manuals/utility/acc_canbus_baud.html

的标准UART波特率单位是在微控制器虚拟COM bps(每秒比特)和simulataneously baud因为假定1符号具有1比特https://electronics.stackexchange.com/questions/9264/what-standard-uart-rates-are-therehttps://learn.sparkfun.com/tutorials/serial-communication/rules-of-serial

FTDI USB到UART芯片具有3MBaud(3Mbps的)(http://www.ftdichip.com/Support/Knowledgebase/index.html?whatbaudratesarechievabl.htm)的最大波特率,因此它使用实现的USB协议栈时是可能的FTDI芯片超过CAN

的115200个以及还有1Mbps的微控制器的USB接口(CDC-ACM设备类)上的虚拟COM波特率可以更高的CF增加Virtual COM port or using raw endpoints?

LUFA stackhttp://www.fourwalledcubicle.com/LUFA.php)具有虚拟COM端口的实现(CDC-ACM(虚拟串行)类驱动器)for Atmel MCU

在UART /串口(包括FTDI芯片)可能是因为传输错误的问题一般过高的数据速率......

也看到http://www.wormwood.net/avrbaudcalc.php的时钟频率和UART传输速率的关系