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

串口通讯(串行接口通讯)

文章目录

  • 一、串行通讯是什么?
  • 二、种类
  • 三、并行与串行的区别
  • 四、通信方式
  • 总结


一、串行通讯是什么?

串行通讯是通信双方按位进行,遵守时序的一种通信方式。
串行通信中,将数据按位依次传输, 每位数据占据固定的时间长度,即可使用少数几条通信线路就可以完成系统间交换信息。
我们首先要使能 GPIO 时钟, 然后使能复用功能时钟,同时要把 GPIO 模式设置为复用功能对应的模式。这些准备工作做完之后, 剩下的当然是串口参数的初始化设置,包括波特率,停止位等等参数。在设置完成只能接下来 就是使能串口,这很容易理解。同时,如果我们开启了串口的中断,当然要初始化 NVIC 设置中断优先级别,最后编写中断服务函数。
串行通信最重要的参数是波特率、数据位、停止位和奇偶校验。

二、种类

串行通信协议是包括的有内部通信系统协议和系统间协议,内部系统协议有CAN协议、I2C协议、SPI协议;系统间协议有USART协议、UART协议、USB协议。

三、并行与串行的区别

串行:一个字节的数据,排成一行发送给接收设备。
并行:一个字节的数据,排成一列发送给接收设备。那当然并行速率快、吞吐量大、不过消耗IO资源也很多。

数据传送方式不同:串行口传输方式为数据排成一行、一位一位送出数据;并行口传输8位数据一次送出。
针脚不同:串行口针脚少,消耗IO资源少;并行口针脚多,消耗IO资源多。
用途不同:串行口主要用在速度要求不高、有一定距离的传输场景,如UART,I2C通信。并行口多用于传输速率要求高、吞吐量大的场景,如FSMC(Flexible Static Memory Controller,可变静态存储控制器),DVP(Digital Video Port,数字视频接口)等接口。

四、通信方式

  1. 同步通信:带时钟同步信号传输,SPI(全双工)、I2C(半双工)
  2. 异步通信:不带时钟同步信号,UART(全双工)、单总线(半双工)
    串行通信:
    单工:数据传输只支持数据在一个方向上传输
    半双工:允许数据在两个方向上传输,但在某一时刻只允许数据在一个方向上传输
    全双工:允许数据同时在两个方向上传输,要求收发设备都有独立的接收、发送能力

总结

串行通信作为计算机通信方式之一,主要起到主机与外设以及主机之间的数据传输作用,串行通信具有传输线少、成本低的特点,主要适用于近距离的人-机交换、实时监控等系统通信工作当中,借助于现有的电话网也能实现远距离传输,因此串行通信接口是计算机系统当中的常用接口。

相关文章:

  • VSCode 设置代理
  • 【2024美国大学生数学建模竞赛】2024美赛C题网球运动中的势头,网球教练4.0没人比我更懂这个题了!!!
  • 做好测试用例的分析 ? 是做好软件测试的必要步骤。
  • android开发---简单购物商城(JAVA) (一)
  • 18- OpenCV:基于距离变换与分水岭的图像分割
  • 《HTML 简易速速上手小册》第9章:HTML5 新特性(2024 最新版)
  • Jasperreport 生成 PDF之省纸模式
  • 探索Gin框架:Golang使用Gin完成文件上传
  • 深度学习如何入门?
  • RabbitMQ面试
  • 【云原生kubernetes系列】---亲和与反亲和
  • 《区块链简易速速上手小册》第7章:区块链在其他行业的应用(2024 最新版)
  • leetcode189.轮转数组|超简单易于理解方法
  • Elasticsearch:如何为 Elastic Stack 配置 AI Assistant
  • ElementUI 组件:Container 布局容器实例
  • [译]如何构建服务器端web组件,为何要构建?
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 345-反转字符串中的元音字母
  • Android Studio:GIT提交项目到远程仓库
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • input实现文字超出省略号功能
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • linux安装openssl、swoole等扩展的具体步骤
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • vue-cli在webpack的配置文件探究
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 从零开始在ubuntu上搭建node开发环境
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 聚类分析——Kmeans
  • 力扣(LeetCode)965
  • 普通函数和构造函数的区别
  • 软件开发学习的5大技巧,你知道吗?
  • 使用parted解决大于2T的磁盘分区
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 跳前端坑前,先看看这个!!
  • 学习HTTP相关知识笔记
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​Python 3 新特性:类型注解
  • ​马来语翻译中文去哪比较好?
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #162 (Div. 2)
  • #Linux(帮助手册)
  • #QT(一种朴素的计算器实现方法)
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)创业的注意事项
  • .net mvc 获取url中controller和action
  • .netcore如何运行环境安装到Linux服务器
  • .net快速开发框架源码分享
  • .NET框架设计—常被忽视的C#设计技巧
  • .考试倒计时43天!来提分啦!