arm底层通讯接口之uart

2023-05-16

1.目的

写这篇博文的主要目的就是让其他初学者能够更快的理解、掌握uart串口通讯,在学习底层接口通讯的时候,我们要带着这么几个问题:

       1)什么是uart

       2)uart有什么用

       3)怎么去实现

下面就这几个问题,给出解答。

2.什么是uart

uart中文意思是通用异步收发,简单来是就是作为一种全双工异步串口通讯协议。这里简单介绍下什么是串口、异步、全双工的概念:

       串口:就是数据是1bit接着1bit的串行传送,相对应的并口就是像物理电路的并联一样多bit 传输

       异步:就是收发双方不同步,发送方只管按照自己的时序发送,接收方只管按照自己的时序接收

       全双工:同一时间既能够发送,同时还能够接收(两个方向能够同时进行)

在物理结构上,uart一共有两根线:发送Rx和接收Tx

3.uart有什么用

在嵌入式,或者说在底层研发中,CPU是核心,外设是基础,CPU调度外设发挥正常功能,但是CPU和外设之间也是要有实际的物理连接来在二者之间进行数据传送的媒介,就好比是开车从北京市的朝阳区到海淀区,肯定是要顺着公路开过去,那么公路就是二者之间的物理媒介,但是有了媒介(公路),未必会能够正确到达海淀区,我们还规定遇到红绿灯,我们要准守一定的规则,这样才能到达海淀区。那么同样在uart通讯过程中,我们通过CPU和外设之间的引脚连接就好比是公路,有了公路我们还要有交通规则,那uart就是串口通讯中的交通规则。他规定了我们什么时候开始传送数据、一次传送多少bit的数据、什么时候结束数据传送等等,只有规定好了这些,uart接收一端才能够正常的收到有意义的数据。

4.uart使用

使用uart串口通讯就必须要知道uart的时序,比如说你现在有一个byte的数据要通过uart来传送出去,这个byte就是0x12,转换成二进制表示就是0001 0010,在空闲的时候发送线和接收线上都是高电平(空闲),发送0001 0010第1bit很简单,将电平拉低就好了,但是如果发送第1bit是1呢,这就需要我们引入起始位了,用它来告诉接收方,什么时候开始接收。接下来就该传送数据了,但是一次传送多少个字节呢,我们需要决定下:5、6、7、8bit,那传送结束后,还需要有结束位来标注传输结束。但是在实际传输过程中,大数据量传送的时候,我们还要确保接收到的数据没有在中途出现错误,所以还要有校验位来验证。综上所述,一个uart帧要包含:起始位、数据位、校验位(可选),而传输这些bit的速率就是波特率了,有了这些就能够正常使用uart协议了。

这里还要注意,一般arm芯片内部关于uart的使用都有固定的波特率产生器,我们只要控制这些寄存器就能够产生我们要的波特率来发送数据了



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

