我的SD卡是2G的(實際1.8G左右),調(diào)用總?cè)萘亢瘮?shù)返回值為15184,剩余容量返回值為50346741,這些怎么換算啊,感覺直接*512不對的
使用CH376獲取SD容量和剩余容量使用s = CH376DiskQuery( &Size,&Size1);其中Size返回的是剩余容量的扇區(qū)數(shù),Size1返回的是總?cè)萘康纳葏^(qū)數(shù)。容量=扇區(qū)數(shù)*512/1024/1024(MB)
你這Size,Size1就定義為u32可以不,還是得定義成數(shù)組
直接定義Size,Size1為32位unsigned long類型即可。
u8 CH376DiskQuery(u32* DiskFre ) /* */ { u8 s; u8 c0, c1, c2, c3; s = CH376SendCmdWaitInt( CMD0H_DISK_QUERY ); if ( s == USB_INT_SUCCESS ) { /* 參考CH376INC.H文件中CH376_CMD_DATA結(jié)構(gòu)的DiskQuery */ xWriteCH376Cmd( CMD01_RD_USB_DATA0 ); xReadCH376Data( ); /* 長度總是sizeof(CH376_CMD_DATA.DiskQuery) */ xReadCH376Data( ); /* CH376_CMD_DATA.DiskQuery.mTotalSector */ xReadCH376Data( ); xReadCH376Data( ); xReadCH376Data( ); c0 = xReadCH376Data( ); /* CH376_CMD_DATA.DiskQuery.mFreeSector */ c1 = xReadCH376Data( ); c2 = xReadCH376Data( ); c3 = xReadCH376Data( ); *DiskFre = c0 | (u16)c1 << 8 | (u32)c2 << 16 | (u32)c3 << 24; xReadCH376Data( ); /* CH376_CMD_DATA.DiskQuery.mDiskFat */ } else *DiskFre = 0; return( s ); },這是你們提供的函數(shù)啊
版主,能把這個函數(shù)發(fā)過來看看嗎 CH376DiskQuery( &Size,&Size1)
函數(shù)應(yīng)該是一樣的,只是我的多了讀取總扇區(qū)的功能。那你看一下c0、c1、c2、c3的值?DiskFre的值?
這個返回值就是c0、c1、c2、c3拼接而成,我其他一些操作都沒問題的
你的c0、c1、c2、c3返回值是什么?你是怎么監(jiān)控DiskFre的值的?是不是你打印的時候數(shù)據(jù)溢出了。