串口读字节,读出的数据全是零。[求助]

_delay_cycles(50000); while(CH376FileOpen(FileName)!=USB_INT_SUCCESS); TotalCount = 2000; /* 准备读取总长度 */ while ( TotalCount )/* 如果文件比较大,一次读不完,可以再调用CH376ByteRead继续读取,文件指针自动向后移动 */ { if ( TotalCount > sizeof(buf) ) i = sizeof(buf); /* 剩余数据较多,限制单次读写的长度不能超过缓冲区大小 */ else i = TotalCount; /* 最后剩余的字节数 */ s=CH376ByteRead( buf, i, &RealCount ); /* 以字节为单位读取数据块,单次读写的长度不能超过缓冲区大小,第二次调用时接着刚才的向后读 */ while(s==USB_INT_SUCCESS); TotalCount -= (UINT8)RealCount; /* 计数,减去当前实际已经读出的字符数 */ if (RealCount < i )/* 实际读出的字符数少于要求读出的字符数,说明已经到文件的结尾 */ { break; } VS1003_SPI_TxFrame(buf, 250); }

CH376FileClose(FALSE);? 。字节读出的buf全是0,读的是个MP3格式的文件。。还有CH376ByteRead的用法对吗

程序一直停在这 while(s==USB_INT_SUCCESS);一直等不到对的返回值。求解释。


首先确认你之前磁盘初始化、打开文件都是正常的,读的话你先读少一点,是不是你读取得长度大于你的文件长度?另外,你到CH376ByteRead函数里监控一下卡在哪边?


函数一直卡在等中断那里,另外,我初始化中 WriteCH376Cmd(CMD_SET_USB_MODE);//设置为usb模式 _delay_cycles(10); WriteCH376Data(0x06); 他的返回值CMD_RET_SUCCESS我也一直没有读到,但是后面可以创建可以写数据,而且说明上也是说选择性读取这个,我就没有读他,,创建,写数据都没有问题了,就是读数据中断等不到。


设置模式这个命令与测试命令的操作是一样的,先发一个命令、然后是发一个数据会返回一个数据。如果没有返回值说明你的读函数有问题啊?那你测试命令能通过吗?


从初始化到u盘的创建文件和写文件都没有正常使用,前提是屏蔽了这段的读返回值: WriteCH376Cmd(CMD_SET_USB_MODE);//设置为usb模式 _delay_cycles(10); WriteCH376Data(0x06);

然后就是在CH376ByteRead的时候一直等不到中断。


读返回值是每一步必要的操作,用于验证单片机与CH376通讯的正确性。你最好做一下测试命令发送0x55返回0xAA,发送0xAA返回0x55。


。我上一句打错了。。55返回是aa。然后发CMD_SET_USB_MODE。读不到CMD_RET_SUCCESS,所以我没有读这个(说明上面说,可以不用读),然后运行CH376FileCreate。CH376FileOpen,CH376ByteWrite,都可以正常运行,但是 CH376ByteRead无法读出里面的数据,中断一直返回flase(一直等不到中断),我不知道是CH376ByteRead的用法不对还是怎么的。这个问题已经好几天了。求帮助


读的流程与写是类似的,首先读不到CMD_RET_SUCCESS肯定是不正常的,其次你CH376diskmount必须正确通过。


CH376diskmount已经正确通过了。我通过串口发了CMD_SET_USB_MODE确实读不到CMD_RET_SUCCESS该怎么办?


那你可以先用我们的串口调试软件看一下能否读文件?UploadImages/20141158592519.rar


是376这个模块直接通过类似232这样的模块通过uart直接于上位机连接吗?


将CH376的串口脚引出,经过TTL转232电平变换,直接连接电脑,用10楼软件测试一下。


我的电脑串上了232,插上了u盘,发送任何指令都是检测超时。任何指令都没有应答。


你先电脑上串口自发自收试一下?检查一下串口连线,然后设置串口波特率9600,先不插U盘进行测试命令和设置模式。


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