[Emot]4[/Emot] 試了好多次......沒(méi)能在M64下使用外部32KRAM進(jìn)行U盤(pán)讀寫(xiě),一直都是只能復(fù)制FF個(gè)字節(jié)的數(shù)據(jù),希望能給個(gè)ICC的程序演示一下使用外部RAM讀寫(xiě)374的例子......使用模擬并口的方式。救命[Emot]6[/Emot]
這個(gè)應(yīng)該是你硬件設(shè)計(jì)上面的問(wèn)題,建議你去仔細(xì)查下你的硬件設(shè)計(jì)。
// get_descr(0x01);//獲取設(shè)備描述符 // printf("device\n"); Request.Req.bmRequestType=0x80; Request.Req.bRequest=0x06; Request.Req.wValue=0x0001; Request.Req.wIndex=0x0000; Request.Req.wLength=0x1200; if(get_descr_ex()==1) { for(i=0;i!=data_buf[0];i++) printf("%02x ",(unsigned int)data_buf[i]); printf("\n"); } else printf("get device descr failed\n"); set_addr(5);//設(shè)置地址
// get_descr(0x02);//獲取配置描述符 printf("config\n"); Request.Req.bmRequestType=0x80; Request.Req.bRequest=0x06; Request.Req.wValue=0x0002; Request.Req.wIndex=0x0000; Request.Req.wLength=0x0900; if(get_descr_ex()==1) { for(i=0;i!=data_buf[0];i++) printf("%02x ",(unsigned int)data_buf[i]); printf("\n"); if(data_buf[4]!=0x01)flag_interface_2=1;//有多個(gè)接口 } else printf("get config descr failed\n"); printf("config 2\n"); if(data_buf[2]>0x09) { flag_config_2=1; Request.Req.bmRequestType=0x80; Request.Req.bRequest=0x06; Request.Req.wValue=0x0002; Request.Req.wIndex=0x0000; Request.Req.wLength=0x0000|((unsigned int)data_buf[2]<<8); if(get_descr_ex()==1) { for(i=0;i!=data_buf[2];i++) printf("%02x ",(unsigned int)data_buf[i]); printf("\n"); flag_config_2=0; } else printf("get device descr again failed\n"); }
程序中的
Request.Req.bmRequestType=0x80; Request.Req.bRequest=0x06; Request.Req.wValue=0x0001; Request.Req.wIndex=0x0000; Request.Req.wLength=0x1200;
是什么意思
USB的一些標(biāo)準(zhǔn)請(qǐng)求? 這些資料可以在USB規(guī)范中找到
M64只要MCUCR寄存器的一位寫(xiě)1就可以訪問(wèn)外部RAM了。 不知道你說(shuō)的是什么意思。一次只能復(fù)制0XFF個(gè)字節(jié)怎么理解你這句話?請(qǐng)?jiān)敿?xì)的說(shuō)明
搞定!,是RAM器件有問(wèn)題,換塊同樣的板子就可以了