单片机通过CH375读写U盘文件的问题解答

大家好!我已经下载了CH375LIB.ZIP压缩包,然后把里面带的HEX文件直接烧到89c52里面,参考说明搭了一个板子,可是每次加电,375的指示灯状态都不定,并且插上U盘没有任何反应,我换了好几个HEX文件都不行,请问这可能是什么问题?谢谢1

我发邮件,据说里面的HEX文件是串口方式。必须使用那个C文件(修改H文件的路径并包含LIB文件)加H头文件和LIB库编译。

不过我现在到了显示U盘容量错误!2216MB。1G的KINSTON这么显示。128M也这么显示。然后停止在OPEN那里了!(先插U盘,再上点)

还有就是,先上电,再插U盘,显示错误号码:0x82。WCH的人说是供电不好。

再就是想用11.0592的晶振给单片机(ISP下只支持到16M),mInitSTDIO函数怎么改写???

/* 为printf和getkey输入输出初始化串口 */ void mInitSTDIO( )


#define CH375_CMD_PORT_ADDR 0xBDF1 /* CH375命令端口的I/O地址 */ #define CH375_DAT_PORT_ADDR 0xBCF0 /* CH375数据端口的I/O地址 */

这两句话什么意思啊?我不太明白啊,这个地址是什么地址啊,是内存里的地址还是什么啊?能给我解释一下吗?


这是51的总线地址,A0~A15


请求高手传授,CH375并口方式下读写U盘的汇编程序简易流程。公司提供的子程序编译不能通过。


hao


U盘有时连接的上有时连接不上是什么问题啊?


请高手指教: 我调用增强版子程序库 ch375hf6.lib,系统用的at89s52单片机,程序刚刚实现了初始化和检测 等功能,程序一编译就将近8K了,导致后面的功能无法进行; 但是我下在贵公司的一些程序,用的也是89C52,程序空间也应该不够才对的, 请问是什么问题,是我调用的子程序库 有问题吗? 谢谢


你好, 我是USB初学者,我用了贵公司的CH375V,我用的是MSP430F147,在单步执行时,执行完第一个cmd(CMD_GET_STATUS)后;stat_Check的值是0x20而不是0x14,在判断U盘插入与否时,为什么依然还是0x20这个值呢,我用的U盘是清华同方,请问可以不?

// 修改为: WR 0,RO 1,A0 1,CS 0 void cmd(char cd) { P1OUT=cd; P1DIR=0xff; P2OUT&= 0xfe; _NOP(); _NOP(); P2OUT&= 0xf7; _NOP(); _NOP(); P2OUT |= 0x0f; // 修改为: WR 1,RO 1,A0 1,CS 1 _NOP(); P1DIR=0; _NOP(); _NOP(); } //WR 0,RO 1,A0 0,CS 0. void wrd(char data) {P1OUT=data; P1DIR=0xff; P2OUT &=0xfe; _NOP(); _NOP(); P2OUT &=0xfd; _NOP(); _NOP(); P2OUT &=0xf7; _NOP(); _NOP(); P2OUT |= 0x0f; P1DIR=0; _NOP(); _NOP(); }

//WR 1,RO 0,A0 0,CS 0. char re() { char temp; P1DIR=0; P2OUT &=0xfe; _NOP(); _NOP(); P2OUT &=0xfd; _NOP(); _NOP(); P2OUT &=0xfb; _NOP(); _NOP(); temp=P1IN; _NOP(); _NOP(); P2OUT |=0x0f; return(temp); } char Wait_Int() { char temp; temp=P2IN; temp &= 0x10; while (temp!=0) { temp=P2IN; temp &= 0x10; } cmd(CMD_GET_STATUS); temp=re(); return(temp); }

void main() { int len,t=0; long add=211; WDTCTL = WDTPW + WDTHOLD; for(t=0;t<64;t++) { a[t]=t; } t=500; P1DIR=0; //初始化IO口 P2DIR=0x0f; P2OUT|=0x0d; ///WR 1,RO 1,A0 0,CS 1. cmd(CMD_GET_STATUS); stat_Check=re(); //先读一下,让晶振起振 cmd(CMD_CHECK_EXIST); // 检查375工作与否 wrd(0xee); stat_Check=re(); cmd(CMD_RESET_ALL); stat_Check=re();

while(t--); t=0;

cmd(CMD_SET_USB_MODE); //设置模式 stat_Check=re(); wrd(0x06); stat_UsbMode=re(); while(Wait_Int()!=USB_INT_CONNECT); // u盘插上与否 _NOP(); _NOP(); cmd( CMD_DISK_INIT ); // u盘初始化 stat_Init=Wait_Int();

cmd(CMD_DISK_WRITE) ; // 写数据 wrd(i=add); //扇区号 wrd(i=(add>>8)) ; wrd(i=(add>>16)) ; wrd(i=(add>>24)) ; wrd(1); //写1个扇区 for(i=1;i<9;i++) { stat_wr=Wait_Int(); if(stat_wr==USB_INT_DISK_WRITE) { len=64; cmd (CMD_WR_USB_DATA7); //向375写数据 wrd(len); while(len--) { wrd(a[t]); t++; } for(t=0;t<64;t++) { a[t]=t; } t=0; cmd(CMD_DISK_WR_GO); } else break; } if(i==9) stat_wr=Wait_Int(); else stat_wr=0xff; }


返回0x10说明是意外错误,可能是硬件时序错误或受干扰等 请问返回0x10怎么解决,谢谢!


在使用CH375做 USB主机时,编写软件需要哪些函数、头文件和库啊?


下载CH375LIB。ZIP,里面有库,头文件,C文件


我想驱动vista的ntfs文件系统,怎么做?或者怎么找资料? 请高手指点,谢谢。


资料网上应该有,如微软官方;至于怎么做,看完资料,也许就知道了


正在做,问题很大啊


头大啊!


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