无驱动USB认证模块在电子商务中的应用
2.2 USB设备启动流程
①USB设备接入USB口,发出连接USB命令。
②主机发出读设备描述符两次。
③主机根据设备描述符—厂商ID、产品ID,启动相应设备驱动程序。
④设备驱动程序初始化USB设备:
a读设备描述符;
b读配置描述符;
c选择接口、端点(管道),确定传输方式。
注意:在发送配置[,接口(1),端点(1),接口(2),端点(2),…,类,厂商等]联合描述表时,各描述表的先后顺序可随意,主机USBD根据描述表类型标识区分各种分描述表。
2.3 固件主程序通信主程序
中断后主程序主要是通过中断事件标志判断并且执行相应的程序代码。主程序流程简图如图3所示。
主程序的示例程序代码见网络补充版(http://fanwen.oyaya.net收集整理)。
2.4 处理主机标准控制请求
由于中断程序是通过USB接口芯片触发的,因此它必须判断是何种中断,是否进行处理等情况。中断程序流程简图如图4所示。
2.5 系统中断程序中断处理代码示例
unsigned char ENDPOINT_A0_FIFO[8];
//判断输入的是SETUP请求,并将其读入缓冲区ENDPOINT_A0_FIFO...
if((ENDPOINT_A0_FIFO[0]&0b01100000)= =0x00){
if(ENDPOINT_A0_FIFO[1]<=0x0C){
(*StandardFunctionTable[ENDPOINT_A0_FIFO[1]])();
return;
}
}
[1]处理主机标准控制请求:
void SetAddress(void){
if(ENDPOINT_A0_FIFO[0]= =0b00000000){
//保存USB地址x80|ENDPOINT_A0_FIFO[2];
}
}
注:SetAddress请求实际可分成三个阶段:第一阶段,Setup包被送至设备;第二个阶段是可有可无的阶段,数据在设备与主机之间传送;第三阶段,状态信息在主机与设备之间传送。
数据与状
《无驱动USB认证模块在电子商务中的应用(第2页)》