检查老长时间了,就是找不出问题出在哪了,请达人帮忙分析分析,将非常感激。 这小块的代码如下: p = 0x5F; CH375_WR = 0; CH375_CMD_DAT = 0; CH375_WR_DAT_PORT(p); CH375_CMD_DAT = 1; CH375_WR_CMD_PORT( CMD_CHECK_EXIST ); /* 测试CH375是否正常工作 */ p = ~p; /* 返回数据应该是测试数据取反 */ CH375_CMD_DAT = 0; CH375_RD = 0; CH375_WR = 1; RD_Data = CH375_RD_DAT_PORT(); 发现数据读出后并没有取反,而接下来的工作都没法做了。
测试命令不是你这样发的,你可以参考下面的一段程序试下: CH375_WR_CMD_PORT( CMD_CHECK_EXIST ); /* 测试CH375是否正常工作 */ CH375_WR_DAT_PORT( 0x55 ); /* 写入测试数据 */ i = ~ 0x55; /* 返回数据应该是测试数据取反 */ if ( CH375_RD_DAT_PORT( ) != i ) { /* CH375不正常 */ for ( i=80; i!=0; i-- ) { CH375_WR_CMD_PORT( CMD_RESET_ALL ); /* 多次重复发命令,执行硬件复位 */ CH375_RD_DAT_PORT( ); } CH375_WR_CMD_PORT( 0 ); Delay50ms( ); /* 延时50ms */ } 还有就是你如果测试的数据不是你写进去的数据的取反,那可能是你的硬件连线或者你的晶振没起振等硬件问题造成的,而不一定是375坏了
首先谢谢您的回帖! 您提供的这段程序,我曾经也是这么写的,仍然不行,后来我将该部分改来改去,就成了上面我发的那样子。 CH375_RD_DAT_PORT( )仍然是输入的那个数。 我仔细检查了硬件连接,好像没发祥什么问题。
用示波器测了晶振,发现并不起振,先前我也怀疑可能是晶振出故障了,但后来我换了好几个不同厂家的,都检测不到它起振;然而电压却是有的,一个脚是5V左右,另一个脚3V左右。
你的退藕电容可能有问题,换2个退藕电容试下15P的,还有就是你测下RST和RET#的电压的高低,正常的情况下RST为低,RST#为高
多谢,我去试一下 :)