CH375用庫時讀寫文件正常,但因為自己要用到文件系統(tǒng),用了UINT8 mReadSector( UINT32 iLbaStart, UINT8 iSectorCount, UINT8X *oDataBuffer ),在執(zhí)行一次讀64個字節(jié)之后正常,但當循環(huán)第二次的時候,就死在c = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */一直就讀不到管腳變低的狀態(tài)!有大俠們碰到這個問題的請告知一下。
出現(xiàn)這種情況可能是你發(fā)送READ_GO的命令沒有正常發(fā)送未產(chǎn)生中斷。
UINT8 mReadSector( UINT32 iLbaStart, UINT8 iSectorCount, UINT8X *oDataBuffer ) { UINT16 mBlockCount; UINT8 c; CH375_WR_CMD_PORT( CMD_DISK_READ ); /* 從USB存儲器讀數(shù)據(jù)塊 */ CH375_WR_DAT_PORT( (UINT8)iLbaStart ); /* LBA的最低8位 */ CH375_WR_DAT_PORT( (UINT8)( iLbaStart >> 8 ) ); CH375_WR_DAT_PORT( (UINT8)( iLbaStart >> 16 ) ); CH375_WR_DAT_PORT( (UINT8)( iLbaStart >> 24 ) ); /* LBA的最高8位 */ CH375_WR_DAT_PORT( iSectorCount ); /* 扇區(qū)數(shù) */ for ( mBlockCount = iSectorCount * 8; mBlockCount != 0; mBlockCount -- ) { c = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( c == USB_INT_DISK_READ ) { /* 等待中斷并獲取狀態(tài),請求數(shù)據(jù)讀出 */ CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); /* 從CH375緩沖區(qū)讀取數(shù)據(jù)塊 */ c = CH375_RD_DAT_PORT( ); /* 后續(xù)數(shù)據(jù)的長度 */ while ( c -- ) *oDataBuffer++ = CH375_RD_DAT_PORT( ); CH375_WR_CMD_PORT( CMD_DISK_RD_GO ); /* 繼續(xù)執(zhí)行USB存儲器的讀操作 */ } else break; /* 返回錯誤狀態(tài) */ } if ( mBlockCount == 0 ) { c = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( c== USB_INT_SUCCESS ) return( 0 ); /* 操作成功 */ } return( c ); /* 操作失敗 */ } 函數(shù)原型是這樣的,這個READ_GO的命令也是正常發(fā)送的,當是但循環(huán)第二次就卡住了,不知道還有什么其它的原因?
問題找到了,謝謝hcn提醒,原來不小心把CH375_WR_CMD_PORT( CMD_DISK_RD_GO );寫成了讀數(shù)據(jù)命令,另外我想問下大家有沒有用CH375移值FATFS文件系統(tǒng),我目前在移植碰到很多問題,希望大家共同討論,研究!
你用的單片機是什么?我司有提供基于CH375芯片常用單片機的LIB文件可以使用。
STM32,我們現(xiàn)在用的就是你們沁恒的庫,但是現(xiàn)在我們需要用CH375移植FATFS文件系統(tǒng),通過FATFS可以把U盤數(shù)據(jù)與NAND FLASH數(shù)據(jù)互聯(lián)!我想問的是你們有這方面的移植嗎,有范例嗎?謝謝
不好意思沒有這樣的范例
有CH375移植FATFS范例嗎?目前我通過CH375往U盤里寫數(shù)據(jù),差點把U盤搞壞了,所以想看看大家有沒有成功移植的范例!
有一個基于CH375芯片的FAT文件系統(tǒng)庫,但是需要銷售人員開權(quán)限才能提供。你可以和銷售人員聯(lián)系下。技術(shù)支持這邊沒有權(quán)限開通。
這個需要購買嗎?這個是針對FATFS文件系統(tǒng)的嗎?
這個你需要電話聯(lián)系銷售人員了。
您好,請問銷售人員的電話是多少?
02552638355/377/388/399