ch376s的版本号是多少,这个宏用定义吗DEF_IC_V43_U

ch376s的版本号是多少,这个宏用定义吗DEF_IC_V43_U。 FILE_SYS.C中这样说“DEF_IC_V43_U”, /* 定义 DEF_IC_V43_U 用于去掉支持低版本的程序代码,仅支持V4.3及以上版本的CH376芯片,默认是支持低版本 */ 那我现在用的ch376s,它的版本是哪个,用定义这个宏吗,

只要从我司买的CH376芯片应该都是V4.3以上的版本。前2个版本已经停产。


嗯,谢谢,也就是说如下的程序,我都应该屏蔽掉,这些是不用的,对吧, #ifndef DEF_IC_V43_U 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 ); } } } } #endif


还有我用老示波器看到设置模式指令(CMD11_SET_USB_MODE)+(06)时,返回一两个数据,一个是0X51,一个是0X15,请问这是怎么回事,按数据手册上应该是回复一个字节数据啊(0X51或0X5H),


上边写错了,不是5H,是5F。

状态代码 状态名称 状态说明 51H CMD_RET_SUCCESS 操作成功 5FH CMD_RET_ABORT 操作失败


只返回一字节数据,返回两个的话是你读了2次。读几次返回几次,实际只需读一次


不是的,我这个可以仿真,当我设置模式时,发送(CMD11_SET_USB_MODE)+(06),然后暂停,还没有读时,用示波器观察,会看到返回两个数据一个0X51接着又一个0X15,请帮我分析下


而且这个设置模式操作(CMD11_SET_USB_MODE)+(06),会引起376的1脚(INT#)变低,好像是要告诉单片机有中断了,而数据手册上,这个设置模式的操作不是产生中断的指令,求指教,


那说明你是插着U盘来设置模式的,如果插入U盘设置模式的话那么就会产生0X15的中断状态。表示U盘插入。


在设置模式后加个while(1)循环;使程序停止在那,看有没有中断产生


8楼说的是对的,确实是插着U盘时有中断,即初始化前就插着U盘,当设置模式后,先返回0X51(同时376的1脚变低),接着返回一个0X15,所以我在这里加了一个中断查询,如果有中断刚把0X15读出来。 之所以发现这个问题是因为现在用的CPU的串口接收缓冲器有4个,如果我不把这时的0X15读出来,下次处理读数据时会读到0X15,而这个0X15是上次的返回值,所以后边就乱了。对于STC的单片机就不会有这个问题,因为它就有一个缓冲器,下次再来数据时会顶掉这个0X15,你读出来的就是本次操作的返回值,后边的操作也就没问题了。


楼主用的什么单片机啊


我开始是用STC单片机调试的,按照厂家的例程,基本改动不大,调通了; 接着是把代码移植到Rabbit Core(不太常见的MCU,可以网上看看)上,可是调不通,后来只好又单步的查,才发现是中断处理部分有问题,主要原因就是这种MCU的串口有很多缓冲器,


能回答一下,是不是买到的CH376可屏蔽上面的代码呢? 应该不行吧?(根目录下不行?)


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