为什么我的ch372模块一直返回0x5F?

无论我发送CMD_CHECK_EXIST并发送data:0x0f,还是发送CMD_SET_USB_MODE并设置模式2,返回都是0x5f,即操作失败的意思。 我用的是stc89c52单片机,数据口和操作信号线已经确定无误。是用模块送的测试程序,店家说出货前也是用52芯片同样的程序测试,他的没问题,到我这里就不行了,郁闷。

程序如下 CH375_WRCMD( CMD_RESET_ALL ); delay50ms( ); CH375_WRCMD(CMD_CHECK_EXIST); CH375_WRDAT(0x0f); dat=CH375_REDAT( ); 这里dat=0x5f

CH375_WRCMD(CMD_SET_USB_MODE); CH375_WRDAT(2); delay20us(); for (i=10 ;i!=0;i-- ) { /* 等待操作成功,通常需要等待10uS-20uS */ if ( (dat=CH375_REDAT( ))==CMD_RET_SUCCESS ) break; 同样,这里dat=0x5f } 求助

其中读写函数如下

void CH375_WRCMD(unsigned char cmd) { delay2us(); P0=cmd; CH375_A0=1; CH375_RD=1; CH375_CS=0; CH375_WR=0; CH375_WR=1; CH375_CS=1; CH375_A0=0; P0=0xFF; //单片机的端口全部拉高 delay2us(); }

void CH375_WRDAT(unsigned char dat) { P0=dat; CH375_A0=0; CH375_CS=0; CH375_WR=0; CH375_CS=0; //延时用,因为单片机运行比较慢,可省略,运算快的处理器不可省略 CH375_WR=1; CH375_CS=1; P0=0xFF; //单片机的端口全部拉高 }

unsigned char CH375_REDAT(void) { unsigned char temp; P0=0xFF; //单片机的端口全部拉高 CH375_A0=0; CH375_CS=0; CH375_RD=0; temp=P0; CH375_RD=1; CH375_CS=1; P0=0xFF; //单片机的端口全部拉高 return temp; }

[Emot]8[/Emot][Emot]8[/Emot]

你检查一下你的晶振有没有起振?复位时间是否充分?数据口和操作信号线连接没有问题的话测试命令应该可以通过。


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