CH375测试失败的问题

这几天在调CH375,但是开始的测试就不通,不知道是怎么回事,看了别人的贴子检查硬件似乎也没问题.帖一下程序,各位帮我看看吧,谢了

void CH375_WR_CMD_PORT( UINT8 cmd ) { Delay2us(); CH375_CMD_PORT=cmd; Delay2us(); }

void CH375_WR_DAT_PORT( UINT8 dat ) { CH375_DAT_PORT=dat; Delay1us(); /* 如果是MCS51单片机,因其较慢,所以实际上无需延时 */ }

UINT8 CH375_RD_DAT_PORT( void ) { Delay1us(); /* 如果是MCS51单片机,因其较慢,所以实际上无需延时 */ return( CH375_DAT_PORT ); }

/* CH375初始化子程序 */ void CH375_Init( void ) { UINT8 i; UINT8 j;

#define TEST_CH375_FIRST

#ifdef TEST_CH375_FIRST /* 测试CH375与单片机的物理连接是否正常以及是否正常工作,可选操作,通常不需要 */ CH375_WR_CMD_PORT( CMD_CHECK_EXIST ); /* 测试CH375是否正常工作 */ Delay2us( ); /* 如果时钟频率低于16MHz则无需该指令延时 */ CH375_WR_DAT_PORT( 0x55); /* 写入测试数据,任意数据 */ Delay2us( ); 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 );    for ( i=250; i!=0; i-- ) for( j=100; j!=0; j-- ) Delay2us( ); /* 延时50mS */ }

#endif

你发测试命令和数据后,读回来的数据是什么啊?是所发数据的取反才是正确的,如果是0XFF的话,很大程度上还是你的硬件上存在问题。 你得查你的晶振是否起振动,375是否正常复位了,以及各连线是否正确(用并口时,TXD得接地),还有就是 CH375_CMD_PORT和CH375_DAT_PORT这两个地址得按你自己的硬件连线来取值。


测试时我发的是什么数据读回的就是什么数据,晶振也起振了,连线也都正确,复位也正常,难道是片子坏了? 请斑主帮帮忙啊


如果是读回来的数据就是你写出去的数据的话,那么你将你的CS线接地你看下还会不会出现你说的这种情况


接地也不行啊,还是这样子,换个片子还是不行


要是这样的话,那应该不是片子的问题,你可以这样做下: 1,先发0X06命令,接着做一个WHILE死循环,死循环里面不断的往外发数据,你看下数据有没有发出去,以及你的片选,读线和写线有没有信号出来. 2,接下来在重新做一次,先发0X06命令,在发数据出去,这个时候在做一个WHILE死循环,这个死循环里面在不断的读375的数据端口,那么,你看下数据口以及片选,读写线有没有信号出来?以及波形情况怎么样??会不会有别的器件造成?


解决了! 我A0接P2.0,原来的数据地址是0X0000,今天改成了0XFD00,测试就通过了。可能是全零的地址芯片不支持吧,不知道是芯片的BUG还是怎么回事? 不管怎么说问题解决了,谢谢各位拉,以后又有问题还得向你们请教


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