IIC总线是PHLIPS公司在八十年代初推出的一种串行的半双工同步总线,主要用于连接整体电路。
IIC总线为两线制,只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。
IIC的四种时序:
①、起始信号——在SCL为高电平期间,SDA(数据线)从高电平到低电平的变化(下降沿)
②、停止信号——在SCL为高电平期间,SDA(数据线)从低电平到高电平的变化(上升沿)
③、数据传输——时钟信号在高电平期间,数据线上的数据必须保持稳定;时钟信号在低电平期间,数据线上的数据允许发生变化
④、应答信号和非应答信号——发送器在发送完8位的数据位之后,接收器必须在第9个时钟周期,返回一个应答信号(0),或者非应答信号(1)
四种IIC协议
①、主机给从机发送一个字节
②、主机给从机发送多个连续字节
③、 从机给主机发送一个字节
④、 从机给主机发送多个连续字节
本次实验目的为:通过GPIO模拟IIC协议并读取温湿度芯片IIC协议经过公式转换后将结果打印到串口工具上。
温湿度转换公式:
代码实现
一、si7006.h——头文件的包络和功能函数的声明
#ifndef __SI7006_H__
#define __SI7006_H__
#include "iic.h"
#define SI7006_SLAVE 0x40
void si7006_init(void);
short si7006_read_data(unsigned char slave_addr, unsigned char reg_addr);
#endif //__SI7006_H__
二、iic.h——头文件的包络和功能函数的声明以及基本功能的实现(例如:数据线、时钟线上的电平的高低变化和数据的读写)