arm底层通讯接口之uart 的相关文章

  • Postman工具常见操作

    Postman常见操作 1 新建GET或POST请求 xff08 1 xff09 打开Postman xff0c 选择File gt New xff08 2 xff09 选择Request xff0c 进入 xff08 3 xff09 输入
  • Ubuntu18.04+ROS melodic 跑通VINS-MONO的一些踩坑记录

    VINS MONO的一些踩坑记录 0 本机环境 笔者的环境为Ubuntu 18 04 43 ros melodic 43 opencv 4 1 1 43 Eigen 3 3 9 43 ceres solver 1 14 跟VINS MONO
  • GPIO库函数开发和寄存器开发的区别

    函数原型为 xff1a void GPIO SetBits GPIO TypeDef GPIOx uint16 t GPIO Pin xff08 1 xff09 gt 箭头操作符要求左操作数必须是个指针GPIO TypeDef GPIOx
  • C++ 编译

    C 43 43 编译原理 参考博客 https www cnblogs com kevinWu7 p 10163443 html C C 43 43 编译就是要将C C 43 43 的代码映射到相应的机器码 xff0c 以及讨论其中的内存管
  • STM32串口中断的方式发送

    我将其改为真正的中断发送 步骤一 xff1a 初始化GPIO GPIO InitTypeDef GPIO InitStructure GPIO InitStructure GPIO Pin 61 GPIO Pin 10 LED1 PC10
  • 什么是大端小端 and 如何判断大端小端

    1 为什么会有大小端模式之分呢 xff1f 这是因为在计算机系统中 xff0c 我们是以字节为单位的 xff0c 每个地址单元都对应着一个字节 xff0c 一个字节为8bit 但是在C语言中除了8bit的char之外 xff0c 还有16b
  • python中串口通信的步骤及实现

    python内置的库函数确实很强大 xff0c serial库中包含了串口通信所用到的一些函数 本文用python实现了串口的一种简单通信 代码实现 xff1a span class token keyword import span se
  • 结构体作用(STM32)

    结构体作用 xff08 STM32 xff09 来源 xff1a 正点原子 MDK 中很多地方使用结构体以及结构体指针 xff0c 下面总结一下其使用结构体的主要作用 1 结构体是将不同的数据类型整合为一个有机整体 xff0c 方便数据管理
  • 两轴舵机云台的一点实践

    两轴舵机云台的一点实践 效果演示硬件使用情况定时器中断代码计算机体系下的云台角代码舵机控制代码工程源码下载 简介 xff1a 为了学习姿态解算相关知识 xff0c 最近做了一个作品 xff0c 模仿炮塔跟随系统 xff0c 用陀螺仪使两个舵
  • 栈的使用场景

    当数据的处理顺序要与接收顺序相反时 xff08 LIFO xff09 last in first out xff0c 就可以用栈 像文字处理器的 撤销 动作 xff0c 或网络应用程序的函数调用 xff0c 你应该都会需要栈来实现 在处理括
  • 如何重装Ubuntu 系统

    如果你弄坏了你的 Ubuntu 系统 xff0c 并尝试了很多方法来修复 xff0c 你最终放弃并采取简单的方法 xff1a 重新安装 Ubuntu 我们一直遇到这样一种情况 xff0c 重新安装 Linux 似乎比找出问题并解决来得更好
  • 精华:QinQ基础,VLAN双层TAG

    QinQ 是 802 1Q in 802 1Q 的简称 xff0c 是基于 IEEE 802 1Q 技术的一种比较简单的二层 VPN 协议 QinQ简介 IEEE 802 1Q 定义的 VLAN ID 域有 12 个比特 xff0c 最多可
  • Ubuntu更换默认终端

    终端是任何Linux系统的关键部分 它允许您通过shell访问Linux系统 虽说现在的Linux发行版 xff0c 比如Ubuntu xff0c CentOS等已经基本上可以采用GUI来完成绝大部分一般性的任务 但是 xff0c 终端程序
  • vim编辑器如何删除一行或者多行内容

    如何从Vim中删除行 xff1f 如何删除多行 xff1f 本文介绍在Vim编辑器中删除行的不同方法 安装vim 在Ubuntu Debian中的安装方式 sudo apt install vim 在RHEL Centos中的安装方式 yu
  • Linux系统入门命令学习经验

    此时此刻我想和大家分享一下我在学习linux过程中的一些经验和教训 xff0c 如果有人能够正好看到我的这篇文章 xff0c 希望能够让想学习linux的同学多少获得一点经验 xff0c 少走一些弯路 能够比较简单 快捷的迅速掌握知识是我们
  • CloudBeaver 参考架构

    CloudBeaver 是一个基于 Web 的云数据库管理工具 xff0c 支持 PostgreSQL MySQL MariaDB SQLite 和 Firebird 等数据库 server osgi 模式 xff0c 依赖dbeaver
  • 如何修改Vim默认注释

    在Linux下vim被注释掉的字体颜色默认为非常刺眼的蓝色 xff0c 看上去很不清晰 xff0c 我们可以通过设置用户根目录下 vimrc文件 xff0c 可以更改颜色的配置 Vim默认注释颜色如下图 xff1a 找到vim的配置文件 x
  • yum install 与 yum groupinstall 的区别

    yum 提供二种安装软件的方式 1 xff0c yum install 它安装单个软件 xff0c 以及这个软件的依赖关系 2 xff0c yum groupinstall 它安装一个安装包 xff0c 这个安装包包涵了很多单个软件 xff
  • 自制正点原子四轴遥控器无法连接minifly

    最近在群里有群友问自制遥控器无法对频的问题 xff0c 我过去也踩过这个坑 xff0c 已经解决了 我已经在群里回答四五次了 xff0c 但可能群友没注意或者进群较晚没看到 xff0c 正好今晚有空 xff0c 把这个坑填上 18年国庆后自
  • 红旗Linux系统安装教程

    用惯了Windows系统的您 xff0c 会不会想尝尝鲜 xff0c 试试Linux的系统呢 以下经验在虚拟机和实机都适用的哦 工具 原料 电脑 Linux系统镜像包 方法 步骤1 首先将镜像写到光盘或者U盘 xff0c 然后到bios设置

