求助 lpc2214+ch375

編譯已經(jīng)通過,主程序我只發(fā)送了一個ch375初始化的命令(成功后有燈閃),然后。。。就沒有然后了。燒入芯片flash中,adx竟然運行不了。試了很多次,偶爾有能運行的時候也是返回值錯誤,求解釋[Emot]13[/Emot]

ADX運行不了,可能需要你自己來解決了。


我的意思是我燒別的程序,axd還是能運行的。


這個和我們芯片都沒有關(guān)系,是你的仿真器或者仿真軟件的問題。


經(jīng)過這幾天的觀察,我發(fā)現(xiàn)問題出在插入u盤上。每當(dāng)u盤插入后,act腳就為低,int腳也為低,此時我的板子就“死機”了,(同時仿真器就不工作了),重啟也沒效果,只有將u盤拔下再重啟板子才能恢復(fù)運行。假如是我調(diào)試器設(shè)置的問題,請問能不能給點意見,謝謝了。


那你需要看下你的軟件仿真的時候停在什么位置。估計是你沒有檢測U盤的插入和拔出。


因為設(shè)計時疏忽了,沒有設(shè)置串口輸出模塊,所以我是寫幾句命令就調(diào)一下(單片機控制了一個led燈,按照燈閃爍的速度判斷當(dāng)前返回的數(shù)據(jù)),現(xiàn)在進行到了模式設(shè)置命令(先05,后07,再06,沒有插入u盤情況下已成功返回),后面按我的理解就應(yīng)該是插入u盤然后獲取中斷狀態(tài)吧?現(xiàn)在問題就在這里了,如果不插u盤,那檢測不成功;插入u盤就“死機”了。請問這種情況我應(yīng)該從什么地方入手呢。。。麻煩您給指導(dǎo)一下,謝謝了。


這個沒法幫你查下,你所謂的死機始終沒法判斷問題在什么地方。還有你看下CH375讀取中斷函數(shù)里面是否是死循環(huán)。


之前問題解決了,確實是中斷函數(shù)配置的問題,謝謝樓上大俠指點,現(xiàn)在改好了。程序目前進展到:DaskReady返回成功;然后我發(fā)了DISK_SIZE命令,返回成功,接下來我按375手冊的理解是發(fā)送RD_USB_DATA命令讀取磁盤容量吧? 但是不成功 WRITECMD(DISK_SIZE); i=READDATA(); if(i==USB_SUCCESS) for(j=0;j<8;j++) buf[j]=READDATA(); 以上是這一小段程序,是否寫法有問題?讀出來buf[0]到buf[7]全是0x14 然后我又試了你們提供的子程序庫的DiskSize();返回值是0x82;再次請教大俠


WRITECMD(DISK_SIZE); s = wait_interrupt(); if (s==0x14){ WRITECMD(RD_USB_DATA); len = READDATA(); for( i=0;i!+len;i++ )buf[i] = READDATA(); }


我按照您的程序試了一下,并且加大了buf,現(xiàn)在結(jié)果是len=20,不過讀的20個字節(jié)還全都是0x14


感覺應(yīng)該是不對吧,不知道問題該從哪方面找起呢


上面寫錯了,len不是20 ,而是0xcd。不過只有前20個字節(jié)是0x14,后面都是0x00。


有人嗎


unsigned char mInitDisk( ) { unsigned char mIntStatus, i; CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ mIntStatus = CH375_RD_DAT_PORT( ); if ( mIntStatus == USB_INT_DISCONNECT ) return( mIntStatus ); /* USB設(shè)備斷開 */ CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存儲器 */ mIntStatus = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( mIntStatus != USB_INT_SUCCESS ) return( mIntStatus ); /* 出現(xiàn)錯誤 */ CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 獲取USB存儲器的容量 */ mIntStatus = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( mIntStatus != USB_INT_SUCCESS ) { /* 出錯重試 */ mDelaymS( 200 ); CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 獲取USB存儲器的容量 */ mIntStatus = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ } if ( mIntStatus != USB_INT_SUCCESS ) return( mIntStatus ); /* 出現(xiàn)錯誤 */

/* 可以由CMD_RD_USB_DATA命令將容量數(shù)據(jù)讀出,分析每扇區(qū)字節(jié)數(shù) */ CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); /* 從CH375緩沖區(qū)讀取數(shù)據(jù)塊 */ i = CH375_RD_DAT_PORT( ); /* 后續(xù)數(shù)據(jù)的長度 */ if ( i != 8 ) return( USB_INT_DISK_ERR ); /* 異常 */ for ( i = 0; i != 8; i ++ ) { /* 根據(jù)長度讀取數(shù)據(jù) */ DATA_BUFFER[ i ] = CH375_RD_DAT_PORT( ); /* 讀出數(shù)據(jù)并保存 */ } i = DATA_BUFFER[ 6 ]; /* U盤容量數(shù)據(jù)中的每扇區(qū)字節(jié)數(shù),大端格式 */ if ( i == 0x04 ) BlockPerSector = 1024/CH375_BLOCK_SIZE; /* 磁盤的物理扇區(qū)是1K字節(jié) */ else if ( i == 0x08 ) BlockPerSector = 2048/CH375_BLOCK_SIZE; /* 磁盤的物理扇區(qū)是2K字節(jié) */ else if ( i == 0x10 ) BlockPerSector = 4096/CH375_BLOCK_SIZE; /* 磁盤的物理扇區(qū)是4K字節(jié) */ else BlockPerSector = 512/CH375_BLOCK_SIZE; /* 默認(rèn)的磁盤的物理扇區(qū)是512字節(jié) */ BytePerSector = BlockPerSector*CH375_BLOCK_SIZE; /* 物理磁盤的扇區(qū)大小 */ CH375_WR_CMD_PORT( CMD_SET_PKT_P_SEC ); /* 設(shè)置USB存儲器的每扇區(qū)數(shù)據(jù)包總數(shù) */ CH375_WR_DAT_PORT( 0x39 ); CH375_WR_DAT_PORT( BlockPerSector ); /* 設(shè)置每扇區(qū)數(shù)據(jù)包總數(shù) */ return( 0 ); /* U盤已經(jīng)成功初始化 */ }


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

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