完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
通过例程里面的CH376ByteWrite函数发送数据,发现死在if ( s == USB_INT_DISK_WRITE )这步,返回的都是14,写不进去数据,自己修改后不加这步直接写入可以,但是后续发现只能写255byte,超过一个字节就写不进去,求解
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 ); /* ?í?ó */ // return( s ); /* ?í?ó */ ////} s = Wait376Interrupt(); xWriteCH376Cmd(CMD_WR_REQ_DATA); if(ReqCount) { do { xWriteCH376Data(*buf); buf++; }while(--ReqCount); } xWriteCH376Cmd(CMD_BYTE_WR_GO); s = Wait376Interrupt(); return s; } |
|
相关推荐
1个回答
|
|
您好字节写可以写入多字节。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("1rn"); mStopIfError( s ); printf("1rn"); 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 ); /* ?í?ó */ } } if ( s == USB_INT_DISK_WRITE )卡在这个判断条件,说明还在做请求写入的操作。您最好看一下长度是否给对。 |
|
|
|
只有小组成员才能发言,加入小组>>
477 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2874 浏览 2 评论
2361 浏览 1 评论
818浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
646浏览 1评论
500浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
365浏览 1评论
642浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 02:36 , Processed in 0.825397 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号