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

STM32- 笔记2

1 上拉和下拉电阻

单片机的上拉电阻 到底在拉什么?_哔哩哔哩_bilibili

下拉电阻的通俗解释,你真正知道吗?_哔哩哔哩_bilibili

上拉电阻的通俗解释,你真正知道吗?_哔哩哔哩_bilibili

2 STM32学习笔记-I2C通信协议

STM32学习笔记-I2C通信协议_stm32 i2c通信协议-CSDN博客

IIC通讯协议详解(电路和时序图)_iic通信协议-CSDN博客

I2C协议靠这16张图彻底搞懂(超详细)_iic协议图-CSDN博客

3 UART - 也是硬件实现

3.1

是的,UART(Universal Asynchronous Receiver/Transmitter,通用异步接收发射器)是一种硬件实现的通信协议,用于在计算机或微控制器之间进行串行通信。UART 的硬件实现负责数据的异步传输和接收,它是串行通信中最基础和最常用的方式之一。下面是一些关于 UART 的详细信息:

1. UART 硬件组件

  • 发送端(Transmitter):负责将数据从并行格式转换为串行格式并发送。它包括数据寄存器和移位寄存器,用于逐位发送数据。
  • 接收端(Receiver):负责接收串行数据并将其转换回并行格式。接收端也包括数据寄存器和移位寄存器,用于逐位接收数据。
  • 波特率发生器:负责生成时钟信号,确定数据传输的速度(波特率)。发送和接收端需要同步其时钟信号以确保数据正确传输。
  • 控制逻辑:管理数据传输的控制信号,如起始位、停止位和奇偶校验位。

2. UART 通信协议

  • 异步通信:UART 是异步通信协议,这意味着数据传输不依赖于共享时钟信号。相反,它使用起始位和停止位来同步发送和接收的数据。
  • 起始位和停止位:每个数据帧以一个起始位开始,后跟数据位(通常是 7 位或 8 位),然后是可选的奇偶校验位和一个或多个停止位。起始位和停止位帮助接收端识别数据帧的边界。
  • 波特率:定义了数据传输的速率,单位是波特(Baud)。发送端和接收端必须设置为相同的波特率,以确保正确的数据传输。

3. UART 数据传输

  • 发送数据:数据通过 UART 发送端逐位传输。数据通常从数据寄存器加载到移位寄存器,然后通过串行线发送出去。
  • 接收数据:数据通过 UART 接收端逐位接收。接收到的数据位被存储在接收移位寄存器中,并最终加载到数据寄存器中,以供处理。

4. UART 的优势

  • 简单性:UART 实现简单,不需要复杂的协议或时钟同步。
  • 成本低:UART 硬件通常非常简单且成本低廉,适合各种应用。
  • 适用广泛:UART 被广泛应用于微控制器、计算机和外部设备之间的串行通信,如调试、数据传输和控制信号传输等。

5. UART 的局限性

  • 距离限制:UART 通信适合短距离传输,较长距离可能会受到信号衰减和干扰的影响。
  • 数据速率限制:尽管 UART 支持多种波特率,但在高速通信时可能会遇到问题,如信号失真和数据错误。
  • 没有错误检测:虽然 UART 可以通过奇偶校验进行基本的错误检测,但没有内建的复杂错误校正机制。

6. UART 和其他通信协议

  • 与 I2C 和 SPI 比较:UART 是点对点通信协议,适用于简单的串行数据传输;而 I2C 和 SPI 支持多设备通信和更复杂的通信模式。UART 通常用于串口通信和调试,而 I2C 和 SPI 适用于传感器和其他外围设备的集成。

总之,UART 是一种简单而有效的硬件实现的串行通信协议,广泛用于各种电子和计算机系统中。

3.2通过UART发送“hello”,软件A只需要向硬件写入“hello”,其他都是由硬件执行。然后,软件B从硬件读取即可 - 对吧

 

是的,你的理解是正确的。在使用 UART 通信协议时,通常涉及到的软件和硬件之间的协作如下:

发送数据

  1. 软件A(发送端)

    • 软件A 将要发送的数据(如 "hello")写入 UART 发送寄存器。
    • 软件A 设置正确的波特率和配置(如数据位长度、停止位、奇偶校验等)。
    • 软件A 启动数据发送。
  2. 硬件(UART 发送端)

    • 硬件将数据从发送寄存器读取,并将其逐位转换为串行信号。
    • 硬件将串行信号发送到接收端(通常通过物理线)。

