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

相关推荐
Wallace Zhang8 小时前
STM32 - Embedded IDE - GCC - 解决LWRB库在GCC编译器会编译失败,在ARMCC编译器时却正常编译
ide·stm32·嵌入式硬件
ksk自在无敌19 小时前
ESP8266的AP模式与STA编写,
stm32·单片机·嵌入式硬件
jllllyuz19 小时前
SysTick定时器的工作原理是什么
stm32·单片机·嵌入式硬件
滴滴滴嘟嘟嘟.20 小时前
STM32 HAL驱动MPU6050传感器
stm32·单片机·嵌入式硬件
食鹿...1 天前
【记录贴】STM32 I2C 控制 OLED 卡死?根源在 SR1 与 SR2 的读取操作
stm32·单片机·嵌入式硬件
范纹杉想快点毕业1 天前
《嵌入式 C 语言编码规范与工程实践个人笔记》参考华为C语言规范标准
服务器·c语言·stm32·单片机·华为·fpga开发·51单片机
Chipi Chipi1 天前
STM32即插即用HAL库驱动系列——4位串行数码管显示
stm32·单片机·嵌入式硬件
bai5459361 天前
STM32 DMA+AD多通道
stm32·单片机·嵌入式硬件
2201_756206341 天前
day 16 stm32 IIC
stm32·单片机·嵌入式硬件
Hello_Embed1 天前
STM32HAL 快速入门(六):GPIO 输入之按键控制 LED
笔记·stm32·单片机·嵌入式硬件·学习