DSP通过CY7C68001实现USB串口的程序看不明白
我在开发板上使用的USB模块,进行实验,发现有些地方看不明白。求指教!
下面是写入端点6的程序:
case ENDPOINT6:
for(i = 0;i<0x100;i++)
{
epdataw1[i] = i*2;
}
for(i = 0;i<0x50;i=i+2)
{
epdataw[i/2] = epdataw1[i]+(epdataw1[i+1]<<8);
}
/*如果发送小于整数据包的数据时,设置RecievedDataLongth*/
RecievedDataLongth = 0x3f;
/*读当前FIFO的状态,是否已满*/
regValue = *USB_STS;
FifoWriteCnt = 0;
SX2_FifoWrite(ENDPOINT6,&epdataw[0],Fifolong);
if(hshostlink ==TRUE)//2.0标准,高速模式
{
Write_SX2reg(SX2_INPKTEND, 0x06);
}
setupBuff[1] = 0;
/*写0到EP0的计数寄存器,结束本次控制握手*/
Write_SX2reg(SX2_EP0BC, 0);
break;
我想请教的是:1、在计算epdataw时,程序使用了一个左移八位,那不相当于乘以256啊?我算了前几个数据依次是512,772,12568.很明显这与最后通过上位机读出的数据是不符的。上位机读出的数据是0,2,4,6...
2、我试着将SX2_FifoWrite(ENDPOINT6,&epdataw[0],Fifolong);输出至端口6的数组改为epdataw1.输出的结果是0,0,2,0,4,0,6而实际数组为0,2,4,6,8,10...不符,这是为什么啊?
3、程序中,这两段regValue = *USB_STS;
FifoWriteCnt = 0;有作用吗?
4、下面这段话,我百度到说是让FIFO输出的作用,请问是吗?Write_SX2reg(SX2_INPKTEND, 0x06);
多谢各位指教! DSP USB串口扩展 c程序
[解决办法]