周立功的工程师:<br /> 你好.我公司是贵公司的客户,我们现在有一个问题想赐教!<br />我用的是LPC2148,DMA传输模式,上位机用逻辑端点1, 发送2字节数据到下位机.<br />上位机程序.<br /> ret = WriteData214x(1, sendbuf, 2, 1000);<br /> if (ret != 2)<br /> {<br /> MessageBox("逻辑端点 1 发送数据错误!");<br /> return;<br /> } //这里定义了sendbuf[512];<br />ret = ReadData214x(0, &ack, 1, 1000);<br /> if (ret != 1)<br /> {<br /> MessageBox("逻辑端点 1 接收数据错误!");<br /> return;<br /> }<br /> if (ack != 1)<br /> {<br /> MessageBox("逻辑端点 1 应答错误");<br /> return;<br /> }<br />下位机程序.<br />if (bEPPflags.bits.ep1_rxdma == 1)<br /> { <br /> len = USB_DMASetTransLength(2, 2); //配置逻辑端点2的DMA接收数据长度<br /> DISABLE();<br /> bEPPflags.bits.ep1_rxdma = 0;<br /> pSrc = USB_DMAGetBuffer(2);<br /> len = (pSrc[0] << 8) + pSrc[1]; /* 取得需要接收的数据的字节长度 */<br /> <br /> pDst = USB_DMAGetBuffer(3);<br /> a[0]=0x01;<br /> memcpy(pDst,a,1);<br /> len =USB_DMASetTransLength(3, 1);// 配置物理端点3 DMA发送缓冲区大小<br /> USB_DMAStart_IN(3);<br /> <br /> ENABLE();<br /> }<br /> <br /><br />问题:: <br /> 编译后,运行上位机程序出现"逻辑端点 1 接收数据错误!"<br /> 而当我把上面的程序改成<br /> ret = WriteData214x(1, sendbuf, 512, 1000);<br /> if (ret != 512)<br /> {<br /> MessageBox("逻辑端点 1 发送数据错误!");<br /> return;<br /> } //这里定义了sendbuf[512];<br /> 后程序运行完全正常! 如果把WriteData214x 里的函数发送字节个数改成小于512时就会出现错误!<br /> (1) 请问,是不是下位机端点缓冲区设置了512,上位机就只能发送512个字节的包吗?我这里只想发送2个字节的数据.或小于512的包,请问是不是每次都得发送512的包?<br /> (2) 请问WriteData214x是不是有问题?<br />谢谢!! <br /> |
|