STM32F030读取温湿度传感器SHT20的C程序源码经(3)

2019-06-11 17:52

* @brief IIC start signal

* @comment SCL、SDA同为高,SDA跳变成低之后,SCL跳变成低 * @retval None */

void I2CStart(void {

HTU20_SDA_OUT(; HTU20_SDA_1(; HTU20_SCL_1(; I2CDelay(5; //大于4.7us HTU20_SDA_0(; I2CDelay(5; //大于4us HTU20_SCL_0(; I2CDelay(5; } /**

* @brief IIC Stop Signal

* @commet SCL、SDA同为低,SCL跳变成高之后,SDA跳变成高* @retvalNone

*/

void I2CStop(void {

HTU20_SDA_OUT(; HTU20_SDA_0(; HTU20_SCL_0(; I2CDelay(5; HTU20_SCL_1(; I2CDelay(5; HTU20_SDA_1(; I2CDelay(5; } /**

* @brief simu IIC write byte * @paramWrite_Byte: data * @retvalNone */

BYTE I2C_Write_Byte(BYTE Write_Byte {

BYTE i;

HTU20_SDA_OUT(; for(i = 0; i < 8; ++i {

if(Write_Byte& SHT20ADDR {

HTU20_SDA_1(; } else {

HTU20_SDA_0(; }

I2CDelay(1;

HTU20_SCL_1(; //输出SDA稳定后拉高SCL,从机检测到后采样I2CDelay(5; //保证足够长锁定时间,确保从机采样成功

HTU20_SCL_0(; I2CDelay(1; Write_Byte<<= 1; }

I2CDelay(4;

HTU20_SDA_1(; //8位发送完后释放数据线,准备接受应答信号HTU20_SCL_1(; //再次拉高SCL,告诉从机发送完毕,等待应答I2CDelay(5; //原来是5

HTU20_SDA_IN(; i = 100; do {

if(HTU20_SDA == 0 break; i--;

I2CDelay(4; //原来是5 }while(i>0; HTU20_SCL_0(; if(i return ACK; else return NACK;

// if(HTU20_SDA == 1 //SDA为高,收到NACK // return NACK;

// else //SDA为低,收到ACK // return ACK; // HTU20_SCL_0(;

// I2CDelay(15; } /**

* @brief simu read byte form IIC * @param * @retvalNone */

BYTE I2C_Read_Byte(BYTE AckValue//receivebyte {

BYTE i, RDByte = 0;

HTU20_SCL_0(; /*后改的程序*/ HTU20_SDA_OUT(; // HTU20_SCL_0(;

HTU20_SDA_1(; //释放总线,并置数据线为输入HTU20_SDA_IN(; for (i = 0; i < 8; ++i {

HTU20_SCL_1(; //拉高SCL期间,采样 I2CDelay(2; RDByte<<= 1;


STM32F030读取温湿度传感器SHT20的C程序源码经(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Xilinx ISE 9.1i(逻辑设计环境)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: