大侠进来看看这段代码,我的375V测试不通过,急!!

我用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。

你先看一下375是否工作在并口方式下,也就是TXD是否接地;CS、WR、A0、D0-D7线确定没有接错; 还有你的CH375片选CS#是直接接地了吗?


首先你检查下你的375晶振起振了没有?复位完全不完全?


要不换P0试试看。


CH375_RD = 0; //输出有效写控制信号, 读CH375芯片的数据端口 //mData = P3; //从CH375的并口输入数据 _nop_(); //延时,CH375要求读写脉冲宽度大于100nS _nop_(); // 给CH375一个输出准备时间30ns,再读P3端口 mData = P3; //从CH375的并口输入数据 CH375_RD = 1; // 输出无效的控制信号, 完成操作CH375芯片


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