bjvid
驱动牛犊
驱动牛犊
  • 注册日期2003-02-21
  • 最后登录2003-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1583回复:3

d12的数据的收发疑问.....????????

楼主#
更多 发布于:2003-04-23 11:15
请问:我现在的板子是通了,可是对收数据(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)从缓冲区读出
不就行了吗???
我是初手还请多多指教!!!!谢谢
一天到晚游泳的鱼
驱动小牛
驱动小牛
  • 注册日期2002-05-08
  • 最后登录2005-04-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-04-28 11:28
我也碰到这种情况,如果谁能解决,请告诉一声!
plasma
驱动小牛
驱动小牛
  • 注册日期2002-02-19
  • 最后登录2008-02-27
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-04-28 18:03
在USB初始化函数
void set_configuration(void)
中,设置 IN 端点有效

D12_COMMAND = 0x05;
D12_COMMAND = 0xfa;// 设置 IN 缓冲区有效

这样就可以直接读取 IN 端点了,只是第一次读入0字节,
第二次读入的是有效数据,这是 D12 IN 端点双缓冲结构决定的。

在 IN 端点响应函数中正常发送数据即可。
jiangliq_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-11 15:41
在USB初始化函数
void set_configuration(void)
中,设置 IN 端点有效

D12_COMMAND = 0x05;
D12_COMMAND = 0xfa;// 设置 IN 缓冲区有效

我试了,这样好象也不行啊,
游客

返回顶部