本人用Motorola单片机MC9S12D64和CH375A通信,调底层通信总是通不过。 有没有人能够指点一下。单片机采用模拟并口时序,三个读写子函数如下: void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定义的被CH375程序库调用的子程序,向CH375写命令 */ { mDelay1uS( ); mDelay1uS( ); /* 至少延时2uS */ CS_HOST=0; A0=1; DDRA=0xFF; PORTA=mCmd; WR=0; DDRA=0xFF; WR=1; CS_HOST=1; DDRA=0x00; mDelay1uS( ); mDelay1uS( ); /* 至少延时2uS */ }
void xWriteCH375Data( UINT8 mData ) /* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */ { CS_HOST=0; A0=0; DDRA=0xFF; PORTA=mData; WR=0; DDRA=0xFF; WR=1; A0=1; CS_HOST=1; DDRA=0x00; mDelay1uS( ); /* 至少延时1.5uS */ }
UINT8 xReadCH375Data( ) /* 外部定义的被CH375程序库调用的子程序,从CH375读数据,最小周期为1.5uS,否则之前延时1.5uS */ { UINT8 mData; mDelay1uS( ); /* 至少延时1.5uS */ CS_HOST=0; A0=0; DDRA=0x00; RD=0; DDRA=0x00; mData=PORTA; RD=1; A0=1; CS_HOST=1; return(mData); }
测试底层通信如下: unsigned char TEST_CH375_PORT( ) { unsigned char c,i; xWriteCH375Cmd( CMD_CHECK_EXIST ); xWriteCH375Data( 0x55 ); c =xReadCH375Data( ); if ( c != 0xaa ) { for ( i = 100; i != 0; i -- ) { xWriteCH375Cmd( CMD_RESET_ALL ); c = xReadCH375Data( ); } mDelaymS(30); } return c; }