資源簡介
基于官方的例程,移植到STM32F103,采用查詢方式,間隔500ms讀一次,溫度和濕度輪流讀取,注意SDA連接IO口配置為OD開漏輸出

代碼片段和文件信息
#define?_C_SHT20Drv
#include?“stm32f1xx_hal.h“
#include?“DataDef.h“
#include?“SHT20Drv.h“
//==============================================================================
void?I2c_StartCondition?()
//==============================================================================
{
??/*
??SDA=HIGH;
??SCL=HIGH;
??SDA=LOW;
??DelayMicroSeconds(10);??//?hold?time?start?condition?(t_HD;STA)
??SCL=LOW;
??DelayMicroSeconds(10);
??*/
??SHT20_SDA(1);
??SHT20_SCL(1);
??SHT20_SDA(0);
??DelayMicroSeconds(10);
??SHT20_SCL(0);
??DelayMicroSeconds(10);
}
//==============================================================================
void?I2c_StopCondition?()
//==============================================================================
{
??/*
??SDA=LOW;
??SCL=LOW;
??SCL=HIGH;
??DelayMicroSeconds(10);??//?set-up?time?stop?condition?(t_SU;STO)
??SDA=HIGH;
??DelayMicroSeconds(10);
??*/
??SHT20_SDA(0);
??SHT20_SCL(0);
??SHT20_SCL(1);
??DelayMicroSeconds(10);
??SHT20_SDA(1);
??DelayMicroSeconds(10);
??
}
//==============================================================================
u8?I2c_WriteByte?(u8?txByte)
//==============================================================================
{
??u8?maskerror=0;
??for?(mask=0x80;?mask>0;?mask>>=1)???//shift?bit?for?masking?(8?times)
??{?if?((mask?&?txByte)?==?0)?SHT20_SDA(0);//SDA=LOW;//masking?txByte?write?bit?to?SDA-Line
????else?SHT20_SDA(1);//SDA=HIGH;
????DelayMicroSeconds(1);?????????????//data?set-up?time?(t_SU;DAT)
????SHT20_SCL(1);//SCL=HIGH;?????????????????????????//generate?clock?pulse?on?SCL
????DelayMicroSeconds(5);?????????????//SCL?high?time?(t_HIGH)
????SHT20_SCL(0);//SCL=LOW;
????DelayMicroSeconds(1);?????????????//data?hold?time(t_HD;DAT)
??}
??SHT20_SDA(1);//SDA=HIGH;???????????????????????????//release?SDA-line
??SHT20_SCL(1);//SCL=HIGH;???????????????????????????//clk?#9?for?ack
??DelayMicroSeconds(1);???????????????//data?set-up?time?(t_SU;DAT)
??//if(SDA_CONF==HIGH)?error=ACK_ERROR;?//check?ack?from?i2c?slave
??if(SHT20_SDA_Read)?error=?ACK_ERROR;
??SHT20_SCL(0);//SCL=LOW;
??DelayMicroSeconds(20);??????????????//wait?time?to?see?byte?package?on?scope
??return?error;???????????????????????//return?error?code
}
//==============================================================================
u8?I2c_ReadByte?(etI2cAck?ack)
//==============================================================================
{
??u8?maskrxByte=0;
??SHT20_SDA(1);//SDA=HIGH;???????????????????????????//release?SDA-line
??for?(mask=0x80;?mask>0;?mask>>=1)???//shift?bit?for?masking?(8?times)
??{?SHT20_SCL(1);//SCL=HIGH;?????????????????????????//start?clock?on?SCL-line
????DelayMicroSeconds(1);?????????????//data?set-up?time?(t_SU;DAT)
????DelayMicroSeconds(3);?????????????//SCL?high?time?(t_HIGH)
????//if?(SDA_CONF==1)?rxByte=(rxByte?|?mask);?//read?bit
????if?(SHT20_SDA_Read)?rxByte=(rxByte?|?mask);
????SHT20_SCL(0);//SCL=LOW;
????DelayM
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????10445??2016-07-20?11:57??SHT20Drv.c
?????文件????????2847??2016-07-20?12:31??SHT20Drv.h
評論
共有 條評論