串行通信基础知识与UART驱动构件使用方法

2023-05-16

串行通信基础

串行通信接口/异步串行通信/UART

常称为“串口”或SCI,在USB未普及之前,是PC机必备通信接口之一。
通信方式为单字节通信,是最简单的串行通信方式(RS232 RS485)
接线简单,与微控制器引脚相连,只需要发送线TxD、接收线RxD和地线SG

串行通信格式

串行通信的数据以字节为单位,按位的顺序从发送线送出,从微控制器的引脚来看,高电平为逻辑1,低电平为逻辑0

 

波特率

每秒内传送的位数。(单位:bps)
常用波特率有9600、19200。

在包含开始位和停止位的情况下,发送一个字节需要10位。在特定波特率下,发送1k字节所需时间为:

波特率越高,位长越小,易受电磁干扰,所以串行通信只能适当提高波特率,提高幅度有限。

 

画出发送数据0x65的串行时许格式图

 

设串行发送引脚高电平为3.3v,低电平为0v,连接发送字符A,发送引脚上的平均电平是多少?

异步串行通信格式

实际的异步串行通信采用NRZ数据格式(标准不归零传传号/空号数据格式)

不归零:用负电平表示一种二进制值,正电平表示另一种二进制的值,不使用零电平。

传号/空号:分别表示两种状态的物理名称,逻辑名称“1/0”

RS233总线标准

采用负逻辑。

-15v~-3v为逻辑“1”。

+3v~+15v为逻辑“0”。

最大传输距离是30m。

通讯速率一般低于20Kbps。

一般使用9芯串行接口。

通信中,仅使用接收线RxD、发送线TxD和地线SG。

在发送端,需要用驱动电路将TTL电平转换成RS232电平

在接收端,需要用接收电路将RS232电平转换成TTL电平。

随着USB普及,9芯串口逐渐消失,出现232-USB转换线TTL-USB转换线。在PC机上安装相应的驱动软件,使用一般的串行通信编程方式,通过USB接口实现与MCU的串行通信。

串行通信接口主要功能

接收时,把外部的单线输入的数据变成一个字节的并行数据送入MCU内部。

发送时,把需要发送的一个字节的并行数据转换为单线输出。

编程时,程序员直接与UART数据寄存器打交道。

发送时,程序员通过判定状态寄存器的相应位,了解是否可以发送一个新的数据。

若可以发送,将待发送的数据放入UART数据寄存器中,剩下的工作交由微控制器MCU内部硬件电路自动完成。

MCU会将数据从UART数据寄存器送到发送移位寄存器,硬件驱动将发送移位寄存器的数据一位一位地按照规定的波特率移到发送引脚TxD,供对方接收。

接收时,数据一位一位地从接收引脚RxD进入接收移位寄存器,当收到一个完整的字节时,MCU会自动将数据送入UART数据寄存器,将状态寄存器的相应位改变,供程序员判定并取出数据。

串口驱动构件的组成

头文件uart.h 和源代码文件uart.c ⇒ 串口驱动构件,供应用程序开发调研

串口初始化、发送和接收

首先必须确定使用哪个串口(串口号);其次必须确定使用什么速度收发(波特率)。 

UART驱动构件的基本函数,还应包括发送单个多个字节、接收单个多个字节的函数,以及使能及禁止接收中断,获取接收中断状态的函数。

除了使用UART驱动构件中封装的API函数,还可以使用格式化输出函数printf来灵活的从串口输出调试信息,配合PC机上的串口调试工具,进行嵌入式程序的调试。

串行通信编程

 

 

 

嵌入式技术基础与实践(第4版)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

