阅读:1583回复:3
d12的数据的收发疑问.....????????
请问:我现在的板子是通了,可是对收数据(PC发数据,下微机接受数据)也行。可就是发数据(上位机接受数据)不行。用上位机的调试程序时,它好像一直死在那儿,不停的等待数据,good_link灯也不停的闪,可就是收不到数据。
中断程序是这样的: void main_txdone(void) { unsigned char len,i; D12_ReadLastTransactionStatus(5); // for(i=0;i<10;i++) // {if(bNoRAM) // EpBuf=idtin; // else // MainEpBuf=idtin; // } len = ioSize - ioCount; if(len == 0) { if(bEPPflags.bits.dma_state == DMA_PENDING) bEPPflags.bits.setup_dma ++; else bEPPflags.bits.dma_state = DMA_IDLE; } else { if(len > 64) len = 64; if(bNoRAM) len = D12_WriteEndpoint(5, len, EpBuf + ioCount); else len = D12_WriteEndpoint(5, len, MainEpBuf + ioCount); ioCount += len; } } 这是主端点的中断发送程序。原来他可以不停的发.他没有//..后的一段程序。这是我加的。因为我将我要传给上位机的数据保存在了idtin[]数组中了。 他原来这程序好像是作为dma使用的。在protodam.c文件中还有 void setup_dma_request()等子函数。我现在将其作为一般的端口操作,与这些有关系吗???? d12的数据的发送接受不是在对应端口的中断中用 D12_WriteEndpoint( endp, len, * buf)写入缓冲区 D12_ReadEndpoint( endp, len, * buf)从缓冲区读出 不就行了吗??? 我是初手还请多多指教!!!!谢谢 |
|
沙发#
发布于:2003-04-28 11:28
我也碰到这种情况,如果谁能解决,请告诉一声!
|
|
板凳#
发布于:2003-04-28 18:03
在USB初始化函数
void set_configuration(void) 中,设置 IN 端点有效 D12_COMMAND = 0x05; D12_COMMAND = 0xfa;// 设置 IN 缓冲区有效 这样就可以直接读取 IN 端点了,只是第一次读入0字节, 第二次读入的是有效数据,这是 D12 IN 端点双缓冲结构决定的。 在 IN 端点响应函数中正常发送数据即可。 |
|
地板#
发布于:2005-01-11 15:41
在USB初始化函数
void set_configuration(void) 中,设置 IN 端点有效 D12_COMMAND = 0x05; D12_COMMAND = 0xfa;// 设置 IN 缓冲区有效 我试了,这样好象也不行啊, |
|