CH376看不到创建成功的文件。

芯片为CH376S(淘宝购买)。 用usb转uart与ch376s通信

在U盘中创建文件时,发现芯片每次都能返回创建成功的数据,但不是每次都能看到创建的文件。


于是做了个测试,发现具体情况如下:


1. 用 XP或Diskgenius 格式化U盘为 Fat32格式,每次都能看到创建成功的文件。

2. 用 win7或win10 格式化U盘为Fat32格式,每次都看不到创建的文件,但芯片每次都能返回创建成功的数据  (14H)。

3. 用Diskgenius查看 成功与不成功的U盘,发现同样格式化为Fat32时,U盘数据不同(但不大看得懂是啥原因)差别如下:



win10格式化.bmp



xp格式化.bmp



4. 用winhex查看有问题的U盘,发现数据的确已经写入到U盘中了,但没显出来。


应该出现的文件.bmp



5. 查看论坛相关帖子,好像是 芯片版本号的原因,发送 57 AB 01 ,返回数据 42H(版本号为 02H)。


so.想问下各位大大,cha376s最新的固件版本是多少?有木有解决这个问题?j_0008.gif或者其他解决办法也行啊。


周六没人么。



void CH376SetFileName( PUINT8 name )  /* 设置将要操作的文件的文件名 */
{
 UINT8 c;
 UINT8 s;
 xWriteCH376Cmd( CMD01_GET_IC_VER );
 if ( xReadCH376Data( ) < 0x43 ) {
  if ( CH376ReadVar8( VAR_DISK_STATUS ) < DEF_DISK_READY ) {
   xWriteCH376Cmd( CMD10_SET_FILE_NAME );
   xWriteCH376Data( 0 );
   s = CH376SendCmdWaitInt( CMD0H_FILE_OPEN );
   if ( s == USB_INT_SUCCESS ) {
    s = CH376ReadVar8( 0xCF );
    if ( s ) {
     CH376WriteVar32( 0x4C, CH376ReadVar32( 0x4C ) + ( (UINT16)s << 8 ) );
     CH376WriteVar32( 0x50, CH376ReadVar32( 0x50 ) + ( (UINT16)s << 8 ) );
     CH376WriteVar32( 0x70, 0 );
    }
   }
  }
 }
 xWriteCH376Cmd( CMD10_SET_FILE_NAME );
 c = *name;
 xWriteCH376Data( c );
 while ( c ) {
  name ++;
  c = *name;
  if ( c == DEF_SEPAR_CHAR1 || c == DEF_SEPAR_CHAR2 ) c = 0;  /* 强行将文件名截止 */
  xWriteCH376Data( c );
 }
 xEndCH376Cmd( );
}

设置文件名执行上面这段代码。


43以下的版本对文件操作得先设置上述函数才行,也有可能您的芯片是市场流出的盗版芯片,您可以打沁恒销售电话(025-52638377)申请样片来测试,官网也有相关的测试工具,可以先试试看。


只有登录才能回复,可以选择微信账号登录