PC从51单片机接收高速采样数据,求教通过USB接口完成通信的可行方法

时间:2022-04-09 19:47:55
如题:
下位机工作时,将产生大量采样数据(每秒近五千次,若可有效通信还可能加快),其采样频率较大程度地决定产品性能。
上位机与之通信以前都走串口,但当前PC中的串口已面临淘汰,而且其速度和稳定性也都难以达到要求,故急求USB通信的可行方法。恳请哪位有实际经验的高手相助。

请同时指教上位机软件(C#2008开发)和下位机设备(C51)皆可用的办法。

注:使用c#2008进行USB通信,和C51发送数据到USB端口,这两种技术我都不了解。

14 个解决方案

#1


如果希望使用USB 接口和PC机通信,给51加一块USB接口芯片就行了.

先到网上找找,选什么型号的USB接口芯片,看看它的传输速度能不能满足的的要求

#2


直接找带USB接口的MSC-51兼容单片机,便于你的开发。一般厂方都会有相应的开发示例,包括USB的。
不过现在这种单片机也未必便宜,如果时间允许,可以考虑换ARM Cotex-M架构的CPU,外设全,功能强大。


PC上的就必须用DriverStudio进行USB的驱动开发了,不过现在这个技术也很成熟。建议去www.DriverDevelop.com论坛,里面有专门的USB开发版块,是较早进行USB开发交流的论坛了。

#3


支持2楼

#4


每秒5000次,就是usb的通讯能力也未必胜任。

#5


每秒5000次,未必每秒传输5000个数据。单片机可以保存一部分的,只要确保不丢失采样的数据就行。
如果是5000个字节,那就是5KB/S,USB1.1是1.5MB/S,足够的。

#6


如果是5K的数据,那的确可以。

#7


引用 2 楼 shuiyan 的回复:
直接找带USB接口的MSC-51兼容单片机,便于你的开发。一般厂方都会有相应的开发示例,包括USB的。
不过现在这种单片机也未必便宜,如果时间允许,可以考虑换 ARM Cotex-M架构的CPU,外设全,功能强大。


PC上的就必须用DriverStudio进行USB的驱动开发了,不过现在这个技术也很成熟。建议去www.DriverDevelop.com论坛,里面有专门的USB开发版块,是较早进行USB开发交流的论坛了。
STM32 ??

#8


在USB通讯协议上,采用CDC类协议,在PC端不需要任何附加的驱动程序,这一点是比较吸引人的,在工程安装实施的时候,可以省去不少麻烦。
优点是:
1、不需要专门定制的驱动程序,它使用的是Windows内置的usbser.sys
2、低成本。

这里有个例子:
作者采用PIC18F4550作为主控CPU,可以提供8路数字输出,8路数字输入,8路模拟输入
作者提供了单片机的代码和PC机端的Delphi代码。
http://www.sixca.com/eng/articles/usb_cdc/index.html

#9


希望能对你有些帮助。

首先,你提到用USB进行PC和下位机通信,那这里的USB就不仅仅是一个串口定义了,而是从通信到设备的一组串口设备规范。通信规范就分成物理层、传输层;而设备规范根据不同的USB设备来定义(USB鼠标、U盘、打印机等等)。具体的规范文件可以google找或从usb.org来下载。

然后说系统结构:现在常见的USB通信都是Host和Device之间的通信,也就是不对等的通信。Host方做为主控方;Device方做为受控方。当然最新的OTG技术有新的定义,你可以不用考虑。PC上的USB口都是Host接口,所以你的设备只能做成Device。问题是你打算把你的Device做成一个什么设备。如果你准备安装驱动,你可以定义你的设备为自定义设备;如果你不希望安装驱动,可以将设备定义为已知的BOT设备或HID设备。我觉得定义成U盘就不错,简单方便,U盘使用的传输协议一般都是BOT协议,设备协议可以参考SCSI磁盘设备的协议或找个好一点的U盘来跟踪(跟踪工具我一般用Bus Hound)。注意,所有的USB设备有USB组织分配的VID(厂商ID)和厂家自定义的PID(产品ID)。如果你实现的设备只使用一家供货商提供的USB控制芯片,可以商量着借用该控制芯片供货商的VID,并让别人给你指定PID。

最后简单的说一下实现方案:首先物理层上USB1.1的Full Speed是12Mbps(1.5MB/s);USB2.0的High Speed是480Mbps。传输层使用BOT。设备应用层参考U盘。PC工具通过Windows提供的设备读取API来读取设备的采样数据。整个实现从工具到设备都不是很复杂。唯一可能存在问题的地方是,USB控制既要接收PC的命令来回传数据、又要采集数据,是一个双接口工作的芯片,要协调好,不要造成冲突。

#10


都好好看了,待俺试一下先。不要急,甭管谁的方案最终被采用,热心者皆有分。

#11


该回复于2008-10-18 16:43:59被版主删除

#12


我来学习下。。。

#13


学习下。。

#14


这种情况下USB也不可靠,传输距离才这点点,
USB卡来贵,
 换种思路 IPC 工控PC或普通PC,加块PCI AD采集卡,主要是PC机的编程问题了

#1


如果希望使用USB 接口和PC机通信,给51加一块USB接口芯片就行了.

先到网上找找,选什么型号的USB接口芯片,看看它的传输速度能不能满足的的要求

#2


直接找带USB接口的MSC-51兼容单片机,便于你的开发。一般厂方都会有相应的开发示例,包括USB的。
不过现在这种单片机也未必便宜,如果时间允许,可以考虑换ARM Cotex-M架构的CPU,外设全,功能强大。


PC上的就必须用DriverStudio进行USB的驱动开发了,不过现在这个技术也很成熟。建议去www.DriverDevelop.com论坛,里面有专门的USB开发版块,是较早进行USB开发交流的论坛了。

#3


支持2楼

#4


每秒5000次,就是usb的通讯能力也未必胜任。

#5


每秒5000次,未必每秒传输5000个数据。单片机可以保存一部分的,只要确保不丢失采样的数据就行。
如果是5000个字节,那就是5KB/S,USB1.1是1.5MB/S,足够的。

#6


如果是5K的数据,那的确可以。

#7


引用 2 楼 shuiyan 的回复:
直接找带USB接口的MSC-51兼容单片机,便于你的开发。一般厂方都会有相应的开发示例,包括USB的。
不过现在这种单片机也未必便宜,如果时间允许,可以考虑换 ARM Cotex-M架构的CPU,外设全,功能强大。


PC上的就必须用DriverStudio进行USB的驱动开发了,不过现在这个技术也很成熟。建议去www.DriverDevelop.com论坛,里面有专门的USB开发版块,是较早进行USB开发交流的论坛了。
STM32 ??

#8


在USB通讯协议上,采用CDC类协议,在PC端不需要任何附加的驱动程序,这一点是比较吸引人的,在工程安装实施的时候,可以省去不少麻烦。
优点是:
1、不需要专门定制的驱动程序,它使用的是Windows内置的usbser.sys
2、低成本。

这里有个例子:
作者采用PIC18F4550作为主控CPU,可以提供8路数字输出,8路数字输入,8路模拟输入
作者提供了单片机的代码和PC机端的Delphi代码。
http://www.sixca.com/eng/articles/usb_cdc/index.html

#9


希望能对你有些帮助。

首先,你提到用USB进行PC和下位机通信,那这里的USB就不仅仅是一个串口定义了,而是从通信到设备的一组串口设备规范。通信规范就分成物理层、传输层;而设备规范根据不同的USB设备来定义(USB鼠标、U盘、打印机等等)。具体的规范文件可以google找或从usb.org来下载。

然后说系统结构:现在常见的USB通信都是Host和Device之间的通信,也就是不对等的通信。Host方做为主控方;Device方做为受控方。当然最新的OTG技术有新的定义,你可以不用考虑。PC上的USB口都是Host接口,所以你的设备只能做成Device。问题是你打算把你的Device做成一个什么设备。如果你准备安装驱动,你可以定义你的设备为自定义设备;如果你不希望安装驱动,可以将设备定义为已知的BOT设备或HID设备。我觉得定义成U盘就不错,简单方便,U盘使用的传输协议一般都是BOT协议,设备协议可以参考SCSI磁盘设备的协议或找个好一点的U盘来跟踪(跟踪工具我一般用Bus Hound)。注意,所有的USB设备有USB组织分配的VID(厂商ID)和厂家自定义的PID(产品ID)。如果你实现的设备只使用一家供货商提供的USB控制芯片,可以商量着借用该控制芯片供货商的VID,并让别人给你指定PID。

最后简单的说一下实现方案:首先物理层上USB1.1的Full Speed是12Mbps(1.5MB/s);USB2.0的High Speed是480Mbps。传输层使用BOT。设备应用层参考U盘。PC工具通过Windows提供的设备读取API来读取设备的采样数据。整个实现从工具到设备都不是很复杂。唯一可能存在问题的地方是,USB控制既要接收PC的命令来回传数据、又要采集数据,是一个双接口工作的芯片,要协调好,不要造成冲突。

#10


都好好看了,待俺试一下先。不要急,甭管谁的方案最终被采用,热心者皆有分。

#11


该回复于2008-10-18 16:43:59被版主删除

#12


我来学习下。。。

#13


学习下。。

#14


这种情况下USB也不可靠,传输距离才这点点,
USB卡来贵,
 换种思路 IPC 工控PC或普通PC,加块PCI AD采集卡,主要是PC机的编程问题了