HID读写过程

HIDUSB的上、下位机之间相互读写时,并不是直接通信的,而是经过各自的buffer.

如下图所示:

HID读写过程_第1张图片

 

上位机向下位机写数据:

step1:      当点击Writ HID按键后,上位机首先将要写的数据写入PC的驱动buffer中;

step2:      然后PC的驱动再将buffer中的数据写入下位机USB-SIEbuffer中,进而触发下位机的中断;

step3:      下位机的USB中断程序将SIEbuffer中的数据取出,最后在firmware中进行处理。

USB trace中可以看到如下图所示

 

 

会有两个OUT包发出,第一个是上位机给驱动buffer,第二个是驱动buffer给下位机硬件buffer

上位机Write HID的程序如下图:

HID读写过程_第2张图片

 

上位机读取下位机数据:

step1:      下位机将要发送的数据准备好:

step2:      根据自己设定的发送条件进行判断,满足发送条件,将要发送的数据写入下位机自身的SIE buffer中;

step3:      上位机发出读取指令,驱动先从下位机SIE中取出数据,然后UI程序再从驱动中取出数据。

                                                                       

step1

HID读写过程_第3张图片

step2

 

首先将要发送的数据准备好(IN_DATAh函数中),然后在主函数中判断发送条件,当条件满足时将准备好的数据发送到下位机SIE buffer中。

如下图所示:

HID读写过程_第4张图片

此时上位机还没有读取数据,但下位机因已满足firmware自己编写的发送条件,已将待发送数据送至SIE buffer。所以会出现一个IN包。

 

上位机再按下Read HID按键后,数据被读至上位机,如下图所示:

HID读写过程_第5张图片

此时第二个IN包表示数据传输至上位机。

你可能感兴趣的:(HID读写过程)