• 大小: 4.98MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-18
  • 语言: 其他
  • 标签: STM32  SHT3X  

资源简介

本文是我参考了CSDN里许多博主的文档和代码改编的,检测的数据比较稳定,具体的优化算法可以再简便写,代码里的检测模式设置的选择可以改变检测的时间,具体的根据自己的要求而定,该文档和代码只供参考,如有不足之处,烦请各位大牛指出,谢谢!

资源截图

代码片段和文件信息

#include “i2c_hal.h“

// SDA on PB7
#define SDA_LOW()  IIC_SDA=0 // set SDA to low
#define SDA_OPEN() IIC_SDA=1 // set SDA to open-drain
#define SDA_READ   READ_SDA  // read SDA

// SCL on PB6            /* -- adapt the defines for your uC -- */
#define SCL_LOW()  IIC_SCL=0 // set SCL to low
#define SCL_OPEN() IIC_SCL=1 // set SCL to open-drain
#define SCL_READ   READ_SCL  // read SCL


//-----------------------------------------------------------------------------
void I2c_Init(void)                      /* -- adapt the init for your uC -- */
{
RCC->APB2ENR|=1<<3; //先使能外设IO PORTB时钟 
  SDA_OPEN();
SCL_OPEN();
GPIOB->CRL&=0X00FFFFFF; //PB6/7 推挽输出
GPIOB->CRL|=0X55000000;    
}

//-----------------------------------------------------------------------------
void I2c_StartCondition(void)//起始信号
{
  SDA_OPEN();     //sda线输出
delay_us(10);
SCL_OPEN();
delay_us(10);
  SDA_LOW();//START:when CLK is highDATA change form high to low 
delay_us(100);
SCL_LOW();//钳住I2C总线,准备发送或接收数据 
delay_us(100);
}

//-----------------------------------------------------------------------------
void I2c_StopCondition(void)
{
  SCL_LOW();
delay_us(10);
SDA_LOW();
delay_us(10);
SCL_OPEN();
delay_us(100);//STOP:when CLK is high DATA change form low to high
SDA_OPEN();
delay_us(100);
}

//-----------------------------------------------------------------------------
etError I2c_WriteByte(u8t txByte)
{
  etError error = NO_ERROR;
  u8t     mask;
  for(mask = 0x80; mask > 0; mask >>= 1) // shift bit for masking (8 times)
  {
    if((mask & txByte) == 0) {SDA_LOW(); }  //数据线拉低,发送0--printf(“%ld\r\n“SDA_LOW());
    else                     {SDA_OPEN();} //数据线拉高,发送1--printf(“%ld\r\n“SDA_OPEN());
delay_us(10);
SCL_OPEN();   //时钟线拉高,告诉从机,主机数据发送完毕
    delay_us(50);  //电平保持时间,等待从机接收数据
    SCL_LOW();   //时钟线拉低,告诉从机,主机需要发送数据
    delay_us(10);  //电平保持时间,等待时钟线稳定
  }
  SDA_OPEN();  //数据线上拉
  SCL_OPEN(); //时钟线拉高,告诉从机,主机现在开始读取数据
  delay_us(100);                  // data set-up time (t_SU;DAT)
  if(GPIOB->IDR&(1<<7)) error = ACK_ERROR;       // 检测从机是否回应应答,SDA_READ(GPIOB_7)为1则应答失败
SCL_LOW();
  delay_us(200);                 // wait to see byte package on scope
  return error;                         // return error code
}

//-----------------------------------------------------------------------------
etError I2c_ReadByte(u8t *rxByte etI2cAck ack u8t timeout)
{
etError error = NO_ERROR;
u8t mask;
*rxByte = 0x00;
for(mask = 0x80; mask > 0; mask >>= 1) // shift bit for masking (8 times)

SCL_LOW();  //时钟线拉低,告诉从机,主机需要数据
delay_us(20);    //电平保持时间,等待时钟线稳定 
SCL_OPEN();      //时钟线拉高,告诉从机,主机现在正在读取数据  
delay_us(30);                 // SCL high time (t_HIGH)
if(GPIOB->IDR&(1<<7)) *rxByte |= mask;   // read bit
delay_us(20);                 // clock set-up time (t_SU;CLK)       
}
SCL_LOW();
if(ack == ACK) {SDA_LOW();}              // send

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-01-18 11:00  STH3x参考代码\
     文件      633166  2018-01-18 11:00  STH3x参考代码\IIC协议总结.docx
     文件      926221  2017-12-12 12:19  STH3x参考代码\Sensirion_Humidity_Sensors_SHT3x_Datasheet_digital.pdf
     目录           0  2018-01-15 20:19  STH3x参考代码\SHT30代码\
     文件        3584  2018-01-10 14:55  STH3x参考代码\SHT30代码\core_cm3.crf
     文件          95  2018-01-10 14:55  STH3x参考代码\SHT30代码\core_cm3.d
     文件       10500  2018-01-10 14:55  STH3x参考代码\SHT30代码\core_cm3.o
     文件      226547  2018-01-10 15:49  STH3x参考代码\SHT30代码\i2c_hal.crf
     文件         296  2018-01-10 15:49  STH3x参考代码\SHT30代码\i2c_hal.d
     文件      240036  2018-01-10 15:49  STH3x参考代码\SHT30代码\i2c_hal.o
     文件        1859  2018-01-15 15:47  STH3x参考代码\SHT30代码\JlinkLog.txt
     文件         671  2018-01-10 15:50  STH3x参考代码\SHT30代码\JlinkSettings.ini
     文件      230591  2018-01-10 15:49  STH3x参考代码\SHT30代码\main.crf
     文件         295  2018-01-10 15:49  STH3x参考代码\SHT30代码\main.d
     文件      241764  2018-01-10 15:49  STH3x参考代码\SHT30代码\main.o
     目录           0  2018-01-15 20:19  STH3x参考代码\SHT30代码\OBJ\
     文件        3584  2018-01-10 16:31  STH3x参考代码\SHT30代码\OBJ\core_cm3.crf
     文件         103  2018-01-10 16:31  STH3x参考代码\SHT30代码\OBJ\core_cm3.d
     文件       10568  2018-01-10 16:31  STH3x参考代码\SHT30代码\OBJ\core_cm3.o
     文件      224495  2018-01-15 17:49  STH3x参考代码\SHT30代码\OBJ\delay.crf
     文件         289  2018-01-15 17:49  STH3x参考代码\SHT30代码\OBJ\delay.d
     文件      236856  2018-01-15 17:49  STH3x参考代码\SHT30代码\OBJ\delay.o
     文件          19  2018-01-15 15:41  STH3x参考代码\SHT30代码\OBJ\ExtDll.iex
     文件      232267  2018-01-15 18:01  STH3x参考代码\SHT30代码\OBJ\i2c_hal.crf
     文件         511  2018-01-15 18:01  STH3x参考代码\SHT30代码\OBJ\i2c_hal.d
     文件      246052  2018-01-15 18:01  STH3x参考代码\SHT30代码\OBJ\i2c_hal.o
     文件      235828  2018-01-15 18:01  STH3x参考代码\SHT30代码\OBJ\main.crf
     文件         502  2018-01-15 18:01  STH3x参考代码\SHT30代码\OBJ\main.d
     文件      247996  2018-01-15 18:01  STH3x参考代码\SHT30代码\OBJ\main.o
     文件      243104  2018-01-15 18:01  STH3x参考代码\SHT30代码\OBJ\sht3x.crf
     文件         516  2018-01-15 18:01  STH3x参考代码\SHT30代码\OBJ\sht3x.d
............此处省略76个文件信息

评论

共有 条评论