应该是软件的问题,我的usb是通过引线的方式焊接在另外一个设备上的,所以没法重新连接,我用的是ZStack2007,感觉应该是软件的问题,具体描述如下
char s_measure( unsigned char *p_checksum, unsigned char mode)
{
unsigned er=0;
unsigned int i,j;
s_transstart(); //启动传输
switch(mode)
{
case 3:
er+=s_write_byte(3);
break; //发送温度读取命令
case 5:
er+=s_write_byte(5);
break; //发送湿度读取命令
default :break;
}
DAT_R();
for(i=0;i<65535;i++)
{
for(j=0;j<65535;j++)
//for(j=0;j<10;j++)
{
if(SDA == 0)
{
break;
}
}
if(SDA == 0)
{
break;
}
}
if(SDA) //SDA没有拉低,错误信息加1
{
er += 1;
}
d1 = s_read_byte(ACK); //数据读取
d2 = s_read_byte(ACK);
d3 = s_read_byte(noACK);
return er;
}
我通过模拟的I2C向sht11写读温湿度命令,等待一段时间之后读,发现标红的那两行,如果内循环中j<65535就可以不可以通过模拟串口正常通信,如果改成j<10,就可以正常通信,但是这时候采集不到数据,读是错误的。
|