【单片机day03】

UART串口

通用异步收发器,2个串口(1个串口被用于ISP下载程序,1个串口被用于和主机之间的通信)

全双工(两根线TX、RX)、串行、异步

通信方式:

  • 单工:
    • 发送方和接收方是固定的,数据只能从发送方  发给  接收方
    • 数据传输通过一根信号线实现
    • 数据传输方向固定
  • 半双工:(I2C)
    • 发送方和接收方不是固定的,通信双方都可发可收
    • 数据传输通过一根信号线,数据的传输方向是双向的
    • 但同一时刻数据传输方向是单一的(A给B发的时候,B只能接收)
  • 全双工:(UART)
    • 通信双方既可作为发送方,也可作为接收方
    • 数据传输通过两根信号线
    • 数据传输方向在任意时刻都是双向的

数据传输的顺序:

Uart在传输数据时,遵循LSB优先原则(低位先行),先发低位数据

数据传输的形式:

  • 串行:通过一根信号线传输数据,按照先后次序逐个bit逐个bit去发送数据
  • 并行:通过多根信号线同时去传输数据

串行传输和并行传输的区别:

  • 串行:
    • 传输速率慢(只能通过一根线逐个bit去传输)
    • 硬件成本低,实现简单
    • 传输距离远,抗干扰性好(RS485差分)
  • 并行:
    • 传输速率快,可以通过多跟线同时传输多个Bit
    • 硬件成本高,实现复杂
    • 传输距离近,抗干扰性差(理论上30米内,)

串口通信时序:

  • 串口通信时,空闲状态为高电平
  • 当由高电平变为低电平(发送一个低电平信号),代表发送了一个起始位,准备开始通信
  • 发送数据(通常是8bit,遵循先发数据低位LSB原则)
  • 再发送一个Bit的校验位,(奇偶校验)

  • 校验
    • 奇偶校验(串口):

      • 奇 校验:校验位 为1,若数据位中,“1” 的个数加上校验位 “1” 的个数,保持奇数个,代表校验通过(奇校验,奇数个1)。
      • 偶 校验:校验位为0,若数据位中“1”的个数 + 校验位“0”的个数,保持1的个数位偶数个,代表校验通过。(偶校验,偶数个1)
      • 缺点:无法检测 偶数个bit出错的问题
    • 累加和 校验
    • CRC校验(Modbus协议)

串口通信参数:

波特率:

bps(bit per second),每秒钟传输bit的数量,常见的波特率:2400, 4800 , 9600,115200

数据位:

8, 串口传输通常8bit 数据位传输

停止位:

1,  1bit停止位

校验位:

None,N,无校验
Even,E,偶校验
Odd,0,奇校验

同步通信、异步通信

I2C:SCL 时钟线
SPI:SCLK 时钟线
UART:无时钟线 异步

  • 同步:
    • 通信的双方有一根共享的时钟线来约定通信的频率(同步发送数据/接收数据)
  • 异步:
    • 通信双方没有时钟线进行同步,如Uart:可以通过设置波特率来实现同步(发:2400bps 收:2400bps)

串口寄存器配置:

串口的波特率发生器依赖于定时器1(Timer1)

  • SCON/PCON串口控制寄存器:

  • PCON寄存器中的bit6 置0代表通过SCON寄存器中SM0和SM1两位指定串口工作方式:
    • 将SCON寄存器中的bit6和bit7清0
    • 将SCON寄存器中的SM1 bit6置1,SM0 bit7清0,代表串口工作8位UART模式
    • 将SCON寄存器中REN bit4置1,代表允许串口接收数据
    • SCON寄存器中bit1 TI位,代表串口8位数据发送完毕硬件自动置1,但需要软件清0(用来检测)
    • SCON寄存器bit0 RI位,代表串口8位数据接收完毕硬件自动置1,但需要软件清0  (用来检测)
    • PCON寄存器SMOD bit7位置1,代表波特率加倍
  • 定时器寄存器相关配置:

  • TMOD 定时器模式选择寄存器:
    • 将TMOD寄存器中的高四位清0(定时器1)
    • 将TMOD寄存器中的bit5置1,bit4清0,代表定时器1工作在8位自动重装载模式
    • 将定时器初值写入到TL1和TH1
    • 将TCON寄存器中的bit6置1,代表允许定时器1开始计数
  • 中断寄存器相关配置:

  • IE中断控制寄存器:
    • 将IE寄存器中的bit7 EA位置1,代表CPU能够响应所有中断
    • 将IE寄存器中的bit4 ES位置1,代表允许串口产生中断

