Linux入门DAY41(51 单片机 串口与通信协议)

#51 单片机 #UART 串口 #I2C #SPI #嵌入式通信 #Modbus

✨前言

在嵌入式开发当中,单片机离不开和外部模块、上位机之间的数据交互,GPS、传感器、上位机调试、工业设备交互,全部依靠各类通信总线来完成。很多新手刚接触串口时,搞不懂同步异步、全双工半双工,对波特率、校验位、帧格式概念模糊。

本篇为 51 单片机学习第三天笔记,从基础通信分类入手,再到 UART 串口时序、参数配置,最后延伸到主从应答和 Modbus 简单帧格式。把底层通信概念、硬件接线、寄存器要点整理汇总,适合单片机入门同学学习复习。

一、常见嵌入式通信协议概述

嵌入式常用 4 种总线协议:UART、I2C、SPI、CAN

  1. UART(通用异步收发器):异步、全双工,TXD/RXD 交叉接线,点对点通信,单片机调试、对接 GPS 模块最常用。接线规则:单片机 TXD 接外设 RXD,单片机 RXD 接外设 TXD,配合 VCC、GND 供电。
  2. I2C:同步半双工,两根线 SDA(数据线)、SCL(时钟线),支持挂载多个从设备。通信双方均可收发数据,同一时刻单向传输。
  3. SPI:同步高速全双工,时钟线 + MOSI+MISO + 片选,传输速率高。
  4. CAN:差分信号,抗干扰极强,多用于工业、汽车场景。

通信方向分类

  1. 单工:方向固定,一方只发,一方只收,单根信号线。
  2. 半双工(I2C) :双方都能收发,但同一时刻只能单向传输,一根数据线。
  3. 全双工(UART):两根信号线,同一时刻双向同时收发数据。

二、串行传输 vs 并行传输

  1. 串行通信:逐 bit 顺序发送
  • 优点:硬件简单成本低、信号线少、传输距离远、抗干扰强(RS485 差分进一步提升抗干扰)
  • 缺点:传输速率慢
  1. 并行通信:多根线同时传输多位 bit
  • 优点:传输速度快
  • 缺点:硬件复杂成本高,信号线之间信号偏移、电磁干扰,只适合短距离(一般 30 米以内)。

UART 串口遵循 LSB 低位先行:发送字节的时候优先发送最低位 bit。

三、UART 异步串口帧时序(一帧完整数据)

空闲状态总线保持高电平,一帧完整数据顺序:

  1. 起始位:1bit 低电平,标记数据开始
  2. 数据位:8bit,低位优先发送
  3. 校验位(可选):奇校验 O / 偶校验 E / 无校验 N
  4. 停止位:1bit 高电平,标记一帧结束。

同步通信与异步通信

  • 同步通信 (I2C/SPI):设备之间共享一根时钟信号线,依靠时钟统一收发节奏。
  • 异步通信 (UART)没有硬件时钟线,收发双方依靠约定波特率完成时序对齐。

波特率与串口参数配置

  • 波特率 bps:每秒传输 bit 数量;常用:2400、4800、9600、115200。
  • 串口配置格式示例 9600 8 N 1
    • 9600:波特率;8:8 位数据位;N=None 无校验;1:1 位停止位
    • 2400 8 E 1:偶校验;4800 8 O 1:奇校验。

51 单片机 UART 硬件配置要点

  1. 定时器 T1 作为波特率发生器,一般工作在模式 2(8 位自动重装),修改 TH1、TL1 设置波特率。
  2. PCON 寄存器最高位 SMOD:波特率翻倍控制位。
  3. IE 中断寄存器:开启串口中断(bit4)+CPU 总中断(bit7),实现串口接收中断。
  4. TTL 电平逻辑;电脑端是 RS232 负逻辑电平,依靠CH340 芯片完成 TTL‑RS232 电平转换。单片机内部具备发送、接收缓冲区。

内存修饰符:

  • data:变量存放单片机内部 RAM(256 字节);
  • xdata:变量存放外部扩展 RAM(最大 64KB)。

四、主从通信模型与 Modbus 简单理解

  1. 主机 :主动发起通信,掌控全部通信流程;从机:不能主动发消息,只响应主机指令。
  2. 通信流程:主机下发指令帧 → 从机解析指令、执行功能(数码管、蜂鸣器等) → 从机回复应答帧。
  3. Modbus 属于应用层协议,可跑在串口或者 TCP/IP 之上,带 CRC 校验 / 累加和校验。
  4. 帧结构示例:起始位 + 地址码 + 功能码 + 数据域 + 校验位 + 结束位;返回帧中功能码最高位置 1,用来标记应答;bit 位区分数据流向:0 主机→从机,1 从机→主机。

📝小结

  1. UART 属于异步全双工,接线需要 TX 与 RX 交叉;I2C 属于同步半双工,依靠 SDA、SCL 两根总线通信。
  2. 串行通信适合远距离,抗干扰好但是速率有限;并行通信速度快,但容易信号偏移,仅适合短距离场景。
  3. UART 一帧完整顺序:空闲高电平→起始低电平→8bit 数据(低位优先)→校验位→停止高电平。
  4. 同步通信依赖共享时钟线;UART 异步通信没有时钟线,收发设备波特率、校验位、停止位参数必须保持一致。
  5. 51 单片机串口使用定时器 T1 生成波特率;IE 寄存器配置开启串口中断;CH340 芯片完成 TTL 与 RS232 电平转换,实现单片机和电脑通信。
  6. Modbus 是典型主从问答式协议,只有主机能够发起通信,从机被动接收指令并返回应答数据。
相关推荐
jianqiang.xue1 小时前
ESP-IDF保姆级入门41|产品级故障排查与稳定性优化全解:死机复位排查/内存泄漏定位/性能瓶颈分析/长期稳定性测试,掌握量产运维问题定位方法论
单片机·mcu·物联网·esp32
单片机仿真设计2 小时前
【proteus仿真】基于 STM32 的林区环境监控系统设计
stm32·单片机·proteus
小马同学-2 小时前
OpenStack 使用实战:Web 界面与 CLI 命令行实验
运维·云计算·openstack
GeW2 小时前
RHCE备考别瞎学!按这个计划走,30天提高通过率,快速拿证
linux
Escalating_xu3 小时前
【System V 信号量】从 P/V 原语到 Builder 封装:写出可控、可清理的进程互斥组件
java·linux·开发语言·jvm
傲世仙尊3 小时前
System V 进程间通信详解:共享内存、消息队列与信号量(CSDN博客)
linux·开发语言·c++
码农小韩3 小时前
Linux应用开发(六)——进程间通信
linux·linux驱动·嵌入式软件开发·嵌入式操作系统·linux应用
网安老伯3 小时前
都2026年了,还在问网络安全怎么入门?看完这一篇你就懂了
运维·计算机网络·web安全·网络安全·wireshark·密码学·网络攻击模型
Doraemomo4 小时前
IMX6ULL裸机开发——GPIO的使用
单片机·嵌入式硬件