我用atmega32和ch376用spi通讯, mInitCH376Host( ); /* 初始化CH376 */ 成功 CH376DiskConnect( ) /* 检查U盘是否连接,等待U盘插入*/ 成功 CH376DiskMount( ) /* 初始化磁盘并测试磁盘是否就绪 */ 就一直失败
请问哪位高人指点下,谢谢了
我用atmega32和ch376用spi通讯, mInitCH376Host( ); /* 初始化CH376 */ 成功 CH376DiskConnect( ) /* 检查U盘是否连接,等待U盘插入*/ 成功 CH376DiskMount( ) /* 初始化磁盘并测试磁盘是否就绪 */ 就一直失败
请问哪位高人指点下,谢谢了
失败返回的错误代码是多少? 重点检查中断引脚和USB信号线部分
CH376DiskMount( ) ok了 现在 CH376FileOpen( "/MY_ADC.TXT" ) 返回错误代码0x22,请问什么原因啊?
如果使用的是SPI接口,那么检查你中断引脚的连接,以及该中断引脚的配置是否正确。
谢谢楼上几位帮我的好人,果然中断引脚没处理好
又碰到问题了,请大虾们指教啊
s = CH376FileOpen( "/MY_ADC.TXT" ); /* 打开文件,该文件在根目录下 */
if ( s == USB_INT_SUCCESS ) { } else if ( s == ERR_MISS_FILE ) { /* 没有找到文件,必须新建文件 *///printf( "Create\n" ); s = CH376FileCreate( NULL ); /* 新建文件并打开,如果文件已经存在则先删除后再新建, 不必再提供文件名,刚才已经提供给CH376FileOpen */ mStopIfError( s ); } else mStopIfError( s ); /* 打开文件时出错 */
然后
s = CH376FileClose( TRUE ); /* 关闭文件,自动计算文件长度,以字节为单位写文件,建议让程序库关闭文件以便自动更新文件长度 */ mStopIfError( s );
这样生成的 MY_ADC.TXT 应该是个空文件才对,可是windows下显示大小有1字节
这个我我们芯片自己更新文件长度的时候故意写了一个字节进去的,方便下次打开文件往里面写数据。会减少寻找FAT表的时间,如果不需要的话,可以再关闭文件之前把文件长度强制更新为0.或者你需要写文件的时候,直接打开往里面去写数据。
哦 谢谢
我也遇到了和楼主一样的问题, CH376DiskMount( ) /* 初始化磁盘并测试磁盘是否就绪 */ 就一直失败 CH376FileOpen( "/MY_ADC.TXT" ) 返回错误代码0x22; 上面说是中断引脚没处理好引起的,可是SPI方式没有用到中断引脚,是悬空的啊; 需要怎么处理吗?
简单的说,也就是中断还没产生,而你去读了中断状态。你检查一下你的程序
现在已经可以打开文件这些操作了。 可是前面的, for ( s = 0; s < 10; s ++ ) { // 最长等待时间,10*50mS mDelaymS( 50 ); if ( CH376DiskMount( ) == USB_INT_SUCCESS )break; } 初始化磁盘并测试磁盘是否就绪,一直没成功,是等到10X50mS以后跳过了
CH376DiskMount( ) 返回 错误代码是多少?
返回代码0x16
楼主,解决了嘛? disk_mount返回0x1F,是什么原因啊?
您好,您可以检查以下几点:
检查U盘的文件格式是否符合手册的需求。
您可以检查一下您的USB走线是否符合要求。
您可以连续测试接口通讯测试多次,以确认接口通讯时正常的。