CH376写出错

【求教】 CH376以字节为单位写数据时,之前一切正常,返回值正确,但执行xWriteCH376Cmd( CMD0H_BYTE_WR_GO )过了很久都没有中断返回。 CH376以扇区为单位写数据时,之前一切正常,返回值正确,但执行xWriteCH376Cmd( CMD0H_DISK_WR_GO )过了很久都没有中断返回。[Emot]1[/Emot][Emot]13[/Emot]

如果操作流程是正确的话, CMD0H_BYTE_WR_GO这条命令是一定会产生中断的,先用万用表或示波器测一下INT引脚是否为低电平。


UINT8 CH376ByteWrite( PUINT8 buf, UINT16 ReqCount, PUINT16 RealCount ) /* 以字节为单位向当前位置写入数据块 */ { UINT8 s; if ( RealCount ) *RealCount = 0; xWriteCH376Cmd( CMD2H_BYTE_WRITE ); xWriteCH376Data( (UINT8)ReqCount ); xWriteCH376Data( (UINT8)(ReqCount>>8) ); while ( 1 ) { s = Wait376Interrupt( ); if ( s == USB_INT_DISK_WRITE ) { s = CH376WriteReqBlock( buf ); /* 向内部指定缓冲区写入请求的数据块,返回长度 */ xWriteCH376Cmd( CMD0H_BYTE_WR_GO ); buf += s; if ( RealCount ) *RealCount += s; } else return( s ); /* 错误 */ } } 流程没有问题,我用的MSP430f5438,并口方式,查询中断。执行xWriteCH376Cmd( CMD0H_BYTE_WR_GO )后电压始终为3.2V


问题貌似解决了,发现一个很诡异的问题,以字节模式写时,写其他什么数据都行,每次写0x05就出错,很费解


那是因为并口时序不够严格造成的,在写数据0x05的时候,CH376将它误当做命令处理, 注意CH376的A0引脚默认的电平是低电平, 在写完命令之后将A0拉低。


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