ch375初使化疑問?

我用ch375Libinit()時(shí), CH375GetVer()=0x30,可是CH375Init()=0xff, 其他如CMD_DISK_INIT 動(dòng)作正常,為何會(huì)這樣? 另ExecCommand無(wú)中斷回應(yīng), unsigned char ExecCommand( unsigned char cmd, unsigned char len ) { unsigned char i, j, status; unsigned char data *buf; CH375HM_INT_EN = 0; CH375HM_INDEX_WR( 0 ); delay2us(); CH375HM_DATA_WR( cmd ); delay2us(); CH375HM_DATA_WR( len ); delay2us(); if ( len ) { i = len; buf = (unsigned char *)&mCmdParam; do { CH375HM_DATA_WR( *buf ); buf ++; } while ( -- i ); } mIntStatus = 0xFF; CH375HM_INT_EN = 1; CH375HM_STA = 0; while ( mIntStatus == 0xFF ); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^==========>程序停在這,請(qǐng)問為什麼會(huì)這樣?

1.給頭文件中ch375Libinit()函數(shù)中的if ( CH375GetVer( ) < CH375_LIB_VER ) return( 0xFF );屏蔽掉看能不能正常操作. 2.命令沒有發(fā)下去,檢查下硬件連線有沒有問題,時(shí)序和地址有沒有問題.


不行喔!我這是在return( CH375Init( ) ); 這里回傳0xff 另外在執(zhí)行 i=CH375FileCreate();會(huì)回傳0x1f


庫(kù)初始化都沒有成功,對(duì)文件進(jìn)行操作是不可能成功的,對(duì)CH375初始化沒有成功,你在測(cè)試命令成功后,設(shè)置Ch375的工作模式,看模式可設(shè)置成功了.


初始化成功了,是因?yàn)橹暗幕貍髦蹈袷讲徽_的關(guān)系所以誤判了,CMD_Set_USB_Mode=6,也成功了, 但是DISK_INIT return 0x15,DISK_Query_Status return 0x1F, 這是什麼原因?


i=CH375LibInit(); printf("LibInit value = %02X\n",(unsigned short)i); ====> return 0x00 OK mInitINT(); while (!set_usb_mode( 6 )) ; =====>return 0x00 OK while (1) { CH375_WR_CMD_PORT( CMD_DISK_INIT); printf("mIntStatus = %02X\n",mIntStatus); ====>return 0x15 ? mDelay100mS( ); mDelay100mS( ); i=CH375DiskQuery(); printf("Disk Query Status = %02X\n",(unsigned short)i); ====>return 0x1F ? for ( i = 0; i < 5; i ++ ) { mDelay100mS( ); printf( "Ready ?\n" ); if (CH375DiskReady() == ERR_SUCCESS) ====> return 0x00 OK { printf("Disk Ready!!\n"); break; }else { printf("Disk Not Ready!!\n"); } } ...... 就是對(duì)Disk下指令就會(huì)有錯(cuò)誤訊號(hào)


用我們足程序庫(kù)操作的話,大體步驟是: 1、庫(kù)的初始化:CH375LibInit( ),這步中包含了設(shè)置模式6,也就是下面不需要再set_usb_mode( 6 ) 2、檢測(cè)U盤插入:CH375DiskConnect( ); 3、延時(shí)幾百毫秒,等待U盤穩(wěn)定; 4、檢查U盤是否準(zhǔn)備好:CH375DiskReady( ),CH375DiskReady( )能正常通過的話,后面的操作一般都不會(huì)有什么問題; 5、CH375DiskReady( )之后,可以進(jìn)行其它文件相關(guān)操作。 你最好不要即用子程序庫(kù)中間又加自己?jiǎn)为?dú)往下發(fā)命令碼,以為有些命令發(fā)完之后,沒有去獲取的話,可能造成后面操作不正常的。 還有就是U盤的初始化,子程序做的比自己往下發(fā)命令完善的多,中間加了不少出錯(cuò)處理的。