串行通信基础知识与UART驱动构件使用方法 的相关文章

  • UART、RS232 、RS485 区别

    UART RS232 RS485 区别 UART RS232 RS485这些物理层的串口通信 xff0c 它们都是在同一时间发送一位 RS232 RS485只是串口通讯的变种 xff0c 理解了UART串口通讯 xff0c 那么RS232和
  • TM4C123系列(四)————UART串口通信

    一 实验简介 使用TM4C123的串口通信功能实现单片机与PC端通信 二 UART介绍 TM4C123有八个串口 xff0c 其中UART0已经与USB集成 xff0c UART0建议只用来和PC端通信 xff0c 不要与外界通信 除此之外
  • FPGA学习-UART串口发送单字节(UART时序分析+真正的FPGA设计看图写代码)

    首先看UART发送时序图 xff1a 要发送一个完整字节 xff0c 需要 1位起始位 43 8位数据位 43 1位停止位 xff0c 图上的第11位 xff0c 是确认一个字节发送完的一位 重点是每一位之间的发送时间需要保持一致 xff0
  • 基于uart的RS232和RS485总线

    我们之前讲uart的时候就已经提过一个问题 xff0c 就是它并不是直接连接到SOC里面的 xff0c 而是经过了一个芯片的转换 这个芯片的转换就是和我们要说的rs232 485总线有关的 RS232和RS485总线其实本质就是uart 只
  • 05-STM32F1 - 串行通信1-UART(3),printf,scanf重定向

    05 STM32F1 串行通信UART xff0c printf xff0c scanf重定向 在C 语言标准库中 xff0c fputc 函数是printf 函数内部的一个函数 xff0c 功能是将字符ch 写入到文件指针file所指向文
  • UART通信协议

    UART通信协议 一 UART是什么 xff1f 1 同步串口通信 vs 异步串口通信2 串行通信 二 通信协议三 工作原理四 特点 一 UART是什么 xff1f 通用异步收发传输器 xff08 Universal Asynchronou
  • STM32 HAL UART 使用关键思路(无代码,但是很关键)

    1 到底使用哪种方式 xff0c 或者说有哪几种方式 xff1f STM32 中的 UART 允许使用不同的发送 TX 和接收 RX 模式进行配置 xff0c 有什么区别和优势 xff1f xff1a 轮询模式 xff08 简单来说就是无
  • UART通信中流控RTS和CTS的理解

    一 流控 xff0c 顾名思义就是流量控制的意思 目的是协调收发双方 xff0c 使数据不会丢失 如果UART只有RX TX两个信号 xff0c 要流控的话只能是软流控 xff1b 如果有RX xff0c TX xff0c CTS xff0
  • STM32 硬件UART接收超时检测设置

    STM32 硬件UART接收超时检测设置 本文作者 智御电子 xff0c 期待与电子爱好者交流学习 应用场景 在uart应用中有时候需要进行双工通信 xff0c 主机需要对从机的数据进行接收超时检测 xff0c 例如modbus协议 xff
  • UART(通用异步收发传输器)

    1 UART其在数据发送时将并行数据转换成串行数据来传输 xff0c 在数据接收时将接收到的 串行数据转换成并行数据 是异步串行通信的总称 2 而 RS232 RS449 RS423 RS422 和 RS485 等是对应各种异步串行通信口的
  • UART串口通信

    目录 一 通信特点二 通信应用三 接线示意图三 UART通信协议四 STM32F4 串口使用1 资源分布2 特性3 UART框图4 使用方法5 相关库函数6 函数实例 五 实战 上位机控制开发板小灯 一 通信特点 异步 串行 全双工 一般描
  • FPGA uart串口收发verilog源码程序,适用于RS232 RS422

    FPGA uart串口收发verilog源码程序 xff0c 适用于RS232 RS422 xff0c 支持修改波特率 xff0c 数据位 xff0c 校验位 ID 3750670799663712
  • C51_day5:串口通信UART

    3 1 串口基本认知 串行接口简称串口 xff0c 也称串行通信接口或串行通讯接口 xff08 通常指COM接口 xff09 xff0c 是采用串行通信方式的扩展接口 串行接口 xff08 Serial Interface xff09 是指
  • RT-Thread记录(十一、I/O 设备模型之UART设备 — 源码解析)

    深入理解 RT Thread I O 设备模型 分析 UART设备源码 目录 前言 一 初识 UART 操作函数 应用程序 二 UART 的初始化 2 1 UART 设备初始化位置 2 2 UART 设备初始化函数分析 stm32 uart
  • Tm4c123GX(tiva)入门详细教程

    TM4C123GX系列 学了几个月的Tiva 总的来说这个款单片机功能还是比较强大的 下面我将以TM4C123GH6PM为例介绍其基本资源及工程建立 点亮板卡上的LED灯以及对基本的时钟配置 PWM uart Timer等方面来做简要说明
  • ESP32-C3入门教程 基础篇(三、UART模块 — 与Enocean无线模块串口通信)

    测试第三课 ESP32 C3的串口通信测试 老样子 使用Enocean无线模块和ESP32 C3进行串口通信 目录 前言 1 UART示例测试 1 1 UART 基础测试 1 2 与Enocean无线模块串口通信测试 2 ESP32 C3
  • STM32CubeMX HAL库串口+DMA+IDLE空闲中断不定长度数据接收和发送

    本文开发环境 MCU型号 STM32F103ZET6 IDE环境 MDK 5 29 代码生成工具 STM32CubeMx 5 3 0 HAL库版本 STM32Cube FW F1 V1 8 0 STM32Cube MCU Package f
  • 从 Linux 用户空间设置 16550A UART 硬件 FIFO 中断级别

    我目前正在使用 16550 兼容的 UART 并且我希望能够更改 FIFO 中断触发级别 我在高 UART 负载下丢失字节 并且我想降低阈值 这是一个动力不足的嵌入式系统 当然 如果我愿意 我可以在 8250 port c 驱动程序中更改它
  • IOError:[Errno 2]没有这样的文件或目录(当它确实存在时)Python [重复]

    这个问题在这里已经有答案了 我正在通过 python 中的 uart 传输文件文件夹 下面您可以看到简单的功能 但有一个问题 因为我收到如标题所示的错误 IOError Errno 2 No such file or directory 1
  • 如何将 microbit 与 BLE 连接并监听按钮按下事件?

    2021 年 11 月 28 日编辑 如果您需要使用蓝牙低功耗将 microbit 连接到计算机 并在单击按钮时执行操作 直接跳并跟随 ukBaz https stackoverflow com users 7721752 ukbaz的回答

