目录
接口技术:
下面时在嵌入式软件开发过程中,使用得最多的接口技术:
1根线通信:1-Wire/W1/一线协议,典型代表DS18B20温湿度传感器,DHT11温湿度传感器
2根线通信:I2C/IIC协议,典型代表SHT30温湿度传感器,OLED显示屏、RTC、触摸屏
3根线通信:UART/RS232/串口协议,典型代表GPS、GPRS/3G/4G、NB-IOT、串口蓝牙,WiFi等
4根线通信:SPI协议,典型代表NFC芯片、SPI以太网、LoRa等;
一线协议概述
定义:
主机和从机通过一根数据线进行通信,在一条总线上可以挂多个器件。
特点:
异步通信 串行 半双工(分时) 电平信号
DHT11温湿度传感器
下面以DHT11温湿度传感器来讲解来讲解一下这些特点:
DHT11器件采用简单的单总线通信,单总线即只有一根数据线,系统中的数据交换,控制均由单总线完成。
DHT11温湿度传感器特点:
①没有相应的时钟线,所以是异步通信
②只有一根总线,所以是串行传输数据
③这根总线既可以传输时钟又可以传输数据,可以双向传输,但是要分时,所以是半双工通
④有参考电平线(GND),所以是电平信号
⑤单总线上所有的命令或数据的发送都是遵循低位先发送的原则
DHT11通信时序:
数据总时序
用户主机(STM32单片机)发送一次开始信号后,DHT11从低功耗模式转换到高速模式,待主机开始信号结束后,DHT11发送响应信号,并送出5个字节的采样数据,之后结束本次采集任务。
主机发送起始信号
首先单片机将连接DHT11DATA引脚的GPIO口输出低电平,且低电平保持时间不能小于18ms(t1), 然后拉高数据线 20-40us ,等待读取DHT11的响应信号。
检测从机应答信号
DHT11的DATA引脚检测到外部信号有低电平(t1),并等待外部低电平信号结束(t2),之后DHT11开始输出80us(t3)的低电平作为应答信号,紧接着输出80us(t4)的高电平通知主机准备接收数据。
数据传输
DHT11在传输数据时,一次传输4字节温湿度值数据和1字节数据校验。其数据格式为: 1B湿度整数数据+1B湿度小数数据+1B温度整数数据+1B温度小数数据+1B校验位。
在发送每个字节的8个位时,采用高位优先方式(MSB),其中对于数据位0/1的电平定义如下:
数据位 "0" :50微秒的低电平加26-28微秒的高电平;
数据位“1”:50微秒的低电平加70微秒的高电平;
单片机在处理数据接收时可以先等待低电平过去,即等待数据线拉高,再延时40us(因为40us大于28us且小于7ous),再检测此时数据线是否为高,如果为高,则数据判定为1,否则为0。