当前位置: 首页 > java >正文

嵌入式学习之51单片机——串口(UART)

一、Uart 串口通信:

1.    UART:通用异步收发器

2.    通信方式:

  •         单工:两个主机之间通过一根数据线进行传输,发送方和接收方是固定的,数据在传输过程中方向保持单向性
  •         半双工:两个主机之间通过一根数据线进行传输,通信的主机双方既可以作为发送方也可以作为接收方,数据的传输方向可以是双向的(同一时刻数据的传输方向单向的)
  •         全双工:两个主机之间通过耳根数据线进行传输,通信的主机双方既可以作为发送方也可以作为接收方,数据的传输方向可以是双向的

单工:

半双工:

全双工:

3. 主机和从机的区别:

  • 主机:主机拥有通信的绝对控制权,主机想何时通信就何时发起通信,给从机下发指令
  • 从机:从机无法直接发起通信,完成主机下发的指令,并将结果上报给主机

4. Uart数据传输的顺序:

串口通信中,遵循LSB(低位)优先传输的原则

5.  串行和并行:

  • 串行:传输数据时通过一根线实现,需要按照1个bit1个bit的次序先后传输(资源消耗小->1根线  传输速度慢)
  • 并行:多个bit在多根数据线上同时进行传输(传输速度快   资源消耗大->需要占用多根数据线)


6. 串口通信时序

 起始位 +数据位(8bit ) + 校验位(奇偶校验) + 停止位

  1. 空闲时数据线为高电平;
  2. 发送发发送一个低电平表示起始位;
  3. 发送的第一个比特是最低为(最右边);
  4. 校验位分为奇校验,偶校验和无校验。奇校验是指确保数据位加上校验位中"1",1的总数为奇数;偶校验是指确保数据位加上校验位中"1",1的总数为偶数;
  5. 为保证下一个字节发送前的起始位能够表现出来,校验位之后发送一个停止位1。

7. 波特率:每秒传输bit数量

8. 同步和异步:

  •         串口通信通过波特率实现同步
  •         I2C 通过时钟线实现同步

I2C

9.   TTL、RS232、RS485  电器属性    

  • TTL: TTL电平  -> 高电平:5V 3.3V   低电平:0V
  • RS232: 负逻辑  高电平:-3 - -15V 低电平: 3 - 15V
  • RS485:差分信号  高电平 7 - 12V  低电平  -7 - -12V

二、Uart相关寄存器配置(串口初始化):

1.SCON 串口控制寄存器:

(1)先将SCON寄存器中的Bit6和Bit7清零
(2)将SCON寄存器中的Bit6置1,代表串口工作在方式1(8位UART,波特率可变)-> Timer1 (8位自动重装模式)
(3)将SCON寄存器中的Bit4置1,允许串口接收数据
(4)检测SCON寄存器中的bit1为1还是0

  • 1:数据发送完毕,可以向SBUF赋值;
  • 0:数据未发送完毕

2. PCON 电源控制寄存器:

(1)将PCON寄存器中的Bit6清0,代表可以通过SCON寄存器中的Bit7和Bit6指定串口工作方式
(2)将PCON寄存器中的Bit7置1,波特率加倍

3.TMOD、TCON  定时器模式选择、定时器控制寄存器

(1)将TMOD寄存器中的高4位清0
(2)将TMOD寄存器中的bit5置1,代表定时器工作在8位自动重装模式
(3)为定时器赋初值(TL0 TH0)
(4)将TCON寄存器中的bit6置1,允许定时器开始计数

三、数据收发

http://www.xdnf.cn/news/17101.html

相关文章:

  • Webpack 搭建 Vue3 脚手架详细步骤
  • Unix 命令行shell基础--学习系列003
  • 跳板机实现 SSHFS 挂载
  • Tomcat虚拟主机配置详解和多实例部署
  • C + +
  • 交叉验证:原理、作用与在机器学习流程中的位置
  • SpringBoot3.x入门到精通系列:3.2 整合 RabbitMQ 详解
  • Ubuntu系统VScode实现opencv(c++)图像一维直方图
  • Ubuntu系统VScode实现opencv(c++)图像二维直方图
  • 补:《每日AI-人工智能-编程日报》--2025年7月28日
  • 软件设计 VS 软件需求:了解成功软件开发外包的关键差异
  • git操作命令和golang编译脚本
  • 补:《每日AI-人工智能-编程日报》--2025年7月27日
  • 移动端 WebView 视频无法播放怎么办 媒体控件错误排查与修复指南
  • 高精度实战:YOLOv11交叉口目标行为全透视——轨迹追踪×热力图×滞留分析(附完整代码)
  • Linux-Day01.初识Linux和基础指令
  • 基于FAISS和Ollama的法律智能对话系统开发实录-【大模型应用班-第5课 RAG技术与应用学习笔记】
  • Ubuntu 下编译 SQLCipher 4.8.0
  • CMake进阶: 使用FetchContent方法基于gTest的C++单元测试
  • sqli-labs靶场less29~less35
  • Ethereum:拥抱开源,OpenZeppelin 未来的两大基石 Relayers 与 Monitor
  • 互联网医院整体项目套表整理过程文档全流程分析
  • Linux 文件与目录属性管理总结
  • IPIDEA:全球领先的企业级代理 IP 服务商
  • Go语言 逃 逸 分 析
  • JVM(Java虚拟机)运行时数据区
  • 【测试】⾃动化测试概念篇
  • 服务器突然之间特别卡,什么原因?
  • 晨控CK-GW08S与汇川AC系列PLC配置Ethernet/IP通讯连接手册
  • 开疆智能ModbusTCP转Profient网关连接ER机器人配置案例