一、AHT10传感器
1、简介
AHT10,新一代温湿度传感器在尺寸与智能方面建立了新的标准:它嵌入了适于回流焊的双列扁平无引脚SMD 封装,底面 4 x 5mm ,高度1.6mm。传感器输出经过标定的数字信号,标准 I2C 格式。AHT10 配有一个全新设计的 ASIC专用芯片、一个经过改进的MEMS半导体电容式湿度传感元件和一个标准的片上温度传感元件,其性能已经大大提升甚至超出了前一代传感器的可靠性水平,新一代温湿度传感器,经过改进使其在恶劣环境下的性能更稳定。目前AHT系列已经升级到了最新的AHT40 ,但是AHT10的控制方法在AHT系列的后续产品上任然适用。
2、特点
● 数字输出,I2C 接口
● 优异的长期稳定性
● 采用SMD封装适于回流焊
● 响应迅速、抗干扰能力强
3、接口定义
电源引脚(VDD,GND)
AHT10 的供电范围为 1.8-3.6V,推荐电压为3.3V。电源(VDD)和接地(GND)之间须连接一个 100nF 的去耦电容,且电容的位置应尽可能靠近传感器。
串行时钟 SCL
SCL 用于微处理器与AHT10之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在最小SCL 频率。
串行 数据SDA
SDA 引脚用于传感器的数据输入和输出。当向传感器发送命令时,SDA 在串行时钟(SCL)的上升沿有效,且当 SCL 为高电平时,SDA 必须保持稳定。在 SCL下降沿之后,SDA 值可被改变。为确保通信安
全,SDA 的有效时间在 SCL 上升沿之前和下降沿之后应该分别延长至 TSU and THO 。当从传感器读取数据时, SDA在 SCL 变低以后有效(TV),且维持到下一个 SCL 的下降沿。
本设计是用别人利用AHT10集成好的电路板,具体样式和型号如下所示:
二、HC32F460KETA程序设计
1、协议设计
使用模拟IIC设计,所以接口选择,使用普通GPIO,具体如下:
具体模拟IIC的内容说明请参考我的另外一篇博客:链接: link
2、具体代码
起始信号:
高低电平的延时不是固定8us,其他时间长度的延时也是可以的,但是必须满足时序的要求。
void I2C_Start(void) //I2C主机发送START信号
{
SDA_Pin_Output_High();
SensorDelay_us(8);
SCL_Pin_Output_High();
SensorDelay_us(8);
SDA_Pin_Output_Low();
SensorDelay_us(8);
SCL_Pin_Output_Low();
SensorDelay_us(8);
}
终止信号:
void Stop_I2C(void) //一条协议结束
{
SDA_Pin_Output_Low();
SensorDelay_us(8);
SCL_Pin_Output_High();
SensorDelay_us(8);
SDA_Pin_Output_High();
SensorDelay_us(8);
}
写一个字节:
void ZSSC_I2C_WR_Byte(uint8_t Byte) //往从设备写一个字节
{
uint8_t Data,N,i;
Data=Byte;
i = 0x80;
for(N=0;N<8;N++)
{
SCL_Pin_Output_Low();
Delay_3us();
if(i&Data)
{
SDA_Pin_Output_High();
}
else
{
SDA_Pin_Output_Low();
}
SCL_Pin_Output_High();
Delay_3us();
Data <<= 1;
}
SCL_Pin_Output_Low();
SensorDelay_us(8);
SDA_Pin_IN_FLOATING();
SensorDelay_us(8);