STM32+CH376+并口

数据线用的是STM32 D0-D7(上面还有SDRM,LCD等) A0和CS用的GPIO口 RD、WD等挂载在STM32的读写信号线上。

#define OUTADDR4 (*((volatile INT8U *) 0x60500000))

void xWriteCH376Cmd(unsigned char CMD) { OUTADDR4=CMD; USB1_A_1; USB1_CS_0; delay_us(25); USB1_CS_1; USB1_A_0;

delay_us(20);

}

void xWriteCH376Data(unsigned char dat) { OUTADDR4=dat; USB1_A_0; USB1_CS_0; delay_us(25); USB1_CS_1; delay_us(20); }

unsigned char xReadCH376Data() { unsigned char i=0;

USB1_A_0; USB1_CS_0; delay_us(50); i=OUTADDR4; delay_us(20); USB1_CS_1;

return i; }

unsigned char xReadCH376Status() { unsigned char i=0;

USB1_A_1; USB1_CS_0; delay_us(50); i=OUTADDR4; delay_us(20); USB1_CS_1; USB1_A_0;

return i; }

unsigned char CH375_Init(void) { unsigned char i=0xff;

xWriteCH376Cmd(0x06); xWriteCH376Data(0x55); i=xReadCH376Data(); return i; }

我想当我向OUTADDR4写数据的时候,数据线上出现数据,我片选打开CH376,数据就可以进去了,读的时候也是这样,因此我没有控制CH376的读写信号线。OUTADDR4这个地址随便一个地址,只要我系统中其它地方没有使用即可。

但是现在CH375_Init()函数的返回值是0xFF,就是读不出正确的值,不知道什么问题?我的上述理解有问题吗?

这个应该是你时序上的问题,测试命令没有通过返回0xFF。读写数据你都成功了,那你写命令数据线上有数据吗?另外,选择并口模式TXD=0。


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