坦白说,我是一个电气工程师,软件不是我的强项。我想给自己制造一个罐头分析仪。硬件相当简单,一个与微控制器相连的CAN收发器。我在挣扎的地方是如何把它和电脑连接起来。
我的本能反应是使用FTDI芯片将串行转换成USB.这很容易在计算机端编程,数据可以以流的方式异步到达。此外,FTDI有USB设备的驱动程序。问题是串行连接不能支持CAN,可以加速和流数据。充其量,我必须将数据缓冲在微计算机上,然后将其发送到计算机。
我的第二个想法是我可以在微控制器上建立一个USB协议栈。这将消除串行链路的物理瓶颈。从理论上讲,这完成了上面的一切。我犹豫的地方是不知道这种联系的实际局限性。USB2.0应该能够保持CAN的速度没有问题,但所有的串行终端,我工作过的只有115200。这是一个实际的限制吗?或者,如果我直接和司机交谈的话,这个速度会被推得更快吗?
是否有一个像虚拟通信端口一样容易使用的USB链路,但可以在本机内维持can速度?
发布于 2017-10-12 12:32:15
如果在微控制器上实现Virtual,则可以超过115200波特/bps速率
CAN的最大比特率为1 1Mbps ( baud.html )。
标准UART波特率的单位是以bps (位每秒)为单位,并同时使用baud,因为假定一个符号有1位( https://electronics.stackexchange.com/questions/9264/what-standard-uart-rates-are-there,https://learn.sparkfun.com/tutorials/serial-communication/rules-of-serial )。
FTDI USB到UART芯片的最大波特率为3 to (3 1Mbps )( http://www.ftdichip.com/Support/Knowledgebase/index.html?whatbaudratesarechievabl.htm ),因此FTDI芯片有可能超过CAN的115200和1 1Mbps。
当使用在微控制器的USB接口( CDC-ACM设备类)上实现虚拟COM的USB协议栈时,波特率可以提高( cf Virtual COM port or using raw endpoints? )。
LUFA stack ( http://www.fourwalledcubicle.com/LUFA.php )有一个用于Atmel MCU的虚拟COM端口(CDC(虚拟串行)类驱动程序)的实现。
通常情况下,在UART /串行(包括FTDI芯片)上过高的数据速率可能会因为传输错误而产生问题。
时钟速率和UART传输速率的关系也见http://www.wormwood.net/avrbaudcalc.php。
https://stackoverflow.com/questions/46707254
复制相似问题