最近重新看了一下USB的资料,看协议上说的中断传输只能用作IN传输,但现在看以前写的一个程序仿佛是使用了中断传输,数据从上位机发送到设备了。
这程序是44B0+D12实现上位机与设备的通信,使用中断传输
D12程序.rar
(4.01 KB)
//端点描述符
{
UsbEndpDescSize,
UsbEndpDescType,
0x81,
UsbEndpInterrupt, //值为3,对应着中断传输
16,
0,
10
},
{
UsbEndpDescSize,
UsbEndpDescType,
0x1,
UsbEndpInterrupt, //值为3,对应着中断传输
16,
0,
10
},
//D12的端点1的out中断
void ep2_int_proc()
{
U8 size;
U8 Ep2OutBuf[16];
read_last_tr_stat(2);
size = read_ep(2, Ep2OutBuf, 16);
if(size!=0) //接收上位机发来的数据,控制相应的LED状态
{
if(Ep2OutBuf[0]==0xfe)
ShowLed(2);
if(Ep2OutBuf[0]==0xfd)
ShowLed(4);
if(Ep2OutBuf[0]==0xfb)
ShowLed(8);
}
}
//D12的端点1的in中断
void ep3_int_proc()
{
d12_set_epstat(3, D12EpStall);
}
结果:通过上位机软件发送相应的数据给设备,的确是能正常控制LED,这知否代表了主机用中断传输方式实现了out传输 |