STM32之IIC通讯-SHT30温湿度采集

本文介绍了如何使用STM32F103RCT6单片机通过IIC协议与SHT30温湿度传感器进行通信。实验中,IIC_SDA连接到PC11,IIC_SCL连接到PC12,并提供了SHT30的头文件和源代码。最终,实验结果通过串口进行显示。
摘要由CSDN通过智能技术生成

一、实验目的:通过单片机普通IO口,模拟IIC时序,掌握IIC通讯协议。
二、实验用到的主控芯片:STM32F103RCT6,IIC通讯引脚IIC_SDA:PC11,IIC_SCL:PC12
三、SHT30地址线接地。
四、SHT30.h

#ifndef SHT30_H
#define SHT30_H
#include "delay.h"
#include "sys.h"
#include "stdio.h"
#include "usart.h"
#include "string.h"
 
extern u8 humiture_buff1[20];

void SHT30_Init(void);
void IIC_ACK(void);
void IIC_NACK(void);
u8 IIC_wait_ACK(void);
void IIC_Start(void);
void IIC_Stop(void);
void IIC_SendByte(u8 byte);
u8 IIC_RcvByte(void);
void SHT30_read_result(u8 addr);
 
 #endif

五、SHT30.c

#include "SHT30.h" 

#define write 0
#define read  1

//IIC总线接口定义
#define SCL PCout(12)
#define SDA_OUT PCout(11)
#define SDA_IN PCin(11)
#define IIC_INPUT_MODE_SET()  {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;}
#define IIC_OUTPUT_MODE_SET() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=3<<12;}

 
float humiture[4];
u8 humiture_buff1[20];

void SHT30_Init(void)
{
   
	GPIO_InitTypeDef GPIO_InitStructure;
	//RCC->APB2ENR|=1<<4;//先使能外设IO PORTC时钟 
	RCC_APB2PeriphClockCmd(	RCC_APB2Periph_GPIOC, ENABLE );	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_11;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
 	SCL=1;
	SDA_OUT=1;
}	
 /*主机发送ACK*/
void IIC_ACK(void)
{
   
  IIC_OUTPUT_MODE_SET();
  SCL=0;
  delay_us(2
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

走钢丝的猴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值