问一下关于制作一个USB接口手柄的问题这个手柄式用来控制船只模拟
这个手柄式用来控制船只模拟的,有大概6个操纵杆,每个操纵杆都对应产生一个模拟信号作为输出。而且需要用一个USB口作为连接的端口。想问下这个手柄的电路需要用到些什么主要的原件呢?需要用到微处理器么?怎样才实现一个USB口输出多个信号呢?我在这方面不是很懂,希望大家给点意见,或是有哪些书或是资料网站可以给我借鉴的都行啊!谢谢了~
USB的电缆有四根线,两根传送的是5V的电源,另外的两根是数据线。功率不大的外围设备可以直接通过USB总线供电,而不必外接电源。USB总线最大可以提供5V 500mA电流,并支持节约能源的挂机和唤醒模式。 USB提供了四种传输方式,以适应各种设备的需要。这四种传输方式分别是: 控制传输方式:控制传输是双向传输,数据量通常较小,主要用来进行查询、配置和给USB设备发送通用的命令。控制传输主要用在主计算机和USB外设中端点0之间。 等时传输方式:等时传输提供了确定的带宽和间隔时间。它被用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传送率的即时应用中。例如进行语音业务传输时,使用等时传输方式是很好的选择。 中断传输方式:中断方式传送是单向的并且对于主机来说只有输入的方式。中断传输方式主要用于定时查询设备是否有中断数据要传送,该传输方式应用在少量的、分散的、不可预测的数据传输。、游戏杆和鼠标就属于这一类型。 大量传输方式:主要应用在没有带宽和间隔时间要求的大量数据的传送和接收,它要求保证传输。打印机和扫描仪属于这种类型。 在开发USB设备时通过设置接口芯片中相应的寄存器使端点处于不同的工作方式。 USB的物理协议规定了在总线上传输的数据格式,一个全速的数据帧有1500字节,而对于低速的帧有187字节。帧的作用是分配带宽给不同的数据传送方式。 在USB2.0中又增加了几种类型的包以满足高速传输的需要。其中data类型增加了DATA2和MDATA,handshake类型增加了NYET,special类型则增加了ERR,SPLIT,PING,Reserved。 事务是在主机和设备之间不连续地数据交换。一个事务通常由主机开始,一般分三个阶段,第一阶段发送token包,第二阶段发送是data包(可以向上也可以向下),在数据包传送完之后,就会由设备返回一个handshake包。 USB的驱动程序和以往的直接跟硬件打交道的Win95的VxD(Virtual DeviceDriver)驱动程序不同,它属于WDM(Windows DriverModel)类型的,Win98、Win2000等操作系统均支持该类型的驱动程序。WDM首先定义了一个基本的核心驱动程序模型,处理所有类型的数据,使驱动程序模型的内核实现更加的固定。WDM驱动程序还是一种分层的程序结构,可以看做是WindowsNT驱动程序的改进,WDM驱动程序支持即插即用、电源管理和WMI(Windows ManagementInstrumentation)特性。Win98和Win2000提供了一系列的系统驱动程序,它们具有为许多标准类型设备服务所需的所有基本功能。 当客户端程序通过一个USB管道发送或接收数据时,它首先会调用Win32API,API会发送一个IRP到USB设备驱动程序。USB设备驱动程序的任务就是把客户端的请求通过一个管道发送到外设合适的端点。为了实现这个任务,USB设备驱动程序会递交请求给总线驱动程序,总线驱动程序可以把这些请求转变成事务,然后将这些事务组合成帧在总线上传输。 通常一些设备都需要开发者写一个核模式的驱动程序来使硬件正常工作。在核模式下?驱动程序通过IRP(I/O Request Packet)来组织和操作一些由其他部分发过来的要求和命令。而IRP又是通过URB(USB Request Blocks)来实现的。但对于一些HID(Human Interface Device)的USB设备,象键盘、鼠标和游戏操纵杆之类的设备可以被操作系统自动识别并且支持,开发者不需要再另写驱动程序。