打印

cc2531使用采集sht11温湿度后usb转串口程序无法通信

[复制链接]
1916|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangmeng0711|  楼主 | 2013-10-16 16:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
linfeng24| | 2013-10-16 21:13 | 只看该作者
重新连接下试试?或者换个版本的软件试试

使用特权

评论回复
板凳
zhangmeng0711|  楼主 | 2013-10-17 09:05 | 只看该作者
应该是软件的问题,我的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,就可以正常通信,但是这时候采集不到数据,读是错误的。

使用特权

评论回复
地板
zhangmeng0711|  楼主 | 2013-10-17 09:14 | 只看该作者
我注意到上述问题之后,添加了一个新任务,当SDA==0时就开始执行从模拟I2C读数据,但是读到的数据是错误的,到底是怎么回事呢,如何才能解决呢?

使用特权

评论回复
5
zhangmeng0711|  楼主 | 2013-10-21 10:39 | 只看该作者
知道原因了,是忙等时间过长造成的问题,不用这种循环方式,用时间定时器解决

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

1

粉丝