978|4

208

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

【STM32H5开发板】IIC读取湿温度 [复制链接]

开发平台:KEIL

开发板:STM32H5

目地:本篇是利用STM32H5通过IIC读取AHT10的值,并显示在OLED上。

1.连接方式:

PC2--SCL

PC3--SDA

OLED看上一个连接。

2、IIC时序

3.核心代码:

#define AHT10_Delay_us(time)				HAL_Delay(time)	//delay_us(time)
#define AHT10_Delay_ms(time)				HAL_Delay(time)	//delay_ms(time)

#define AHT10_I2C_SCL_PIN      				GPIO_PIN_2
#define AHT10_I2C_SCL_GPIO_PORT   	  GPIOC  
#define AHT10_I2C_SCL_GPIO_RCC      	__HAL_RCC_GPIOC_CLK_ENABLE()  
 
#define AHT10_I2C_SDA_PIN      				GPIO_PIN_3
#define AHT10_I2C_SDA_GPIO_PORT   	  GPIOC
#define AHT10_I2C_SDA_GPIO_RCC      	__HAL_RCC_GPIOC_CLK_ENABLE() 

#define AHT10_SCL_H         HAL_GPIO_WritePin(AHT10_I2C_SCL_GPIO_PORT, AHT10_I2C_SCL_PIN, GPIO_PIN_SET)   
#define AHT10_SCL_L         HAL_GPIO_WritePin(AHT10_I2C_SCL_GPIO_PORT, AHT10_I2C_SCL_PIN, GPIO_PIN_RESET)

#define AHT10_SDA_H         HAL_GPIO_WritePin(AHT10_I2C_SDA_GPIO_PORT, AHT10_I2C_SDA_PIN, GPIO_PIN_SET)
#define AHT10_SDA_L         HAL_GPIO_WritePin(AHT10_I2C_SDA_GPIO_PORT, AHT10_I2C_SDA_PIN, GPIO_PIN_RESET)
#define AHT10_READ_SDA      HAL_GPIO_ReadPin(AHT10_I2C_SDA_GPIO_PORT,AHT10_I2C_SDA_PIN)

初始化:
	AHT10_I2C_SCL_GPIO_RCC;
	AHT10_I2C_SDA_GPIO_RCC;//??GPIO??
	GPIO_InitTypeDef  GPIO_InitStruct;
	GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  //GPIO_InitStruct.Pull  = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  GPIO_InitStruct.Pin = AHT10_I2C_SCL_PIN;
  HAL_GPIO_Init(AHT10_I2C_SCL_GPIO_PORT, &GPIO_InitStruct);
	
	GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  //GPIO_InitStruct.Pull  = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  GPIO_InitStruct.Pin = AHT10_I2C_SDA_PIN;
  HAL_GPIO_Init(AHT10_I2C_SDA_GPIO_PORT, &GPIO_InitStruct);
	
	AHT10_SDA_H;
	AHT10_SCL_H;


	AHT10_IIC_Init();
	
	AHT10_IIC_Start();
	AHT10_IIC_Send_Byte(AHT10_ADDRESS);
	AHT10_IIC_Send_Byte(0xe1);	
	AHT10_IIC_Send_Byte(0x08);
	AHT10_IIC_Send_Byte(0x00);
	AHT10_IIC_Stop();	
	AHT10_Delay_ms(40);//??20ms??????

		ret=AHT10ReadData(&temperature,&humidity);
		if(ret==0)
		{
			GUI_ShowString(0,0,(unsigned char*)"recv temp fail!",8,1);
		}
		else
		{
			float temp=temperature*0.1;
			float hum=humidity*0.1;
			//printf("temp:%2.1f,sd:%2.1f\r\n",temp,hum);
			char print_temp[64];
			char print_hum[64];
			sprintf(print_temp,"temp:%2.1f du",temp);
			sprintf(print_hum,"hum:%2.1f%%",hum);
			GUI_ShowString(0,0,(unsigned char*)print_temp,16,1);
			GUI_ShowString(0,2,(unsigned char*)print_hum,16,1);
			GUI_ShowString(0,4,(unsigned char*)"hello word!",16,1);
		}

  4、视频

9fadaa328aa1ec2b6ef5a8aeb71868bd

 

此帖出自stm32/stm8论坛

最新回复

谢谢分享,期待后续!   详情 回复 发表于 2023-6-24 22:34
点赞 关注
 

回复
举报

1668

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

用STM32H5通过IIC读取AHT10的值,并显示在OLED上,这个好好跟着楼主学一下哈

此帖出自stm32/stm8论坛

点评

我也是摸了好几天才玩通的  详情 回复 发表于 2023-6-25 17:47
 
 

回复

7462

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 

谢谢分享,期待后续!

此帖出自stm32/stm8论坛

点评

在进行中呢  详情 回复 发表于 2023-6-25 17:47
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 

回复

208

帖子

1

TA的资源

一粒金砂(高级)

4
 
火辣西米秀 发表于 2023-6-23 20:44 用STM32H5通过IIC读取AHT10的值,并显示在OLED上,这个好好跟着楼主学一下哈

我也是摸了好几天才玩通的

此帖出自stm32/stm8论坛
 
 
 

回复

208

帖子

1

TA的资源

一粒金砂(高级)

5
 
freebsder 发表于 2023-6-24 22:34 谢谢分享,期待后续!

在进行中呢

此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表