接收数据

  1. 硬件(UART 接收端)

    • 硬件接收串行数据并将其逐位转换回并行格式。
    • 硬件将接收到的数据存储在接收寄存器中。
  2. 软件B(接收端)

    • 软件B 从接收寄存器读取数据。
    • 软件B 对接收到的数据进行处理(如将数据从寄存器中读取并转换为 "hello")。

总结

  • 软件A 负责将数据写入 UART 发送寄存器并启动发送。硬件负责将数据转换为串行信号并通过物理通道发送出去。
  • 硬件 负责接收串行数据并将其转换为并行数据,然后将其存储在接收寄存器中。
  • 软件B 负责从接收寄存器读取数据并进行处理。

这种方式使得 UART 通信过程在软件和硬件之间进行了有效的分离。软件只需要处理高层的数据操作和配置,而硬件则负责低层的数据转换和传输。这种硬件和软件的分工使得 UART 通信既高效又简

3.3 奇偶校验 - 由硬件执行?

是的,奇偶校验通常由硬件在 UART 通信中执行。奇偶校验是一种基本的错误检测机制,用于确保数据在传输过程中没有被篡改或发生错误。以下是关于奇偶校验的更多细节:

奇偶校验的基本概念

  • 奇偶校验位:在每个数据帧中,奇偶校验位用于检测传输过程中可能发生的错误。它可以是奇校验(Odd Parity)或偶校验(Even Parity)。
    • 奇校验:如果数据中 1 的个数是偶数,则校验位为 1;如果是奇数,则校验位为 0。这样总的 1 的个数将是奇数。
    • 偶校验:如果数据中 1 的个数是奇数,则校验位为 1;如果是偶数,则校验位为 0。这样总的 1 的个数将是偶数。

硬件执行

  • 硬件校验:在许多 UART 硬件模块中,奇偶校验是由硬件自动处理的。当配置了奇偶校验功能后,UART 硬件会自动在数据帧的末尾添加校验位,并在接收数据时检查该位。
  • 数据发送:发送端的硬件模块在将数据写入发送寄存器时,会自动计算并附加奇偶校验位。
  • 数据接收:接收端的硬件模块在接收数据时,会自动检查奇偶校验位是否正确,并可能触发错误标志或中断,如果发现校验错误。

软件配置

  • 配置奇偶校验:虽然奇偶校验的实际计算和检查由硬件完成,但软件需要配置 UART 硬件以启用或禁用奇偶校验,并选择奇校验或偶校验模式。这通常通过配置 UART 控制寄存器来完成。

奇偶校验的优缺点

  • 优点

    • 简单有效:奇偶校验是一种简单的错误检测方法,能在数据传输中检测到单个比特位的错误。
    • 硬件支持:大多数 UART 硬件模块都支持奇偶校验,可以简化错误检测的实现。
  • 缺点

    • 有限的错误检测能力:奇偶校验只能检测到单个比特错误,无法检测到多个比特错误或错位的错误。
    • 无法纠正错误:它只能检测到错误,而不能纠正错误。对于更复杂的错误检测和纠正需求,可能需要使用其他协议或方法,如 CRC(循环冗余检查)或更复杂的校验算法。

总结

奇偶校验是一个在 UART 通信中常见的错误检测机制,主要由硬件执行。软件负责配置 UART 硬件以启用或禁用校验功能。硬件在发送和接收数据时自动处理奇偶校验,从而简化了数据传输过程中的错误检测。


http://www.mrgr.cn/news/3469.html

相关文章:

  • CSS:display和visiblity
  • 小白学大模型:GLM 调用教程
  • FlinkCDC初体验
  • 关于c++ grpc 和 c# grpc 通信的问题 以及 grpc 认证问题
  • 公开课观后感:密歇根大学python for everyone
  • 初识redis:Set类型
  • 【实战场景】如何优雅实现分页
  • 20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并挂载1TB的exFAT格式的TF卡
  • ARM 裸机与 Linux 驱动对比及 Linux 内核入门
  • 【ARM+Codesys 客户案例 】 基于RK3568/A40i/STM32+CODESYS在工厂自动化中的应用:铆接机
  • Android强大的滚动控件RecyclerView
  • 反向沙箱是什么?如何使用反向沙箱保障上网安全
  • Ecosmos开启公测,将深度赋能CIOE中国光博会元宇宙参会新体验
  • Excel平均值与减法技巧
  • Python编码系列—前端后浪:Python前后端分离开发实战指南
  • 图片太大不能上传怎么压缩变小?图片压缩变小的8个方法
  • 极限02:两个重要极限
  • package 文件中的 main、module、exports 字段
  • 企业级WEB应用服务器TOMCAT攻略
  • docker swarm如何让两个副本分别跑在两台不同的主机上