CH376字节读函数一次最大只能读255字节?

CH376字节读函数UINT8 CH376ByteRead( );我一次最大问什么只能读255个字节,再大就读不出来了,不知问什么?

文件多大?UINT8 CH376ByteRead( );一次可以最多读出65535个字节. 另外注意缓冲区不要小于一次读出的字节数.另外请详细说明不能读出的具体现象


文件大小绝对超过255个字节,在读字节函数中超过255个字节后就什么也读不出来了. "缓冲区不要过于一次读出的字节数" 那读出的数据怎么能放的下?


提示一下你注意的地方,没有犯这个错误更好. 超过255个字节就死机?等待中断等不到了?可以把你的函数贴出来看看


我用的是AVR的硬件SPI方式,一直循环检测中断,我发现确实是超过255个字节就一直检测中断,检测不到就一直跳不出来!怎么解决?还有论坛可以添加附件吗?我好把程序贴上


右下脚有个修改帖子的图标,点击后可以添加附件,请压缩后上传


是不是你的循环控制变量声明的类型有问题?如果像下面的程序就死定了,试试unsigned int i看看:

unsigned char i;

for (i=0;i<65535;i++) { ...... }


楼主解决了吗


您好字节写可以写入多字节。UINT8CH376ByteWrite( PUINT8 buf, UINT16 ReqCount, PUINT16 RealCount ) ,长度为uint16。您如果写入超过255就无法写入的话,看一下存放数据的缓冲区大小是否大于255,其次调用字节写函数的实参长度是否正确。最后您可以确认一下字节写函数的参数定义是否为uint16类型。这边贴出部分代码提供参考。

//此处为while(1)里面的部分代码。

s = CreateFileAndTime( "/123.TXT", 1, MAKE_FILE_DATE( 2020, 6, 8 ), MAKE_FILE_TIME( 15, 39, 20 ), MAKE_FILE_DATE( 2020, 6, 8 ), MAKE_FILE_TIME( 15, 39, 20 ) );

printf("1\r\n");

mStopIfError( s );

printf("1\r\n");

s=CH376FileOpen("/123.TXT");

mStopIfError( s );

//s=DataToChar( 45678,  buf1 );

//

//s=sizeof(buf_long1);

s = CH376ByteWrite( buf_long1, 512, p );

s = CH376FileClose( TRUE );

Delay_Ms( 20 );


以下为驱动代码。

UINT8CH376ByteWrite( PUINT8 buf, UINT16 ReqCount, PUINT16 RealCount )  /* ??×??????????ò?±?°?????????????é */

{

UINT8s;

xWriteCH376Cmd( CMD2H_BYTE_WRITE );

xWriteCH376Data( (UINT8)ReqCount );

xWriteCH376Data( (UINT8)(ReqCount>>8) );

xEndCH376Cmd( );

if ( RealCount ) *RealCount = 0;

while ( 1 ) {

s = Wait376Interrupt( );

if ( s == USB_INT_DISK_WRITE ) {

s = CH376WriteReqBlock( buf );  /* ?ò???????¨?????????????ó???????é,·????¤?? */

xWriteCH376Cmd( CMD0H_BYTE_WR_GO );

xEndCH376Cmd( );

buf += s;

if ( RealCount ) *RealCount += s;

}

/*else if ( s == USB_INT_SUCCESS ) return( s );*/  /* ?á?? */

else return( s );  /* ?í?ó */

}

}




楼主解决了吗


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