因为老板认为wifi连接的方式传输数据太慢,想通过USB传输来实现与硬件的连接,所以通过android客户端作为主设备,终端硬件作为从设备。其中收到数据的处理和 下发设置帧的生成与wifi连接的方式都相同,就不赘述。本篇主要谈 usb的数据传输。
数据传输流程:需要软件、硬件、驱动程序的共同配合
硬件部分:USB主控制芯片 (集成在计算机主板上,负责USB主机的功能实现)
USB HUB芯片 (集成在计算机主板上,或者可以由外设USB HUB来实现,负责扩展USB接口数量)
USB功能设备芯片 (集成在USB设备中, 完成传输的核心器件)
软件部分:USB主机程序 (用户可以直接操作,常常具有人机交互页面,标准USB鼠标和标准USB键盘除外)
USB总线驱动程序 (负责USB主机程序的请求响应)
USB主控制器驱动程序(负责数据传输的事务处理)
USB功能设备程序(负责USB设备的核心功能实现)
USB下发数据
1)USB主机程序准备好待下发的数据,并将数据保存在USB发送断点的数据缓冲区,然后向USB总线驱动程序发送IO请求包(IRP),也就是数据传输请求。
2)USB总线驱动程序响应USB主机程序的数据传输IO请求包(IRP),将其中数据转化为相应的USB事务处理格式,然后将该数据处理向下传递给USB主控制器驱动程序
3) USB的主控制器驱动程序对每个接收到的事物进行处理,转化为一系列的事务处理队列
4) USB主控制器将帧或者小帧为单位的事务处理队列以信息包的形式向外发送。按照规定的传输方式(块传输,控制传输,中断传输,同步传输)在USB总线上 传输
5)外设USB芯片接收到总线的信息。通过SIE引擎自动解码出信息包,将其保存在指定USB端点的数据缓冲区,供USB设备处理
USB上传数据 与下发类似,整个流程正好反过来。
四种传输方式
中断传输 一般用于传输少量或中量数据,常应用于USB鼠标 USB键盘需要进行及时的人机交互,要求设备响应快,有固定的事务处理周期,对数据的需求低,不适用于本次项目。
同步传输 适合于传输大量的,速率恒定的对服务周期有要求的数据,对正确性没有严格要求。常用于音视频设备,对数据正确性有一定容忍
控制传输适合于传输少量,严格要求传输正确性,对传输时间、传输速率和实时性均无要求,
块传输
适合于传输大量的数据,要求传输的正确性,对传输时间速率实时性无要求。
该项目中 主要待传输的数据有:
硬件设置/查询帧(host to device):数据量小,要求实时性高,不定期发送,属于控制信息,准备采用控制传输的方式
硬件查询响应回复帧 (device to host):数据量小,要求实时性高,收到查询帧后需要立即回复,准备采用控制传输的方式
功率谱帧 POA帧 TDOA帧 录音帧 IQ帧 (device tohost):,数据量大有一定的正确性,采用块传输的方式