第一次使用貴公司芯片,下載了例程,入門很容易。 使用你們芯片的目的就是加快開發(fā)速度,用CH376寫SD卡。 以下是你們的部分例程 #include "FILE_SYS.H"
UINT8 CH376ReadBlock( PUINT8 buf ) /* 從當(dāng)前主機(jī)端點(diǎn)的接收緩沖區(qū)讀取數(shù)據(jù)塊,返回長度 */ { UINT8 s, l; xWriteCH376Cmd( CMD01_RD_USB_DATA0 ); s = l = xReadCH376Data( ); /* 長度 */ if ( l ) { do { *buf = xReadCH376Data( ); buf ++; } while ( -- l ); } xEndCH376Cmd( ); return( s ); }
UINT8 CH376WriteReqBlock( PUINT8 buf ) /* 向內(nèi)部指定緩沖區(qū)寫入請求的數(shù)據(jù)塊,返回長度 */ { UINT8 s, l; xWriteCH376Cmd( CMD01_WR_REQ_DATA ); s = l = xReadCH376Data( ); /* 長度 */ if ( l ) { do { xWriteCH376Data( *buf ); buf ++; } while ( -- l ); } xEndCH376Cmd( ); return( s ); }
void CH376WriteHostBlock( PUINT8 buf, UINT8 len ) /* 向USB主機(jī)端點(diǎn)的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */ { xWriteCH376Cmd( CMD10_WR_HOST_DATA ); xWriteCH376Data( len ); /* 長度 */ if ( len ) { do { xWriteCH376Data( *buf ); buf ++; } while ( -- len ); } xEndCH376Cmd( ); }
void CH376WriteOfsBlock( PUINT8 buf, UINT8 ofs, UINT8 len ) /* 向內(nèi)部緩沖區(qū)指定偏移地址寫入數(shù)據(jù)塊 */ { xWriteCH376Cmd( CMD20_WR_OFS_DATA ); xWriteCH376Data( ofs ); /* 偏移地址 */ xWriteCH376Data( len ); /* 長度 */ if ( len ) { do { xWriteCH376Data( *buf ); buf ++; } while ( -- len ); } xEndCH376Cmd( ); }
以下是我更改過的: //******************************************************** #include "FILE_SYS.H" /********************************************************/ // //讀數(shù)據(jù)塊CH376(CH376T) //從當(dāng)前主機(jī)端點(diǎn)的接收緩沖區(qū)讀取數(shù)據(jù)塊,返回長度 //buf為數(shù)據(jù)地址 //s為數(shù)據(jù)長度 /********************************************************/
UINT8 CH376ReadBlock( PUINT8 buf ) { UINT8 s, l; xWriteCH376Cmd( CMD01_RD_USB_DATA0 ); s = l = xReadCH376Data( ); /* 長度 */ if ( l ) { do { *buf = xReadCH376Data( ); buf ++; } while ( -- l ); } xEndCH376Cmd( ); return( s ); } /********************************************************/ // //寫數(shù)據(jù)塊CH376(CH376T) //向內(nèi)部指定緩沖區(qū)寫入請求的數(shù)據(jù)塊,返回長度 //buf為數(shù)據(jù)地址 //s為數(shù)據(jù)長度 /********************************************************/ UINT8 CH376WriteReqBlock( PUINT8 buf ) { UINT8 s, l; xWriteCH376Cmd( CMD01_WR_REQ_DATA ); s = l = xReadCH376Data( ); /* 長度 */ if ( l ) { do { xWriteCH376Data( *buf ); buf ++; } while ( -- l ); } xEndCH376Cmd( ); return( s ); } /********************************************************/ // //寫數(shù)據(jù)塊CH376(CH376T) //向USB主機(jī)端點(diǎn)的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 //buf為數(shù)據(jù)地址 //len為數(shù)據(jù)長度 /********************************************************/ void CH376WriteHostBlock( PUINT8 buf, UINT8 len ) { xWriteCH376Cmd( CMD10_WR_HOST_DATA ); xWriteCH376Data( len ); /* 長度 */ if ( len ) { do { xWriteCH376Data( *buf ); buf ++; } while ( -- len ); } xEndCH376Cmd( ); } /********************************************************/ // //寫數(shù)據(jù)塊CH376(CH376T) //向內(nèi)部緩沖區(qū)指定偏移地址寫入數(shù)據(jù)塊 //buf為數(shù)據(jù)地址 //ofs為偏移地址 //len為數(shù)據(jù)長度 /********************************************************/ void CH376WriteOfsBlock( PUINT8 buf, UINT8 ofs, UINT8 len ) { xWriteCH376Cmd( CMD20_WR_OFS_DATA ); xWriteCH376Data( ofs ); /* 偏移地址 */ xWriteCH376Data( len ); /* 長度 */ if ( len ) { do { xWriteCH376Data( *buf ); buf ++; } while ( -- len ); } xEndCH376Cmd( ); }
希望你們越做越好,包括datasheet越來越詳細(xì), 我希望下次用你們的芯片,看看資料就可以,不找客服,不用猜測功能。