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文库

相关推荐
xingzhemengyou114 分钟前
STM32 UART 通信详解
stm32·单片机·嵌入式硬件
济61718 分钟前
STM32串口通信实战|从基础到实战(发送 + 接收控制 LED)---STM32 HAL库专栏
stm32·嵌入式·stm32hal库编程
LCG元25 分钟前
串口屏快速开发:STM32 UART通信,复杂HMI界面调试技巧
stm32·单片机·嵌入式硬件
myron668836 分钟前
基于STM32LXXX的数字电位器(TPL0501-100DCNR)驱动应用程序设计
stm32·单片机·嵌入式硬件
篮子里的玫瑰40 分钟前
FreeRTOS:信号量与互斥量在DMA串口发送中的实战剖析
stm32·单片机·嵌入式硬件·算法
LCG元2 小时前
STM32实战:基于STM32F103的智能鱼缸自动投喂与换水系统
stm32·单片机·嵌入式硬件
Wave8452 小时前
STM32低功耗模式
stm32·单片机·嵌入式硬件
kaikaile19953 小时前
STM32 USB批量传输CDC类实现指南
stm32·单片机·嵌入式硬件
Heartache boy3 小时前
野火STM32_HAL库版课程笔记-TB6612FNG驱动有刷电机
笔记·stm32·单片机
漠落3 小时前
GD32替换STM32导致ADC卡顿问题解析
stm32·单片机·gd32