我用375V,库5的模拟总线模式。 执行CMD_CHECK_EXIST命令时总是不能读到取反的数据,只能读到0xFF,这是我送完测试数据后给总线置的,不知道是不是芯片没有响应我的命令呢。但是如果我执行RESET_ALL命令,375可以完成复位,我是通过它的复位输出引脚观察到的,也就是说375接受到命令并完成了软件复位,说明我的硬件应该没问题,请哪位大侠指教一二。 我的读写时序是按照按照命令数据间2uS,数据数据间2uS编的代码。MCU是C8051F120,25M。
测试命令和接受数据的代码如下:
char mData;
//写命令 mDelaymS(3); //延时1uS P3 = 0x06; //向CH375的并口输出数据,测试命令 CH375_A0 = 1; //写命令 nop_(); CH375_WR = 0; //输出有效写控制信号, 写CH375芯片的命令端口 _nop_(); //延时,CH375要求读写脉冲宽度大于100nS _nop_(); _nop_(); _nop_(); CH375_WR = 1; //输出无效的控制信号, 完成操作CH375芯片 _nop_(); CH375_A0 = 0; P3 = 0xFF; //禁止数据输出 mDelay1_2uS( ); //延时2uS
//写数据 P3 = 0x57; //向CH375的并口输出数据,测试数据 CH375_A0 = 0; _nop_(); //延时一个机器周期 CH375_WR = 0; /* 输出有效写控制信号, 写CH375芯片的数据端口 */ _nop_(); //延时,CH375要求读写脉冲宽度大于100nS _nop_(); _nop_(); _nop_(); CH375_WR = 1; /* 输出无效的控制信号, 完成操作CH375芯片 */ P3 = 0xFF; /* 禁止数据输出 */
//读返回数据 mDelay1_2uS( ); //至少延时2uS P3MDOUT = 0x00;P3 = 0xFF; //将P3置为输入 CH375_A0 = 0; //读数据 _nop_(); CH375_RD = 0; //输出有效写控制信号, 读CH375芯片的数据端口 mData = P3; //从CH375的并口输入数据 _nop_(); //延时,CH375要求读写脉冲宽度大于100nS _nop_(); _nop_(); _nop_(); _nop_(); CH375_RD = 1; // 输出无效的控制信号, 完成操作CH375芯片 P3MDOUT = 0xFF; //将P3置为输出
我读到FF,读不到A8。