为何CH376获取大于4G的U盘容量就会发生错误?

使用CMD0H_DISK_QUERY与CMD0H_DISK_CAPACITY指令都是一样,大于4G的存储器就显示接近4G的容量,剩余容量也不对了,只有小于4G的移动存储器才能正确读出总容量与剩余容量,是不是CH376的一个bug啊?

你可以把4G存储器送到计算机上面去,看下读取的容量是多少?我们实际上是按照计算机上面的操作步骤来操作U盘的。应该不会出现你说的现象。


用我们提供的程序库中的CH376DiskCapacity试试


CMD0H_DISK_QUERY命令获取U盘的总扇区数是多少? 还有你的U盘的扇区大小是多少?CH376只支持扇区大小为512字节的存储器


谢谢大家的解答,我是一概按照512字节来计算,难道大于4G的SD卡和U盘每扇区不是512字节?这些卡和U盘在电脑里都能显示正常的容量,8G的卡读出扇区来计算容量正好差一半这样,可能每扇区是1024字节的了。

不知如何获取存储器每扇区的大小?如果无法获取的话,移动硬盘就难搞了,扇区大小千差万别。


一般U盘不是大扇区的,但不能排除,你下载WINHEX软件,用这个软件来打开U盘就可以看到了。另外你把你的程序贴出来看一下。


终于找到问题了,低级错误:变量溢出了!!!

保存总字节数的变量要声明为unsigned long long才行,unsigned long 在4G以上就会溢出。

再次谢谢各位的帮助!


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