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

UART:

Unervisal Async Recveiver Transmitter,通用异步收发器,全双工 串行 异步

RXD:接收信号线

TXD:发送信号线

单工:

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

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

I2C:SCL 时钟线 SDA 数据线
全双工:

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

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

串行:

通过一根信号线将要发送的数据逐个bit逐个bit的进行发送

  1. 传输速度慢

  2. 成本低,实现简单

  3. 传输距离远(RS485 差分 抗干扰性好)

并行:

通过多根信号线同时去传输多个bit

  1. 传输速度快

2.成本高,实现复杂

  1. 传输距离近(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℃

  1. 接口:GPIO 单总线

  2. 工作电压: 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左右。

相关推荐
yangyanping201081 天前
Go语言学习之对象关系映射GORM
jvm·学习·golang
网络工程小王1 天前
【Transformer架构详解】(学习笔记)
笔记·学习
Heartache boy1 天前
野火STM32_HAL库版课程笔记-手动建立工程模板与CubeMX后续用法(重要)
笔记·stm32·单片机·嵌入式硬件
倒酒小生1 天前
今日算法学习小结
学习
醇氧1 天前
【学习】【说人话版】子网划分
学习
不灭锦鲤1 天前
网络安全学习(面试)
学习·安全·web安全
世人万千丶1 天前
Flutter 框架跨平台鸿蒙开发 - 鸿蒙版本五子棋游戏应用
学习·flutter·游戏·华为·harmonyos·鸿蒙
Aktx20FNz1 天前
一文学习 Spring AOP 源码全过程
java·学习·spring
Jay Kay1 天前
生成式推荐模型学习记录part1
学习
可乐鸡翅好好吃1 天前
UUID----私有服务与公有服务
嵌入式硬件