随机推荐

  • 企业微信{“errcode“:60020,“errmsg“:“not allow to access from your ip, hint: [1681129678500613099333714]

    配置企业微信小程序时 xff0c 报了如下错误 xff1a 企业微信 errcode 60020 errmsg not allow to access from your ip hint 1681129678500613099333714
  • ZED摄像头的使用

    原链接 https community bwbot org topic 518 运行测试平台 小强ROS机器人 1 安装CUDA 1 1 禁用原有的驱动 如果你之前安装了nvidia的开源驱动 xff0c 即通过apt get 安装的驱动
  • 头文件包含顺序

    头文件包含顺序 原理 xff1a 当通过 include指令包含另一个头文件时 xff0c 编译预处理器用头文件的内容取代 include指令 xff0c 也就是说 xff0c 头文件的所有内容最终都会被合并到某一个或某几个源文件中 xff
  • 计算机网络(五): ros下socket编程示例

    ros下socket编程示例 服务器端 span class token macro property span class token directive keyword include span span class token str
  • 三种方式实现:进度条

    1 Bootstrap实现进度条 bootstrap min css下载地址 xff1a https cdn staticfile org twitter bootstrap 3 3 7 css bootstrap min css boot
  • 物理端口与逻辑端口

    若 1 端口 端口可分为物理端口与逻辑端口 所谓逻辑端口指的是计算机内部或交换机路由器内的端口 xff0c 看不见 xff0c 摸不着 所谓物理端口 xff0c 就是可见的端口 xff0c 像 xff1a 交换机路由器集线器 RJ11端口
  • RS485接收数据后发送乱码

    序 最近调块板子上面有几路485 xff0c 控制芯片STM32F407VE 转换芯片ADM2587 xff0c 使用485转换器连接电脑 xff0c 发现串口助手向板子发送数据后会收到乱码 xff0c 经软硬件联合调试排除bug 一 问题
  • python urllib.parse

    urlparse span class token keyword from span urllib span class token punctuation span parse span class token keyword impo
  • HTTP学习(5)--demo编写(1)

    一个基于Java的HTTP服务器demo 前面几篇博客 xff0c 大致介绍了几个方面的例子 xff0c 例如报文解析 报文组装等 现在打算将这些东西集合起来 xff0c 编写一个小HTTP服务器demo 期间遇到了很多问题 xff0c 也
  • 用Python写一个监督你刷李永乐考研题目的简单小程序

    import datetime import xlwings import math month 61 datetime datetime now strftime 39 m 39 date 61 datetime datetime now
  • 对于遗传算法,谈谈个人看法

    最近在学习遗传算法 xff0c 小有体会 这个用数学方法来模拟生物学过程的算法实在是有很多值得玩味的地方 遗传算法要干什么 xff1f 比如Z 61 f x y 我们要找到他在x 0 1 y 0 1 区间上的最大值 我们就先随机在x 0 1
  • AD(altium designer)软件的基础使用(硬件的一些总结,写的有些乱,高手请略过)

    1 快捷键 xff1a Ctrl 43 R 复制并重复粘贴 Shift 43 c 取消选择 Space 逆时针旋转对象 Shift 43 space 顺时针旋转对象 X 水平翻转对象 Y 垂直翻转对象 G切换捕捉栅格 V F View中的F
  • C++字节转换 (byte转int 互转)(BCD和HEX转换)

    2个字节short int 高低位转化 short int y 61 0x7f21 y 61 y amp 0xff00 gt gt 8 y amp 0x00ff lt lt 8 printf 34 x 34 y 用short型变量储存 xf
  • 王者荣耀-数模论文分享(虽然结果我自己都不信)

    基于基础数据的王者荣耀英雄强度评估及英雄设计 摘要 王者荣耀是当下很火爆的一款手机游戏 xff0c 如何基于当下的双方阵容选择合适的英雄来获得胜利 xff0c 是一个值得探讨的问题 xff0c 现基于游戏数据对于各个英雄的强度进行建模评估
  • 用蚁群算法求解TSP问题

    TSP是什么 xff1f TSP全称Travelling salesman problem 中文名 xff1a 旅行商问题 就是模拟退火中讲到的14个城市之间巡回旅行 xff0c 求路径最短的问题 为什么偏偏找他呢 xff1f 因为这是一个
  • python 语法小进阶1

    1 filter 是通过生成 True 和 False 组成的迭代器将可迭代对象中不符合条件的元素过滤掉 xff1b 而 map 返回的则是 True 和 False 组成的迭代器 gt gt gt res1 61 map lambda n
  • 焊接的技巧与方法

    手工焊接操作的基本步骤 1 清洁焊接对象的表面 xff0c 这一步是必须的 xff0c 就算你再赶时间也不能偷懒 用小刀或者砂纸把焊点打磨光亮 xff0c 露出铜的光泽 铜表面的氧化物会阻碍焊锡与之形成合金 xff0c 这一步做得不到位的话
  • 计算机网络体系结构

    计算机网络体系结构 一 计算机网络概述计算机网络的概念 组成与功能概念 xff1a 计算机网络 功能 xff1a 数据通信 连通性 资源共享分布式处理 信息综合处理 提高可靠性 负载均衡 发展的三个阶段组成 xff1a 物理组成 xff1a
  • 嵌入式技术基础与实践(第4版)

    1 5 2020 开放权限 在此之前 xff0c 防报告查重 嵌入式系统概述 嵌入式系统常用术语 嵌入式系统常用的C语言基本语法概要 M0 43 体系结构与指令系统简介 存储映象 中断源 硬件最小系统 GPIO及基本打通原理 程序的基本调试
  • 串行通信基础知识与UART驱动构件使用方法

    串行通信基础 串行通信接口 异步串行通信 UART 常称为 串口 或SCI xff0c 在USB未普及之前 xff0c 是PC机必备通信接口之一 通信方式为单字节通信 xff0c 是最简单的串行通信方式 RS232 RS485 接线简单 x