单片机(2)

最近学习了嵌入式底层通信这块内容,从51单片机的UART串口,学到DS18B20单总线温度传感器。

一、UART串口通信

UART全称串行异步收发器,是单片机最基础的通信方式,用来实现单片机之间、单片机和电脑之间的数据交互。

  1. 接线要点

串口最少需要3根线:

RXD:接收数据线

TXD:发送数据线

GND:共地线

重点:TX交叉接对方RXD,并且双方GND必须连在一起。电压信号依靠电位差传输,基准地不一致,收到的数据大概率全是乱码。

单片机和电脑通信一般需要CH340芯片,把单片机串口信号转换成USB信号。

  1. 核心基础概念

波特率:串口传输速率,单位bps,代表一秒传输多少比特。常用:2400、4800、9600、115200。

串行:数据按位依次传输,先发低位LSB,后发高位MSB。

异步:通信双方不需要共用同一个时钟,只需要提前约定波特率;即便波特率参数一致,硬件时钟也会存在微小偏差,传输速度越快越容易出错。

全双工:TX、RX两条线相互独立,收发可以同时进行。

  1. 一帧数据组成

发送1字节数据完整帧:1位起始位 + 8位数据位 + 可选奇偶校验位 + 1位停止位

  1. 51单片机串口配置流程

发送流程

  1. 设置串口工作模式(常用模式1,8位数据,无校验)

  2. PCON寄存器配置SMOD,选择波特率是否加倍

  3. 根据公式计算定时器初值TH1

  4. 配置定时器1:8位自动重装模式,写入初值,打开定时器

  5. 向SBUF写入待发送字节,硬件自动开始发送

  6. 发送完成硬件自动置TI标志,TI必须软件手动清零,才能继续下一次发送

接收流程

  1. 设置串口工作模式为模式1

  2. 开启串口接收允许位REN

  3. PCON配置SMOD

  4. 计算波特率,配置定时器1

  5. 打开定时器1

  6. 编写串口中断服务函数

  7. 开启总中断EA、串口中断ES

  8. 等待接收中断触发;接收完成硬件置RI,RI必须软件清零

二、DS18B20单总线温度传感器

DS18B20是单总线温度传感器,只需要一根DQ数据线,外加电源和地就能通信,测温范围:-55℃ ~ +125℃。

  1. 引脚

GND:电源地

DQ:单总线通信引脚

VCC:供电引脚,供电范围3.0V~5.5V

12bit分辨率下,一次温度转换最长耗时750ms。

  1. 复位时序(通信第一步)

单总线时序要求非常严格,所有通信都要先复位:

  1. 总线空闲默认高电平

  2. 主机拉低DQ至少480us,发起复位

  3. 释放总线,等待DS18B20回应60~240us低电平脉冲;有应答代表传感器正常。

  4. 读写位时序

  5. 主机写0:拉低总线保持60~120us

  6. 主机写1:拉低总线至少1us,15us内释放总线回到高电平,供传感器采样

    每发送1bit,位与位之间间隔要大于1us

  7. 主机读数据:主机先拉低总线至少1us,随后释放总线;DS18B20会把数据放到总线上,主机要在15us之内完成电平采样。

  8. 常用指令

0xCC:跳过ROM指令,多个传感器挂载总线时不能使用,单传感器场景直接用

0x44:启动温度转换,转换完成温度数据存入暂存器

0xBE:读取暂存器9字节数据,我们只需要前两个字节

  1. 完整读取温度流程

  2. 发送复位信号

  3. 发送0xCC跳过ROM

  4. 发送0x44启动温度转换

  5. 等待约800ms,等待转换完成

  6. 再次发送复位信号

  7. 发送0xCC

  8. 发送0xBE读取暂存器

  9. 读取2字节:第1字节LSB,第2字节MSB

  10. 温度计算公式:温度 = 合并数值 × 0.0625

UART和单总线是嵌入式里很经典的两种通信。UART异步串口靠两根线+地线通信,开发简单稳定;DS18B20单总线节省引脚,但对时序要求苛刻,写代码稍微延时不对就通信失败。学这部分的时候,要多参考手册内容,许多是已经规定好的所以不必深究。

相关推荐
DaTou大头1 小时前
STM32第三篇
单片机·嵌入式·电路基础
H_oRIZoN_2 小时前
Linux入门DAY40(51 单片机入门:GPIO、中断、定时器、PWM、蜂鸣器完整梳理)
单片机·嵌入式硬件
LCG元3 小时前
STM32F103 复位来源诊断实战:RCC_CSR 标志位判优、BKP 复位计数持久化与六种复位源注入实测
stm32·单片机·嵌入式硬件
国产HT1621B5 小时前
显示省不了电,休眠才见真章:1621 低功耗实操
驱动开发·单片机·嵌入式硬件·led驱动·lcd驱动
国科安芯5 小时前
低轨卫星姿轨控系统中高可靠嵌入式控制单元的设计与验证
单片机·mcu·低轨卫星·星间链路·卫星姿轨控
老当益壮梁奶奶7 小时前
ARM 汇编学习笔记(二)启动代码、指令、函数调用与 C 混合编程
c语言·arm开发·单片机·嵌入式硬件·51单片机
天空'之城8 小时前
单片机基础核心知识点汇总(三十八)
单片机·嵌入式硬件
崇山峻岭之间9 小时前
HC32F460PETB的PH2的EVENTOUT
单片机
斑马13910 小时前
单片机学习笔记(二)——UART串口与DS18B20
单片机