第一次使用贵公司芯片,下载了例程,入门很容易。 使用你们芯片的目的就是加快开发速度,用CH376写SD卡。 以下是你们的部分例程 #include "FILE_SYS.H"
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 ); }
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 ); }
void CH376WriteHostBlock( PUINT8 buf, UINT8 len ) /* 向USB主机端点的发送缓冲区写入数据块 */ { xWriteCH376Cmd( CMD10_WR_HOST_DATA ); xWriteCH376Data( len ); /* 长度 */ if ( len ) { do { xWriteCH376Data( *buf ); buf ++; } while ( -- len ); } xEndCH376Cmd( ); }
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( ); }
以下是我更改过的: //******************************************************** #include "FILE_SYS.H" /********************************************************/ // //读数据块CH376(CH376T) //从当前主机端点的接收缓冲区读取数据块,返回长度 //buf为数据地址 //s为数据长度 /********************************************************/
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 ); } /********************************************************/ // //写数据块CH376(CH376T) //向内部指定缓冲区写入请求的数据块,返回长度 //buf为数据地址 //s为数据长度 /********************************************************/ 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 ); } /********************************************************/ // //写数据块CH376(CH376T) //向USB主机端点的发送缓冲区写入数据块 //buf为数据地址 //len为数据长度 /********************************************************/ void CH376WriteHostBlock( PUINT8 buf, UINT8 len ) { xWriteCH376Cmd( CMD10_WR_HOST_DATA ); xWriteCH376Data( len ); /* 长度 */ if ( len ) { do { xWriteCH376Data( *buf ); buf ++; } while ( -- len ); } xEndCH376Cmd( ); } /********************************************************/ // //写数据块CH376(CH376T) //向内部缓冲区指定偏移地址写入数据块 //buf为数据地址 //ofs为偏移地址 //len为数据长度 /********************************************************/ 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越来越详细, 我希望下次用你们的芯片,看看资料就可以,不找客服,不用猜测功能。