定义数组时:xdata char buf[32] = {0xAA, 0xBB,0xCC};

存储在片外RAM中,不加xdata,会存储在片内RAM中(只有256byte)

主从应答:

主从应答就是通信协议里,主机发起请求,从机必须返回确认(ACK/NACK或数据帧),以保证数据传输的可靠性和交互性。

  • 主机:拥有对通信绝对控制权,通信都是由主机发起
  • 从机:无法直接发起通信,只能根据主机下发的指令完成对应操作

主机 -> 从机:

功能码 0000 0001

从机 -> 主机:

功能码:1000 0001   也就是81

bit 7最高位:数据流向位

0:主机 -> 从机

1:从机 -> 主机

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/96104.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react16到react19更新及底层实现是什么以及区别

好问题 👍。React 16 → 19 的更新跨度其实涵盖了 React 的几个“时代级”的演进:从 Fiber 架构 的重写、到 并发特性 的引入,再到 React Server Components 和 现代语法支持。我帮你梳理下主要更新点和底层实现的区别,方便你系统…

【分享】基于百度脑图,并使用Vue二次开发的用例脑图编辑器组件

偶然间发现了这个项目,分享出来。 【分享】基于百度脑图,并使用Vue二次开发的用例脑图编辑器组件1 项目地址2 项目简介3 项目部署3.1 安装node和npm3.2 项目下载3.3 修改npm镜像源3.4 部署4 项目中使用1 项目地址 基于百度脑图,并使用Vue二次…

Kotlin中抽象类和开放类

抽象类 (Abstract Class) 定义和特点 抽象类使用 abstract 关键字声明,是一种不能被直接实例化的特殊类,主要用于被其他类继承。 abstract class Base {open fun f() {} }abstract class Derived : Base() {override abstract fun f() // 抽象成员在类中…

TensorFlow深度学习实战(37)——深度学习的数学原理

TensorFlow深度学习实战(37)——深度学习的数学原理0. 前言1. 反向传播历史2. 微积分相关概念2.1 向量2.2 导数和梯度2.3 梯度下降2.4 链式法则2.5 常用求导公式2.6 矩阵运算3. 激活函数4. 反向传播4.1 前向计算4.2 反向传播5. 交叉熵及其导数6. 批量梯度…

1.1 汽车运行滚动阻力

汽车运行阻力由4部分构成:滚动阻力、空气阻力、坡度阻力、加速阻力。 1).汽车在水平道路上等速行驶时,必须克服来自地面的滚动阻力和来自空气的空气阻力。 2). 当汽车在坡道上上坡行驶时,还必须克服重力沿坡道的分力,称为坡度阻…

e203000

1)①BIU作为核心通信枢纽,主要承担两大功能:一是连接处理器核内的关键执行单元(包括IFU、LSU和EAI协处理器),统一管理指令和数据的内部传输路径;二是作为"核内计算"与"核外资源&…

Infortrend普安科技IEC私有云平台VM解决方案

Infortrend企业云(IEC)内置Hypervisor运行VM。功能完整、无需额外付费。在本文中,我们将为您详细介绍IEC是如何支持 VM的。市场现状与挑战市场现状 虚拟化市场面临转型,主流厂商(如 VMware)改用订阅制…

【代码随想录算法训练营——Day6(Day5周日休息)】哈希表——242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和

LeetCode题目链接 https://leetcode.cn/problems/valid-anagram/ https://leetcode.cn/problems/intersection-of-two-arrays/ https://leetcode.cn/problems/happy-number/ https://leetcode.cn/problems/two-sum/ 题解 242.有效的字母异位词 这道题要想到用哈希表来做。同时注…

安科瑞基站智慧运维云平台:安全管控与节能降耗双效赋能

