CH374:如何操作才能知道U盤是否寫保護?

IC:CH374 請問:調(diào)用CH374Lib中的哪個函數(shù)能查詢到U盤是否寫保護?

在庫里面沒有提供這個函數(shù),但你可以參考EXAM12,這個例子有檢查U盤是否寫保護的函數(shù)。


/* 檢查U盤是否寫保護, 返回ERR_SUCCESS說明可以寫,返回0xFF說明只讀/寫保護,返回其它值說明是錯誤代碼 */ /* 其它BulkOnly傳輸協(xié)議的命令可以參考這個例子處理,修改前必須了解USB MassStorage和SCSI規(guī)范 */ UINT8 IsDiskWriteProtect( void ) { UINT8 mLength, mStatus, mDevSpecParam; mLength = 0x10; mBOC.mCBW.mCBW_Flag = 0x80; /* 傳輸方向為輸入 */ if ( CH374vRetryCount & (1<<5) ) { /* 根據(jù)子類選擇命令碼,位5為1則USB存儲設備的子類為6 */ mBOC.mCBW.mCBW_DataLen0 = mLength; /* 數(shù)據(jù)傳輸長度 */ mBOC.mCBW.mCBW_CB_Len = 0x06; /* 命令塊長度 */ mBOC.mCBW.mCBW_CB_Buf[0] = 0x1A; /* 命令塊首字節(jié), MODE SENSE(6) */ mBOC.mCBW.mCBW_CB_Buf[1] = 0x00; mBOC.mCBW.mCBW_CB_Buf[2] = 0x3F; mBOC.mCBW.mCBW_CB_Buf[3] = 0x00; mBOC.mCBW.mCBW_CB_Buf[4] = mLength; mBOC.mCBW.mCBW_CB_Buf[5] = 0x00; } else { mBOC.mCBW.mCBW_DataLen0 = mLength; /* 數(shù)據(jù)傳輸長度 */ mBOC.mCBW.mCBW_CB_Len = 0x0A; /* 命令塊長度 */ mBOC.mCBW.mCBW_CB_Buf[0] = 0x5A; /* 命令塊首字節(jié), MODE SENSE(10) */ mBOC.mCBW.mCBW_CB_Buf[1] = 0x00; mBOC.mCBW.mCBW_CB_Buf[2] = 0x3F; mBOC.mCBW.mCBW_CB_Buf[3] = 0x00; mBOC.mCBW.mCBW_CB_Buf[4] = 0x00; mBOC.mCBW.mCBW_CB_Buf[5] = 0x00; mBOC.mCBW.mCBW_CB_Buf[6] = 0x00; mBOC.mCBW.mCBW_CB_Buf[7] = 0x00; mBOC.mCBW.mCBW_CB_Buf[8] = mLength; mBOC.mCBW.mCBW_CB_Buf[9] = 0x00; } mStatus = CH374BulkOnlyCmd( ); /* 執(zhí)行基于BulkOnly協(xié)議的命令,對USB存儲器執(zhí)行MODE SENSE命令 */ if ( mStatus == ERR_SUCCESS ) { /* 操作成功 */ mLength -= mBOC.mCBW.mCBW_DataLen0; /* 操作成功后mBOC.mCBW.mCBW_DataLen0為剩余長度,計算得到實際傳輸長度 */ if ( mLength > 3 ) { /* MODE SENSE命令返回數(shù)據(jù)的長度有效 */ if ( CH374vRetryCount & (1<<5) ) mDevSpecParam = *(pDISK_BASE_BUF+2); /* MODE SENSE(6), device specific parameter */ else mDevSpecParam = *(pDISK_BASE_BUF+3); /* MODE SENSE(10), device specific parameter */ if ( mDevSpecParam & 0x80 ) return( 0xFF ); /* U盤寫保護 */ else return( ERR_SUCCESS ); /* U盤沒有寫保護 */ } return( ERR_USB_DISK_ERR ); } mLength = 0x12; /* 如果真的需要REQUEST SENSE命令的返回數(shù)據(jù),那么此處的長度必須大于0x12 */ mBOC.mCBW.mCBW_Flag = 0x80; mBOC.mCBW.mCBW_DataLen0 = mLength; mBOC.mCBW.mCBW_CB_Len = 0x06; /* 命令塊長度 */ mBOC.mCBW.mCBW_CB_Buf[0] = SPC_CMD_REQUEST_SENSE; mBOC.mCBW.mCBW_CB_Buf[1] = 0; mBOC.mCBW.mCBW_CB_Buf[2] = 0; mBOC.mCBW.mCBW_CB_Buf[3] = 0; mBOC.mCBW.mCBW_CB_Buf[4] = mLength; mBOC.mCBW.mCBW_CB_Buf[5] = 0; CH374BulkOnlyCmd( ); /* 執(zhí)行基于BulkOnly協(xié)議的命令,對USB存儲器執(zhí)行REQUEST SENSE命令 */ return( mStatus ); } 這個是判斷是否寫保護的程序,具體的你可以參考MCS51下面的EXAM12


謝謝兩位,已經(jīng)找到了


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频