還是不行,程序如下 i=CH375LibInit(); ====>return 0x00 OK printf("LibInit value = %02X\n",(unsigned short)i); mInitINT(); while ( 1 ) { while (CH375DiskConnect()!= ERR_SUCCESS) ; ====>return 0x00 OK mDelay100mS( ); mDelay100mS( ); for ( i = 0; i < 5; i ++ ) { mDelay100mS( ); if (CH375DiskReady() == ERR_SUCCESS) =====>return 0x00 OK break; } strcpy( mCmdParam.Create.mPathName, "http://PINTEK.TXT"); i=CH375FileCreate(); mStopIfError( i ); ====> return 0x1F False

CH375FileCreate()仍然無(wú)法正常執(zhí)行


這樣,你看下你的單片機(jī)的磁盤緩沖區(qū)DISK-BASE-BUF,你測(cè)試下看有沒有問題


我是用貴公司的模擬板在做實(shí)驗(yàn), 程序不大, 使用89S52( code size < 8K) CH375HF6.H: #ifdef EN_SEC_SIZE_AUTO UINT16X CH375vSectorSize; <=====這里有修改 #else #define CH375vSectorSize 512 #endif PUINT8X pDISK_BASE_BUF; <=====這里有修改

CH375HM.C unsigned char xdata DATA_BUF[ 512 * 64 ] _at_ 0x0100; <=====這里有修改 unsigned char xdata *buffer _at_ 0x8100; <=====這里有修改

磁盤緩沖區(qū)DISK-BASE-BUF,沒有摸擬器不好測(cè)試

用Keil complier時(shí)會(huì)有下面的錯(cuò)誤信息, Device處改為89C55, Memory Model:Large仍然會(huì)出現(xiàn)下面信息 *** WARNING L14: INCOMPATIBLE MEMORY MODEL MODULE: ..\..\MCS51\FILELIB6\CH375HF6.LIB (CH375DSZ) MODEL: SMALL


那你程序編譯之后的代碼是多少?按照你說的8K的話,可能用我們的庫(kù)程序空間不夠,除非你外擴(kuò)ROM才可以。至于出現(xiàn)了上面的警告的話,是因?yàn)槲覀儙?kù)在編譯的時(shí)候是采用的SMALL的模式來編譯的,而不是采用LARGE模式編譯,所以會(huì)出現(xiàn)上面的警告。


Program Size: data=99.5 xdata=33358 code=8153 =====〉(<8K)


這份是測(cè)試程序, 所以內(nèi)容很簡(jiǎn)單 void main(void ) { unsigned char i, c, SecCount; unsigned long OldSize; unsigned short NewSize, count;

LED_OUT = 0; mDelay100mS( ); mDelay100mS( ); LED_OUT = 1; mInitSTDIO( ); i=CH375LibInit(); printf("LibInit value = %02X\n",(unsigned short)i); mInitINT(); while ( 1 ) { i = 0xFF; while (i != ERR_SUCCESS) { i = CH375DiskConnect(); printf("Disk Connect detect = %02X\n",(unsigned short)i); } mDelay100mS( ); mDelay100mS( ); LED_OUT = 0; for ( i = 0; i < 5; i ++ ) { mDelay100mS( ); if (CH375DiskReady() == ERR_SUCCESS) { printf("Disk Ready!!\n"); break; } } i = CH375DiskSize( ); mStopIfError(i ); printf( "Disk Total Size = %u MB \n", (unsigned int)( mCmdParam.DiskSize.mDiskSizeSec * ( CH375vSectorSize / 512 ) >> 11 ) );

strcpy( mCmdParam.Create.mPathName, "\\TEST.TXT"); i=CH375FileCreate(); mStopIfError( i ); printf( "Close\n" ); mCmdParam.Close.mUpdateLen = 0; i = CH375FileClose(); mStopIfError( i ); } }


如果你是拿我們的評(píng)估版的話,那么,你的RAM空間溢出了,我們375評(píng)估版上面的RAM是32K,將你的DATA-BUF減小試下看可以不可以


確實(shí)如此,減小了以后就沒有錯(cuò)誤信息了, CH375FileCreate()也可以正常開啟 可是CH375DiskSize()會(huì)回傳不正確


"因?yàn)槲覀儙?kù)在編譯的時(shí)候是采用的SMALL的模式來編譯的,而不是采用LARGE模式編譯" 我用的試FILELIB5.lib,在調(diào)用CH375前編譯內(nèi)容:Program Size: data=96.6 xdata=1557 code=37941 用的已經(jīng)是large方式,請(qǐng)問如何處理才能正常調(diào)用lib?


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

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