随机推荐

  • 安装CentOS7出现dracut:/#……time解决办法

    当选择install CentOS7以后一会就会出现错误 报错信息 xff1a 就是dracut xff1a timeout一大堆 我本来以为是我的启动盘没做好 xff0c 后来我又重做了好几次都是这问题 解决 通过搜索引擎检索 xff0c
  • 【PID控制 Ⅱ】在代码中实现PID控制算法的思路以及伪代码

    一 实现思路 定义PID控制器 xff1a 在代码中定义一个PID控制器 xff0c 包括三个参数 xff1a 比例系数 xff08 Kp xff09 积分系数 xff08 Ki xff09 和微分系数 xff08 Kd xff09 这些参
  • 使用ZED-stereo相机配合SURF算法识别目标并测距

    这是以前做的小项目里的一部分 xff0c 由于时间久远 xff0c 在这里整理以下 xff0c 也方便自己以后查阅 使用ZED stereo相机配合SURF算法识别目标并测距 ZED stereo是很好用功能强大的双目相机 xff0c 可以
  • 联合标定单目相机和imu,使用工具Kalibr

    使用Kalibr工具标定单目相机和IMU的外参 xff0c 操作过程和联合标定双目相机和IMU类似 xff0c 以下介绍不同部分 最后标定时所需要的相机参数由双目变成了单目 xff0c 以下是配置文件的格式 xff1a cam0 camer
  • DETR3D的关键:feature_sampling(3D到2D的图像特征采样)

    流程 xff1a 坐标转换 gt 归一化坐标 gt grid sample 方法 gt mask 坐标转换 gt 归一化坐标 gt grid sample 方法 span class token comment 特征采样部分 xff0c I
  • extern “C”的用法和作用

    extern 34 C 34 的主要作用就是为了能够正确实现C 43 43 代码调用其他C语言代码 xff0c 实现C 43 43 与C及其它语言的混合编程 加上extern 34 C 34 后 xff0c 会指示编译器这部分代码按C语言的
  • Qt中常用的控件详细介绍

    这里写目录标题 1 容器的布局系统提供的布局控件利用 widget 做布局 2 QListWidget xff08 列表控件 xff09 3 QTreeWidget xff08 树控件 xff09 4 QTableWidget xff08
  • Qt中三种定时器的触发方式

    定时器QTimer控件 定时器触发方式3种所需api资料 1 定时器事件 触发案例1 xff1a 定时器事件案例2 xff1a 同时启动多个定时器 2 定时器对象 触发案例3 xff1a 通过定时器对象 定时 3 静态成员函数 触发案例4
  • shell脚本语言(超全超详细)

    shell脚本语言 1 shell的概述2 脚本的调用形式打开终端时系统自动调用 xff1a etc profile 或 bashrc 3 shell语法初识3 1 定义以开头 xff1a bin bash3 2 单个 34 34 号代表注
  • post请求百度网址内容和访问本地springmvc工程controller

    1 xff0c 访问百度 import java io BufferedReader import java io InputStreamReader import java io PrintWriter import java net U
  • 音乐播放器mplayer的简单使用

    mplayer 1 mplayer的安装2 mplayer的键盘模式基本控制键 xff1a 3 Slave模式 xff1a 启动方法一 xff1a 在终端下敲命令来启动mplayerMplayer 在slave模式下常用的命令 xff1a
  • AJAX和CGI 技术的应用

    AJAX xff0c CGI 一 AJAX1 AJAX的概述AJAX局部更新网页流程图 xff1a 异步流程 xff1a 2 AJAX的通信过程2 1 创建xmlHttpRequest对象2 2 设置服务器响应的回调函数标准的XMLHttp
  • W25QXX使用教程

    W25QXX是华邦公司生产的一块FLASH储存芯片 那W25Q256为例 xff1a 驱动方式 xff1a 单路双路四路SPI QSPI xff1b 擦写周期 xff1a 10W次 支持电压 xff1a 2 7 3 6V 频率 xff1a
  • QT串口通信

    QT串口的使用 1 添加头文件2 串口通信的7个步骤3 发送接收数据 1 添加头文件 span class token macro property span class token directive keyword include sp
  • Qt存储图片到数据库&&从数据库读取图片

    使用Qt将图片存储到sqlite my sql span class token double colon punctuation span span class token function my sql span span class
  • SQL常用语句大全

    创建表and插入数据 课程表 span class token keyword create span span class token keyword database span stuinfo span class token comm
  • 2020-08-21 多路复用TCP双向通信

    多路复用TCP双向通信 首先说一下多路复用 多路的作用 xff1a 监测文件描述符的状态变化 监测文件描述符是否有数据可读写 状态变化 xff1a 有数据可读 xff0c 有数据可写 xff0c 异常 有可能需要监测多个文件描述符 多个文件
  • ros中gmapping建图

    准备 1之前在github上下载的双轮差速小车中有该小车的gmapping和键盘控制的文件可以直接用 2如果之前安装的不是ros的full版本还需要下载gmapping功能包 sudo apt get install ros indigo
  • ros导航仿真——定位与路径规划

    准备 之前在github上下载的差速双轮小车不仅有其对应的gmapping还有amcl和move base xff0c 其中amcl用于定位 xff0c move base 用于路径规划 首先启动小车 roslaunch diff whee
  • arm底层通讯接口之uart

    1 目的 写这篇博文的主要目的就是让其他初学者能够更快的理解 掌握uart串口通讯 xff0c 在学习底层接口通讯的时候 xff0c 我们要带着这么几个问题 xff1a 1 xff09 什么是uart 2 xff09 uart有什么用 3