4070|2

78

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

ARM9 2440读取SHT11失败,全是0XFF,原因会有哪些呢? [复制链接]

ARM9 2440读取SHT11失败,全是0XFF;2440发送命令后,在第九个时钟没有检测到ACK信号。
硬件上应该是没有问题的,同一个传感器在其他处理器平台上正常运行。
软件上哪些地方容易出问题?
现在打算从头开始检查,我怎么样来测SHT11已经对处理器的START信号响应?
以下是我的写代码,麻烦大家帮忙看看!
void s_transstart(void)   
{
   rGPECON &= ~0xf0000000;
   rGPECON |= 0x50000000; //output 01
   DATA_TO_1();   
   Delay(1);   
   SCK_TO_0();
   Delay(1);   
   SCK_TO_1();   
   Delay(1);   
   DATA_TO_0();   
   Delay(1);   
   SCK_TO_0();     
   Delay(1);
   SCK_TO_1();   
   Delay(1);   
   DATA_TO_1();           
   Delay(1);   
   SCK_TO_0();     
   Delay(1);        
}   

     
void s_connectionreset(void)   
{     
  unsigned char i;
  rGPECON &= ~0xf0000000;
  rGPECON |= 0x50000000; //output 01
  DATA_TO_1();        
  Delay(1);   
  SCK_TO_0();                     
  Delay(1);   
  for(i=0;i<9;i++) //9 SCK cycles   
  { SCK_TO_1();   
    Delay(1);   
    SCK_TO_0();   
    Delay(2);  
  }   
  s_transstart();  
}

unsigned char s_write_byte(unsigned char value)   
{   
        unsigned char i,error=0;   
        rGPECON &= ~0xf0000000;
        rGPECON |= 0x50000000; //output 01

        DATA_TO_1();
        SCK_TO_0();
        Delay(1);
       
        for(i=0x80;i>0x00;i=(i/2))
          {
                  //masking value with i , write to SENSI-BUS
                  if (i & value)   
                            DATA_TO_1();//DATA=1;            
                    else
                        DATA_TO_0();//DATA=0;   
                    Delay(1);                          
                    SCK_TO_1();//SCK=1;  
                   Delay(1);
                    SCK_TO_0();
                Delay(4);
        }   


  
       
        //change DATA line to input pin,check wether there is an ack
        //The SHTxx indicates the proper reception of a command
        //by pulling the DATA pin low(ACK bit)
        //after the falling edge of the 8th SCK clock.
          DATA_TO_1();//DATA=1;
          Delay(1);

          rGPECON &= ~0xc0000000;
        //The DATA line is released(and goes high)after the falling edge of the 9th SCK clock.
       
        SCK_TO_1();//SCK=1;      
        Delay(1);
        error=DATA_status();
        printf("error=%x\n",error);
        Delay(1);
        SCK_TO_0();//SCK=0;

          return error;   
}   
     
此帖出自ARM技术论坛

最新回复

SHT11,莫非是温湿度传感器?  详情 回复 发表于 2010-6-29 13:14
点赞 关注
 

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
看网上的很多套代码基本上都一样,按照手册的时序来做就行了,为啥我会遇到这个问题?
硬件上没有问题的话,问题出在哪呢?
对于通信的周期有什么特别的要求吗?
我基本上是按照其他平台上成功运行的SHT11代码的波形来做ARM平台上的波形的。
唉,不能再瞎试了,先好好想想。
越是遇到问题应该月不能乱。
此帖出自ARM技术论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
SHT11,莫非是温湿度传感器?
此帖出自ARM技术论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表