首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

DSP经过CY7C68001实现USB串口的程序看不明白

2013-06-26 
DSP通过CY7C68001实现USB串口的程序看不明白我在开发板上使用的USB模块,进行实验,发现有些地方看不明白。求

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程序
[解决办法]

引用
1、在计算epdataw时,程序使用了一个左移八位,那不相当于乘以256啊?我算了前几个数据依次是512,772,12568.很明显这与最后通过上位机读出的数据是不符的。上位机读出的数据是0,2,4,6...

看程序epdataw[]是16位的数据,epdataw1[]是8位的,那个左移8位操作是把2个8位的数拼成16的数据.你看下报告描述符里的报告数据是不是16位的

引用
下面这段话,我百度到说是让FIFO输出的作用,请问是吗?Write_SX2reg(SX2_INPKTEND, 0x06);

根据程序猜测是的,是告诉硬件数据以放入FIFO准备就绪,可以扔出去了

引用
2、我试着将SX2_FifoWrite(ENDPOINT6,&epdataw[0],Fifolong);输出至端口6的数组改为epdataw1.输出的结果是0,0,2,0,4,0,6而实际数组为0,2,4,6,8,10...不符,这是为什么啊?

参考1,报告数据是16位的,你扔个0过去它当然会发送0x00,0x00了

引用
3、程序中,这两段regValue = *USB_STS;
 FifoWriteCnt = 0;有作用吗?

仅看这段程序没什么用,不过猜测即使这里没用也是留给DEBUG用的

热点排行