使用CMD0H_DISK_QUERY与CMD0H_DISK_CAPACITY指令都是一样,大于4G的存储器就显示接近4G的容量,剩余容量也不对了,只有小于4G的移动存储器才能正确读出总容量与剩余容量,是不是CH376的一个bug啊?
查看: 4850
回复: 6
为何CH376获取大于4G的U盘容量就会发生错误?
热门产品 :
CH641: PD及无线充电专用MCU
你可以把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以上就会溢出。
再次谢谢各位的帮助!
请勿发布广告和违法内容, 代码可以选择编辑器代码语言格式, 更易他人阅读帮助您, 或者留下联系方式,以便更好更快服务您
只有登录才能回复,可以选择微信账号登录