当前位置: 代码迷 >> 驱动开发 >> 关于上位机通过USB与DSP通信的有关问题
  详细解决方案

关于上位机通过USB与DSP通信的有关问题

热度:104   发布时间:2016-04-28 10:06:16.0
关于上位机通过USB与DSP通信的问题
最近在做相关的项目,了解到USB通信的基本过程是先通过枚举找到所需的设备,然后打开设备,进行通信。做到现在遇到一些问题,有点疑惑,请大神指导!
1、关于如何通信
        一、查了一些资料,无非都是通过SetupDiGetClassDevs,SetupDiEnumDeviceInterfaces,SetupDiGetDeviceInterfaceDetail等方式枚举设备,找到自己的设备,然后通过CreateFile打开,用WriteFile和ReadFile或者DeviceIoControl来读写。
        二、还有一种枚举方式如下:
连接了设备的 HUB 在 HOST 查询其状态改变端点 时返回对应的 bitmap,告知HOST 某个PORT状态发生了改变。
   ? 主机向 HUB 查询该PORT的状态,得知有设备连接,并知道了该设备的基本特性。  
   ? 主机等待(至少 100mS)设备上电稳定,然后向 HUB 发送请求,复位并使能该PORT。 
   ? HUB执行PORT复位操作,复位完成后该PORT就使能了。现在设备进入到defalut状态,可以从Vbus获取不超过 100mA 的电流。主机可以通过 0地址与其通讯。
   ? 主机通过0地址向该设备发送get_device_descriptor标准请求,获取设备的描述符。
   ? 主机再次向 HUB 发送请求,复位该PORT。 
   ? 主机通过标准请求 set_address给设备分配地址。 
   ? 主机通过新地址向设备发送 get_device_descriptor标准请求,获取设备的描述符。 
   ? 主机通过新地址向设备发送其他 get_configuration请求,获取设备的配置描述符。
   ? 根据配置信息,主机选择合适配置,通过 set_configuration请求对设备而进行配置。这时设备方可正常使用。
我现在很疑问,第二种方法是在USB协议里看到的,个人理解第一种是上位机软件对USB设备的操作,第二种是开发USB驱动程序时严格定义的,不知道理解的对不对,还有就是,我现在在上位机对USB接口操作,即第一种方法,请问打开设备后就可以直接读写了吗?还要做哪些配置?需要对端点(endpoint)指定吗?
------解决思路----------------------
引用:
我现在在上位机对USB接口操作,即第一种方法,请问打开设备后就可以直接读写了吗?还要做哪些配置?需要对端点(endpoint)指定吗?

你说的的第一种方法在操作系统加载配置设备驱动程序过程中已经完成了第二种方法/USB规范要求的各种配置步骤。
所以,直接发读写和控制请求给设备就可以完成对设备的控制了。 
  相关解决方案