OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6188|回复: 5

STM8 读取 SHT11有问题

[复制链接]

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-2-7
在线时间
3 小时
发表于 2014-7-26 23:01:00 | 显示全部楼层 |阅读模式
5金钱
我用51能够读出来,但是到了STM8S103K3上面就一直有问题s_measure返回的错误值是2,然后就一直重连,请问这会是什么问题

[mw_shl_code=c,true] while (1) { error=0; error+=s_measure((unsigned char*) &humi_val.i,&checksum,HUMI); //measure humidity error+=s_measure((unsigned char*) &temp_val.i,&checksum,TEMP); //measure temperature if(error!=0) s_connectionreset(); //in case of an error: connection reset else { humi_val.f=(float)humi_val.i; //converts integer to float temp_val.f=(float)temp_val.i; //converts integer to float calc_sth11(&humi_val.f,&temp_val.f); //calculate humidity, temperature //dew_point=calc_dewpoint(humi_val.f,temp_val.f); //calculate dew point printf("temp:%5.1fC humi:%5.1f%% dewpoint:%5.1fC\n",temp_val.f,humi_val.f,dew_point); } for (i=0;i<40000;i++); }[/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-7-26 23:26:03 | 显示全部楼层
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2014-12-18
在线时间
2 小时
发表于 2014-12-18 17:12:08 | 显示全部楼层
首先里面的 发送读温湿度后有个等待时间问题,stm32速度太快,得多等会,还有注意 数据的 大小端
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2014-12-11
在线时间
0 小时
发表于 2014-12-22 13:05:06 | 显示全部楼层
不知道 s_measure((unsigned char*) &humi_val.i,&checksum,HUMI) 裡面的內容!!
但是 STM8 常設的頻率好像只有 2MHZ 變更頻率到 16MHZ 或許就可以用了!!


void DHT_Start(void)
{

GPIO_Init(DHT_Port,DHT_data,GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_WriteLow(DHT_Port,DHT_data);
DelayMs(18);//18.17ms
GPIO_WriteHigh(DHT_Port,DHT_data);//10us
Delayus(20);

}

u8 DHT_Read(void)
{
u8 i, j,pulse,k;
pulse=0;
count81=0;
while(!GPIO_ReadInputPin(DHT_Port,DHT_data));
while(GPIO_ReadInputPin(DHT_Port,DHT_data));
for(i=0;i<5;i++)
{
for (j=0;j<8;j++)
{
while(!GPIO_ReadInputPin(DHT_Port,DHT_data));
 while(GPIO_ReadInputPin(DHT_Port,DHT_data))
 {
  count81++;
 }
pulse<<=1;
   if(count81>20)
pulse +=1;
else
pulse +=0;
count81=0;
}
DHT=pulse;
pulse=0;
}
}
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2014-12-11
在线时间
0 小时
发表于 2014-12-23 23:10:12 | 显示全部楼层
不知道 s_measure((unsigned char*) &humi_val.i,&checksum,HUMI) 裡面的內容!!
但是 STM8 常設的頻率好像只有 2MHZ 變更頻率到 16MHZ 或許就可以用了!!


void DHT_Start(void)
{

GPIO_Init(DHT_Port,DHT_data,GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_WriteLow(DHT_Port,DHT_data);
DelayMs(18);//18.17ms
GPIO_WriteHigh(DHT_Port,DHT_data);//10us
Delayus(20);

}

u8 DHT_Read(void)
{
u8 i, j,pulse,k;
pulse=0;
count81=0;
while(!GPIO_ReadInputPin(DHT_Port,DHT_data));
while(GPIO_ReadInputPin(DHT_Port,DHT_data));
for(i=0;i<5;i++)
{
for (j=0;j<8;j++)
{
while(!GPIO_ReadInputPin(DHT_Port,DHT_data));
 while(GPIO_ReadInputPin(DHT_Port,DHT_data))
 {
  count81++;
 }
pulse<<=1;
   if(count81>20)
pulse +=1;
else
pulse +=0;
count81=0;
}
DHT=pulse;
pulse=0;
}
}
回复

使用道具 举报

2

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
149
金钱
149
注册时间
2013-9-14
在线时间
36 小时
发表于 2015-1-17 11:03:07 | 显示全部楼层
回复【3楼】kpzh2006:
---------------------------------
我硬件仿真···在等待器件回复那里死循环了··收不到器件的回复
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 18:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表