我想問一下,現(xiàn)在CH375的動態(tài)庫能兼容STC11F32XE單片機嗎?這種單片機的運行速度是普通51單片機6--24倍,我發(fā)現(xiàn)在這種單片機下CH375的初始化都不能正確返回,謝謝!
完全可以,但是需要更換庫.推薦是用LIB5,讀寫函數(shù)在外部,只要修改一下讀寫時序,符合CH375的讀寫要求就可以了.STC11F32XE這種MCU比一般的MCU最多快12倍.一般只快3倍左右.
CH375的讀寫操作有時序要求:命令后延時1uS,數(shù)據(jù)后延時0.6uS,這些參數(shù)參考CH375DS1.PDF中7.3. 時序參數(shù) 建議樓主把CH375DS1.PDF,CH375HF.PDF詳細閱讀一下,這些是讀寫U盤最基礎(chǔ)的資料,也有利于碰到問題時分析解決
好的,謝謝!
我剛才把讀寫子程序改了一下,現(xiàn)在是CH375初始化可以,U盤插入時小燈也亮了,但是再往下走就過不去了,下面的子程序:CH375DiskReady( ),CH375DiskConnect( )等程序都看不到了,因為,時序圖我不太會看就按其它的例子程序給加了點延時,請幫忙看看對不對,謝謝 void Delay2us( ) { UINT8 i; for ( i=10; i!=0; i-- ); //_Nop_();_Nop_();_Nop_(); } void xWriteCH375Cmd( UINT8 mCmd ) { TI = 0; TB8 = 1; Delay2us();Delay2us(); SBUF = mCmd; Delay2us();Delay2us(); while ( TI == 0 ); }
void xWriteCH375Data( UINT8 mData ) { TI = 0; TB8 = 0; SBUF = mData; Delay2us(); while ( TI == 0 ); }
UINT8 xReadCH375Data( void ) { Delay2us(); while ( RI == 0 ){ WDT_CONTR=0x33; } RI = 0; return( SBUF ); }
串口不要加延時.原因很簡單 假設(shè)CH375把數(shù)據(jù)通過串口發(fā)送出來了,但是MCU在延時,錯過了.那么也就永遠收不到數(shù)據(jù)了.會死機.
那就是UINT8 xReadCH375Data( void )不要加延時對吧? 我的程序走到檢測U盤是否準(zhǔn)備好就過不去了。請指教,謝謝!
都不要加延時. 測試命令已經(jīng)通過?中斷引腳是否正確設(shè)置? 另外你可以設(shè)定超時退出.退出后,查看一下DISK_BASE_BUF中的內(nèi)容.
我用普通51單片機可以往U盤中寫入數(shù)據(jù),但是,我的系統(tǒng)必須用STC11F32XE這個單片機,它的速度很快,如果我不改這些子程序就連CH375初始化都過不去,我現(xiàn)在改后是初始化能過去,U盤插入時能檢測到,但是,U盤始終是沒有準(zhǔn)備好,我把這段屏了后,直接CH375FileOpen( )也是不對的:(
CH375DiskReady( ) 返回值是多少? UINT8 xReadCH375Data( void ) { UINT16 cnt; for(cnt=50000;cnt!=0;cnt--) { if(RI) { RI = 0; return SBUF; } } return 0; }
我想問一下如果我用STC11F32XE單片機,CH375是串口方式這三個子程序:void xWriteCH375Cmd( UINT8 mCmd ),void xWriteCH375Data( UINT8 mData ),UINT8 xReadCH375Data( void )還用改動嗎?因為,波特率已經(jīng)設(shè)定了,但是資料上寫的數(shù)據(jù)和命令都是有時間間隔的,51單片機比較慢可以不加延時,是不是STC11F32XE還是得加一定的延時呢?我說的是串口方式,謝謝!
串口方式不需要加延時的,因為本身串口速度就比較慢。
謝謝各位的回復(fù),上問題解決了,在程序中檢測INT腳時要加點延時:)