CH374U+Atmega64带外部RAM错误

[Emot]4[/Emot] 试了好多次......没能在M64下使用外部32KRAM进行U盘读写,一直都是只能复制FF个字节的数据,希望能给个ICC的程序演示一下使用外部RAM读写374的例子......使用模拟并口的方式。救命[Emot]6[/Emot]

这个应该是你硬件设计上面的问题,建议你去仔细查下你的硬件设计。


// get_descr(0x01);//获取设备描述符 // 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);//设置地址

// 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;//有多个接口 } 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的一些标准请求? 这些资料可以在USB规范中找到


M64只要MCUCR寄存器的一位写1就可以访问外部RAM了。 不知道你说的是什么意思。一次只能复制0XFF个字节怎么理解你这句话?请详细的说明


搞定!,是RAM器件有问题,换块同样的板子就可以了


只有登录才能回复,可以选择微信账号登录