logo

CH376T 连续运行无法新建文件和写入数据

在keil单步运行可以看到 SD卡新建了文件夹和文件,但是写入数据的时候只是写入了一个,单步运行都可以 S都是0x14,不使用调试模式就不能写入新建文件夹和新建文件等操作。可以确定初始化,取反数值是通过的。

s = CH376DirCreatePath(PathName);           // 创建文件夹
    s = CH376FileCreate(" BC.TXT ");
    s = CH376ByteWrite(SPI_TX_BUFFER, strlen((const char *)SPI_TX_BUFFER), NULL);

//写入数据的使用的是官方提供的函数  SPI_TX_BUFFER数组是 0-9  长度为0x1E

    UINT8    CH376ByteWrite( PUINT8 buf, UINT16 ReqCount, PUINT16 RealCount )
{
    UINT8    s;
    xWriteCH376Cmd( CMD2H_BYTE_WRITE );
    xWriteCH376Data( (UINT8)ReqCount );
    xWriteCH376Data( (UINT8)(ReqCount>>8) );
    xEndCH376Cmd( );
    if ( RealCount )
  {
        *RealCount = 0;
  }
    
    while ( 1 )
    {
        s = Wait376Interrupt( );
        //程序到这里只运行了一次,然后就 读取的数据是0x14就是成功操作,用读卡器看只写了一个数据
        if ( s == USB_INT_DISK_WRITE )
        {
            s = CH376WriteReqBlock( buf );                                              /* 向内部指定缓冲区写入请求的数据块,返回长度 */
            xWriteCH376Cmd( CMD0H_BYTE_WR_GO );
            xEndCH376Cmd( );
            buf += s;
            if ( RealCount ) *RealCount += s;
        }
        else
        {
                return( s );                                                                /* 错误 */
        }
    }
}

这人很懒,什么都没留下

首先字节写函数中你得到的返回数据是0X14是不正确的,正确的你应该得到的返回数据位0X1E ,这样才能继续向下进行;然后你的文件创建函数中文件名需要前面加左下划线,表示在根目录下创建文件,你创建的目录PATHNAME我看不到,所以无法判断。然后建议你读一下你的文件创建函数、目录创建函数的返回值。

025-89692394 e-mail:wangyy@wch.cn QQ:3212834442(请备注公司信息和简要需求描述)
只有登录才能回复,可以选择微信和github账号登录