一:图解软件IIC
1:协议模拟
①IO定义
#include "CH57x_common.h"
#ifndef SRC_I2C_H_
#define SRC_I2C_H_
//IO方向设置
typedef unsigned char u8;
#define I2C_Pin_SCL GPIO_Pin_10
#define I2C_Pin_SDA GPIO_Pin_11
#define SCL_H GPIOB_SetBits( I2C_Pin_SCL )
#define SCL_L GPIOB_ResetBits( I2C_Pin_SCL )
#define SDA_H GPIOB_SetBits( I2C_Pin_SDA )
#define SDA_L GPIOB_ResetBits( I2C_Pin_SDA )
#define SCL_read GPIOB_ReadPortPin( I2C_Pin_SCL )
#define SDA_read GPIOB_ReadPortPin( I2C_Pin_SDA )
#define SCL_out GPIOB_ModeCfg(I2C_Pin_SCL, GPIO_ModeOut_PP_5mA)
#define SCL_in GPIOB_ModeCfg(I2C_Pin_SCL, GPIO_ModeIN_PU)
#define SDA_out GPIOB_ModeCfg(I2C_Pin_SDA, GPIO_ModeOut_PP_5mA)
#define SDA_in GPIOB_ModeCfg(I2C_Pin_SDA, GPIO_ModeIN_PU)
②初始化IIC
③开始信号
④停止信号
(SCL在高电平期间SDA只能为稳定状态,一旦有电平变化就会被判定为停止或开始信号)
⑤等待应答信号
⑥产生应答信号
⑦不产生应答信号(同上只是SDA一直为高即在第9个CLK持续为高,产生ACK这持续为低)
⑧发送一个字节 同上差不多第52讲 I2C通信实验-M3_哔哩哔哩_bilibili
⑨接收一个字节
(87条消息) IIC原理超详细讲解---值得一看_Z小旋的博客-CSDN博客
(87条消息) STM32驱动AHT10&OLED显示温湿度_stm32获取aht10_优信电子的博客-CSDN博客
(87条消息) IIC协议的软件模拟实现程序_iic程序_我很强大。的博客-CSDN博客
2:协议例程
IIC读取AHT10
① AH10初始化
② 检查AHT10是否存在
③ AHT10软复位
④ 触发测量
⑤ 读取数据
⑥ 数据处理
现象:(93条消息) CH573F-AHT10_kedvellek的博客-CSDN博客