STM32Lx GXHT3x SHT3x iic 驱动开发应用详解

简介

项目开发过程中,采用STM32L151 为主控芯片进行设计,并外接GXHT3x进行温湿度数据采集。这里MCU采用片上IIC与GXHT3x进行数据交互,本文详细记录了开发过程,为今后的项目提供参考,加速项目开发进度。

硬件设计

相关原理图

主要相关原理图,这里的关键是MCU片上IIC管脚PB6/PB7最好设计上拉,另外GXTH30的ADDR管脚标志了该器件的地址,这点可以从手册中看到。

时钟

时钟方面,使能外部8Mhz时钟,时钟配置图如下图所示,从图中可以看出ADC的时钟是由内部高速时钟提供的。

IIC配置

串口配置

软件设计

主函数设计

cpp 复制代码
int main(void)
{
  /* USER CODE BEGIN 1 */
  float temp, hum;
  char buffer[50];
  int buffer_len;
  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_I2C1_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	HAL_GPIO_TogglePin(GPIOB, MCU_SYS_LED_PB9_Pin);
	HAL_Delay(1000);

    SHT30_Read(&temp, &hum); //
    buffer_len = sprintf(buffer, "Temperature: %.1f C, Humidity: %.1f%% RH\r\n", temp, hum);
	HAL_UART_Transmit(&huart1, (uint8_t*)buffer, buffer_len, HAL_MAX_DELAY); //

  }
  /* USER CODE END 3 */
}

串口打印设置

添加串口打印宏定义如下:

cpp 复制代码
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif

PUTCHAR_PROTOTYPE
{
	while((USART1->SR&0x40)==0){};
		USART1->DR = ch;
    return ch;
}

调试记录

STM32CubeIDE 1.8.0工程测试记录:可以看出温度是正确的,同时用手按住该器件,温度和湿度有明显的数据变化。

本文使用资源工程下载地址如下:

STM32LxGXHT3xSHT3xiic驱动开发应用详解(含STM32CubeIDE工程,含详细说明,SHT3x手册资源-CSDN文库

附件:关于GXHT3x手册中的关键信息如下

地址确定管脚

通过 ADDR 引脚的相应接线,I2C地址。请注意,I2C地址通过 I2C 的 7 个 MSB 表示read 或 write 标头。LSB 在读取或write 标头。显示默认地址的连线在表 7 和图 7 中。不得留下 ADDR 引脚浮动。请注意,只有 I2C 的 7 个 MSB读/写标头构成 I2C 地址,如下图所示

典型接线

管脚定义

ALERT Pin

警报引脚可用于连接到中断引脚的微控制器。pin 的输出取决于RH/T 读数相对于可编程的值限制。它的功能在单独的应用程序中进行了解释注意。如果未使用,则此 pin 必须保持悬空。

该管脚配合MCU中断,可以保持MCU的低功耗运行,减少对MCU对该器件的访问频度。

nRESET Pin

nReset 引脚可用于生成传感器。要求最小脉冲持续时间为 350 ns可靠地触发传感器的复位。它的功能是在第 4 节中有更详细的解释。如果不使用,则为建议连接到 VDD

本文使用资源工程下载地址如下:

STM32LxGXHT3xSHT3xiic驱动开发应用详解(含STM32CubeIDE工程,含详细说明,SHT3x手册资源-CSDN文库

相关推荐
小程序设计4 小时前
基于STM32的智慧厨房多参数安全监测与预警系统设计
stm32·嵌入式硬件·安全
新晨单片机设计4 小时前
S008C-基于STM32单片机无线抢答器【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus·无线抢答器
Zw-awa4 小时前
Delay_us 与 Delay_ms:用 SysTick 做一把可靠的时间尺
stm32
小程序设计6 小时前
基于STM32森林火灾远程监测模块设计
stm32·单片机·嵌入式硬件
沐欣工作室_lvyiyi8 小时前
基于STM32单片机汽车充电桩控制模块设计(论文+源码)
stm32·单片机·汽车·毕业设计
逐梦之程8 小时前
嵌入式固件升级IAP及调试软件
stm32·单片机
ebiobiz9 小时前
STM32F4 Unity 单元测试与多次测试失败率统计详细步骤
stm32·unity·单元测试
Brilliantwxx10 小时前
【STM32】 I2C 中断模式收发数据实战:从阻塞到中断的架构改造(AT24C02)
stm32·单片机·嵌入式硬件
星河单片机11 小时前
单片机成品方案:基于STM32单片机智能门禁系统
stm32·单片机·嵌入式硬件
en.en..13 小时前
STM 与 ARM
stm32