功能:基站智慧用电云平台通过对5G宏站和室分站点加装交/直流智能监控设备、无线采集设备以及系统管理平台,完成夜间无业务时段的下电操作,减少电能消耗,降低运营成本支出,以及提升通信设备供电线路状态的实时监测保护功…

处理省市区excel数据加工成SQL

原始数据相关内容链接 处理excel数据加工成SQL的脚本 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Excel行政区域数据转SQL脚本 - 支持特殊行政单位处理(如省直辖县级行政单位) - 支持批量处理 """import pand…

双碳目标下的24小时分时综合能源系统低碳优化调度:基于 Matlab/YALMIP/CPLEX的方法与仿真

在“双碳”战略目标的推动下,综合能源系统(Integrated Energy System, IES)已成为实现能源结构优化与碳排放控制的重要途径。本文以光伏、风电、燃气—电热联产(CHP)、燃气锅炉、电锅炉、电储能以及碳捕集(…

TDengine 选择函数 Last() 用户手册

LAST() 函数用户手册 函数定义 LAST(expr)功能说明 LAST() 函数统计表/超级表中某列的值最后写入的非 NULL 值,即返回时间戳最大的非 NULL 值。 版本要求 最低版本: v3.0.0.0 返回值 数据类型: 同应用的字段返回内容: 时间戳最大的非 NULL 值及其对应的时间戳…

< 自用文 学习 > 用 Claude Code 做一个日历

环境: OS: Windows 11 IDE:TREA Model: Sonnet / Qwen (免费 Token 用完) 参考: Claude Code Beginner Guide – Get Started in 20 Minutes (2025) by Alex Finn 油管博客 https://www.youtube.com/watch?viYiuzAsWnHU&listTLGG1L…

Gmail 数据泄露安全警报以及启示

目前,大规模数据泄露和针对性钓鱼攻击持续威胁着数十亿 Gmail 用户的安全,受ShinyHunters、UNC6040、UNC6395等威胁组织攻击,25 亿 Gmail 用户面临极大风险;攻击者已从暴力破解转向社会工程学与混合勒索,而密码复用、弱…

2024年6月GESPC++三级真题解析(含视频)

视频讲解:GESP2024年6月三级C真题讲解 一、单选题 第1题 解析: 答案C, 认证语言有C/C、Python、Scratch 第2题 解析: 答案B,判断闰年口诀“ 4闰 100不闰 400再闰 ” 第3题 解析: 答案C&#xff…

AiPPT生成的PPT内容质量怎么样?会不会出现逻辑混乱或数据错误?

作为一个每天要和 PPT 打交道的职场人,我用 AiPPT快一年了,从最初的 “试试看” 到现在的 “离不开”,最让我惊喜的就是它生成的 PPT 内容质量 —— 不仅逻辑清晰、数据专业,还能精准贴合不同场景需求,完全没遇到过逻辑…

DINOv3 新颖角度解释

1. Gram锚定(Gram Anchoring)的创新视角 新颖角度:oriane_simeoni(Meta AI研究人员)在X上分享了一个关于Gram锚定的深入线程,强调这一技术如何解决自监督学习中长期训练导致的特征图退化问题。 解释&#x…

【T2I】Discriminative Probing and Tuning for Text-to-Image Generation

paper:CVPR 2024 2403 https://arxiv.org/abs/2403.04321 code: https://github.com/LgQu/DPT-T2IAbstract 尽管文本到图像生成(T2I)取得了进展,但先前的方法往往面临文本 -图像对齐问题,例如生成图像中的关…

【CentOS7】使用yum安装出错,报HTTPS Error 404 - Not Found

【CentOS7】使用yum安装出错,报HTTPS Error 404 - Not Found问题描述解决办法博主有话说问题描述 在CentOS7中安装docker,切换了国内的镜像源进行yum安装,始终报如下错误:HTTPS Error 404 - Not Found 正在尝试其他镜像&#xff…

vulnhub:Kioptrix level 2

0x00、环境下载 链接:https://www.vulnhub.com/entry/kioptrix-level-11-2,23/ 0x01、前期准备 1.1、检查文件 hash值对比无误后解压 1.2、编辑虚拟机网卡 当不支持桥接时候,如练WiFi无无线网卡 方法1: 修改type为nat 方法2:将…