关注

嵌入式学习——51单片机(下)

UART:

Unervisal Async Recveiver Transmitter,通用异步收发器,全双工 串行 异步
RXD:接收信号线
TXD:发送信号线

单工:

通信时,数据接收方和发送方是固定的,通过一根信号线实现数据收发,数据传输的方向是单一的(只能由发送方发给接收方)
半双工:

通信时,数据接收方和发送方不是固定的(双方都可以发送或接收数据)通过一根信号线实现数据收发,数据传输的方向可以是双向的(同一时刻,数据传输的方向是单一的)
I2C:SCL 时钟线 SDA 数据线
全双工:

通信时,数据接收方和发送方不是固定的(双方都可以发送或接收数据),通过两根信号线实现数据收发,数据传输的方向是双向的

串口发送数据时,遵循LSB 低位先行原则,先发送数据低位,再发送高位

串行:

通过一根信号线将要发送的数据逐个bit逐个bit的进行发送
1. 传输速度慢
2. 成本低,实现简单
3. 传输距离远(RS485 差分 抗干扰性好)

并行:

通过多根信号线同时去传输多个bit
1. 传输速度快
2.成本高,实现复杂
3. 传输距离近(30米以内,存在信号偏移、电磁波干扰)


奇校验:

奇校验值为'1',若数据位中'1'的个数加上奇校验中的'1',保持'1'的总个数为
奇数个,则代表奇校验通过


偶校验:

偶校验值为'0',若数据位中'1’的个数加上偶校验中的'0',保持'1‘的总个数为偶
数个,则代表偶校验通过


奇偶校验无法判断偶数个bit出错的问题


串口通信参数:
9600 8 N 1
115200 8 E 1
波特率:bits per second,每秒传输bit数量
8:8位数据位
N:None 无校验
O:Odd 奇校验
E:Even 偶校验
1: 1位停止位


同步:有时钟线,通信双方可以通过时钟线来实现通信频率同步
异步:没有时钟线,通信双方无法通过时钟线实现同步


串口是一种异步通信协议,但可以通过波特率实现类似同步

Modbus 协议(主从应答)

主机-> 从机:

起始位 地址码 功能码 数据位1 数据位2 校验码 结束位
0xAA    0x01     0x01     0x42     0x00     0xEE    0xBB

功能码的低四位用来区分控制对象:

01:控制led
02: 控制数码管
03:控制蜂鸣器
04:温度采集

功能码的高四位是数据流向位:

0:主机->从机
1:从机->主机

校验码是前五位数据之和

从机 -> 主机:
起始位 地址码 功能码 数据位1 数据位2 校验码 结束位
0xAA     0x01     0x81   0x42     0x00      0x6E    0xBB

主机下发Modbus协议指令,从机接收指令解析获得功能码,根据功能码完成对外设的控制,并给主机回复应答

ds18b20 (数字温度传感器)

参数:

1. 量程(测量范围) -55℃ - 125℃
2. 精度(误差):±0.5℃
3. 分辨率
9位:0.5℃
10位:0.25℃
11位:0.125℃
12位:0.0625℃
4. 接口:GPIO 单总线
5. 工作电压: 3V- 5.5V

线与特性:

多个设备的输出引脚直接连接,实现"与"逻辑。只要有一个设备输出低电平,总线就被拉低

作为数据接收方时,需要释放总线(拉高电平)

DS18B20采集温度的流程:

1、复位

2、发送0xCC,跳过ROM

3、发送0x44,开启温度转换

4、延时1s

5、复位

6、发送0xCC,跳过ROM

7、发送0xBE,读取温度

8、读取2字节温度

主机将总线拉低480us - 960us,代表发送了复位脉冲;
主机释放总线,ds18b20需要再15-60us内检测引脚是否为高电平;
主机再60-240us内检测引脚是否为低电平,如果是低电平,代表ds18b20回复了存在脉冲;
主机释放总线,引脚呈现高电平。

写0时序:

主机将总线拉低至少60us,不超过120us;
ds18b20在60us内来采样引脚电平,若是低电平,则代表主机发送了bit 0;
主机释放总线,引脚变为高电平;


写1时序:
主机将总线拉低大于1us;
释放总线,引脚变为高电平;
ds18b20在45us内对引脚的电平进行采样,若是高电平,代表主机发送了bit 1;

读时序:
主机将总线拉低大于1us;
释放总线,引脚呈现高电平;
主机再15us内对引脚电平进行采样;
若采到一个低电平,代表ds18b20发送了bit0;
若采到一个高电平,代表ds18b20发送了bit1;

DHT11(温湿度传感器)

参数:

测量范围:
        温度:0 - 50℃
        湿度:20-90%RH
精度:
        温度:±2℃
        湿度:±5%RH
分辨率:1
供电电压:3 - 5.5V

DHT11传输数据:40个bit,5个字节;先发高位。

1字节湿度整数 + 1字节湿度小数 + 1字节温度整数 + 1字节温度小数+ 1字节校验和

dht11通信时序:

主机发送起始信号:

主机将总线先拉低至少18ms,释放总线,将总线拉高20 - 40us,代表主机向dht11发送了一个起始信号

dht11回复响应信号:

DHT11将总线拉低至少80us,释放总线,拉高80us;最后dht11将总线拉低,准备开始传输数据

dht11传输数据:
传输'0':dht11将总线拉低50us,再将总线拉高持续26-28us左右;
传输'1': dht11将总线拉低50us,再将总线拉高持续60 - 70us左右。

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2301_81380359/article/details/159215532

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--