OK: 14 Wait Udisk/SD Ready? UdiskInfo: Generic-SD/MMC 1.00 Open OK: 14 从文件中读出的前200个字符是: Error: B4 /****************************/ 电路几乎按资料接的,能连接成功,应该硬件没问题吧?唯一和资料不一样的是v33我接的100nF的电容,资料要求4.7n-20nF。 /***************************/ 出错是在这段程序 while ( TotalCount ) { /* 如果文件比较大,一次读不完 */ if ( TotalCount > sizeof(buf) ) i = sizeof(buf); /* 剩余数据较多,限制单次读写的长度不能超过缓冲区大小 */ else i = TotalCount; /* 最后剩余的字节数 */ s = CH376ByteRead( buf, i, &RealCount ); /* 以字节为单位读取数据块,*/ mStopIfError( s ); TotalCount -= (UINT8)RealCount; /* 计数,减去当前实际已经读出的字符数 */ for ( s=0; s!=RealCount; s++ ) printf( "%C", buf[s] ); /* 显示读出的字符 */ if ( RealCount < i ) { /* 实际读出的字符数少于要求读出的字符数 */ printf( "\n" ); printf( "文件已经结束\n" ); break; } } /*******************************************/ s = CH376ByteRead( buf, i, &RealCount ); 执行完这句返回的是0xB4
0xb4说明文件没有打开, 而OPEN返回的0x14,可能是之前的DISK_MOUNT命令的返回值。 查一下单片机的查询中断函数,看看中断引脚的配置 以及 中断引脚的硬件连接 有没有问题。
我想中断应该没问题的吧?因为没有插U盘的时候停在Wait Udisk/SD,插上优盘后继续往下运行,应该说明中断没问题的,我现在情况是用51调试成功,上面的问题是我用PIC单片调试时出的问题。
等待中断函数用下面的程序测试一下,在查询中断之前延时一段时间测试一下,如果正常 那说明确实是中断引脚的配置问题。
UINT8 Wait376Interrupt( void ) /* 等待CH376中断(INT#低电平),返回中断状态码 */ { UINT32 i; mDelaymS( 100 ); /* 加入长时间延时 */ for ( i = 0; i < 5000000; i ++ ) { /* 计数防止超时,默认的超时时间,与单片机主频有关 */ if ( Query376Interrupt( ) ) return( CH376GetIntStatus( ) ); /* 检测到中断 */ /* 在等待CH376中断的过程中,可以做些需要及时处理的其它事情 */ } return( ERR_USB_UNKNOWN ); /* 不应该发生的情况 */ }
用那个函数也不行,我直接用一管脚测中断,测不到低电平就死循环,结果能够跳出死循环,返回B4,中断应该是有了。我怀疑是不是电源之前我做51测试用的2A5V电源,这次PIC为了方便我用的电脑的USB口取电。。
应该不是USB电源的问题,你把程序打包传上来 看看。
非常感谢您的帮助程序已经发到您签名的邮箱(ljj@wch.cn )中去了。编译软件MPLAB C18,MCUPIC18F4520
顶一下别沉了哦