SPI、RS232、485、IIC通信协议详细总结

news2024/11/19 10:45:00

通信协议大全

文章目录

  • 通信协议大全
  • 前言
  • 一、异步通信和同步通信
  • 二、RS232和RS485
    • 1.RS232
    • 2.RS485
    • 3.RS232和RS485的区别
    • 4.RS232、485与普通串口的区别?
  • 三、SPI协议
  • 四、IIC协议
    • 1.IIC的时序介绍
    • 2.IIC传输数据的格式
  • 总结


前言

通信协议是每一个嵌入式工程师必备的技能。下面我们来了解一下通信协议。

一、异步通信和同步通信

异步传输:异步传输是一种典型的基于字节的输入输出,数据按每次一个字节进行传输,其传输速率低。
同步传输:需要外界的时钟信号进行通信,是把数据字节组合起来一起发送,这种组合称为帧,其传输速度比异步传输快。

二、RS232和RS485

1.RS232

2线通信(RX,TX),支持全双工通讯。高电平:-3v ~ -15v;低电平:+3v ~ +15v。
采用不平衡传输方式,最大传输距离20米。
单端通讯方式只支持两个设备之间的通信

2.RS485

二线和四线通信;二线只支持半双工,四线支持全双工
ES485是差分传输,一对双绞线A和B,RS485的速率可高达10Mbit/s,理论通讯距离可达1200米;

3.RS232和RS485的区别

RS485总线弥补了RS232通信距离短,低速率的缺点,RS485的速率可高达10Mbit/s,理论通讯距离可达1200米;
RS485和RS232的单端传输不一样,RS485是差分传输,使用一对双绞线。
RS485总线同IIC,也是主从模式,支持点对点单从机模式,也支持从机模式,不支持多主机模式。
这样来看更好理解:
1、传输方式不同:RS232采用不平衡传输方式,即所谓的单端传输、而RS485则采用平衡传输,即差分传输方式。
2、传输距离不同,RS232适合本地设备之间的通信,传输距离一般不超过20m,而RS485传输距离可达到几十米甚至上千米。
3、设备数量不同,RS232只允许一对一通信,而RS485接口在总线上是允许连接128个收发器。
4、连接方式不同。RS232规定用电平表示数据,因此线路就是单线路的,用两根线才能达到全双工的目的;而RS485使用差分电平表示数据,因此必须使用两根线才能达到传输数据的基本要求,要实现全双工必须使用四根线。
从某种意义上来说,线路上存在的仅仅是电流,RS232和485规定了这些电流在什么样的线路上流动和流动的方式。

4.RS232、485与普通串口的区别?

普通串口、com口是指物理接口形式(硬件)。而RS485,232是指的电平标准(电信号+)

三、SPI协议

SPI是一种串行外围设备接口,是一种高速全双工的通信总线,SPI为四线制(MOSI、MISO、SCLK、SS)
MOSI
主设备输出、从设备输入引脚,主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机。
MISO
主设备输入、从设备输出引脚。主机从这条信号线读入数据,从机的数据由这条信号线输出到主机,即这条线上数据的方向为从机到主机。
SCLK
时钟信号线,用于通讯数据同步。它由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样。
SS
从设备选择信号线,也叫片选信号线,也叫NSS、CS。当有多个SPI从设备与SPI主机相连时,设备的其他信号线SCK,MOSI及MISO同时并联到相同的SPI总线上,即无论多少个设备都功能使用这3条总线;而每个从设备都有独立的这一条NSS信号线,即有多少个从设备,就有多少条片选信号线。
在这里插入图片描述
SPI数据有效性
SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的。数据传输时高位先行或低位先行并没有做硬性规定,但是要保证两个SPI通讯设备之间使用同样的协定,一般会采用MSB(高位先行)模式。
SPI一共有四种通讯模式,时钟极性CPOL是指SPI通讯设备处于空闲状态时,SCK信号线的电平信号(也就是SPI通讯开始前、NSS线为高电平时SCK的状态),当CPOL等于零时SCK为高电平,反之相反。
时钟相位CPHA是指数据的采样时刻,当CPHA=0时,MOSI和MISO数据线上的信号将会再SCK时钟线得奇数边沿被采样。当CPHA=1,数据线在SCK的偶数边沿采用。

四、IIC协议

IIC协议是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据,是一个多主机的半双工通信放hi,每个挂接在总线上的器件都有个唯一的地址。
在这里插入图片描述

1.IIC的时序介绍

1、空闲状态
当总线上的SDA和SCL两条信号线同时处于高电平,便是空闲状态,如上图所示,当我们不传输数据时,SDA和SCL被上拉电阻拉高,即进入空闲状态。
2、起始信号
当SCL为高期间,SDA由高到低跳变,便是总线的启动信号,只能由主机发起,且在空闲状态下才能启动该信号
在这里插入图片描述
3、停止信号
当SCL为高期间,SDA由低到高的跳变;便是总线的停止信号,表示数据已经完成传输,由下图所示
在这里插入图片描述
4、传输数据格式
当启动信号开始后,就开始传输数据
当SCL为高电平时,便会获取SDA数据值,其中SDA数据必须是稳定的,如果不稳定就会变成起始/停止信号。
当SCL为低电平时便是SDA的电平变化状态。
若主从机在传输数据期间,需要完成其他功能(例如一个中断),可以主动拉低SCL,让IIC进入等待状态,直到处理结束再释放SCL,数据传输会继续。
在这里插入图片描述
5、应答信号ACK
IIC总线上的数据都是以8位字节进行传输的,当发送了8个数据后,发送方会在第9个时钟脉冲期间释放SDA数据,当接收方接收该字节成功,便会输出ACK应答信号,SDA高电平——非应答信号NACK,SDA低电平——应答信号ACK。
6、完整的数据传输
发送起始信号后,便发送一个8位的设备地址,其中第8位是对设备的读写标志。

2.IIC传输数据的格式

写操作
芯片发出一个开始信号,然后发出一个(确定哪一个芯片发送)方向(读/写,0写,1读)。回应(确定设备是否存在),然后传输数据,传输数据之后回应(确定数据是否接受完成),然后再传输下一个数据。每传输一个数据,接受方都会有一个回应信号,数据发送完之后,主芯片就会发送一个停止信号
在这里插入图片描述
读操作
芯片发送一个开始信号,然后发出设备地址(确定哪一个芯片读取)方向(0写1读)。然后回应(确定这个设备是否存在),然后传输数据,传输之后回应(确定数据是否接收完成)然后传输下一个数据,每传输一个数据,接收方都会有一个回应信号,数据发送完成之后,主芯片就会发送一个停止信号。
在这里插入图片描述

总结

这些东西,还是要经常看一看,记一下,不然过段时间肯定就忘了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

几道简单的Linux驱动相关面试题,你看你会几题?

一、Linux基础 1、任意3种网络操作的Linux命令,并说明他们的含义 1. ifconfig 命令 ifconfig 用于查看和配置 Linux 系统的网络接口。 查看所有网络接口及其状态:ifconfig -a 。 使用 up 和 down 命令启动或停止某个接口:ifconfig eth0 up 和 ifconfi…

WEB渗透扫描与加固

WEB渗透扫描与加固 1.通过PC2中渗透测试平台BackTrack5中的httprint工具对服务器场景Server2003检测HTTP服务器(调用signatures.txt), 并将该操作显示结果“Banner Reported:”之后的字符串作为FLAG提交; 切换路径至/pentest/enumeration/web/httprint下 使用命令./httpr…

阿里巴巴面试题- - -多线程并发篇(二十九)

前言:七月末八月初的时候,秋招正式打响,公司会放出大量的全职和实习岗位。为了帮助秋招的小伙伴们,学长这里整理了一系列的秋招面试题给大家,所以小伙伴们不用太过焦虑,相信你们一定能超常发挥,收到心仪公司的Offer~~ 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elast…

网络安全:技术趋势

下面列出了GlobalData确定的影响网络安全的关键技术趋势。 维护IT系统的安全性是各种类型组织的一项长期任务。网络攻击频繁且越来越复杂,由那些推动地缘政治事业的人或意图赚钱的攻击者实施。2021年,由于员工在疫情期间远程工作,企业在网络…

直流信号隔离采样

前言 最近在做一个案子,这个案子中的一点是高压电压信号隔离采样; 常见的隔离有: 光隔离(光耦) 磁隔离(霍尔,变压器) 等等。 那么要测量直流电压线性隔离如何实现?…

C语言中程序的环境和预处理简述

文章目录程序是如何执行的?翻译预编译条件编译文件的包含嵌套引用不同的引用方式预定义符号编译汇编链接运行程序是如何执行的? 有时候会问自己,程序的运行是那么简单的事情吗? 我鼠标点到 visual studio 上,程序就跑起来了,然后在界面就能…

项目管理:如何使用甘特图制定项目计划

甘特图能够很直观地显示项目任务、进度随着时间推进的进展情况。 横轴为时间,纵轴为项目事项,用条形图的方式直观地展现项目中所有任务的时间及进度。 它可以直观地表明项目中有哪些任务?任务计划在什么时候进行,及实际进展与计划…

基于Vue+node的图书馆座位预约选座管理系统

目 录 一、绪论 1 (一)选题背景简介 1 (二)目的和意义 2 (三)基本内容及目标 2 二 技术简介 4 (一) React 4 (二)Vue 4 (三)Egg.js 5 …

生产者消费者模型

什么是生产者消费者模型? 生产者和消费是操作系统中一种重要的模型,它描述的是一种等待和通知的机制。一、概念引入 日常生活中,每当我们缺少某些生活用品时,我们都会去超市进行购买,那么,你有没有想过&am…

Node.js之Hello World

目录 简介 1.安装 2.安装后的效果 3.准备尝试运行的代码 4.运行JS代码 5.访问正在运行的代码(Hello World) 简介 Node.js 是一个基于"Chrome V8 引擎" 的JavaScript "运行环境"; NodeJS不是一门编程语言, NodeJS是一个运行环境&#xff…

C语言题解 | 消失的数字轮转数组

… 🌳🌲🌱本文已收录至:C语言题解系列 更多知识尽在此专栏中! 🎉🎉🎉欢迎点赞、收藏、关注 🎉🎉🎉文章目录🍉前言🍉正文&…

这才是使用ps命令的正确姿势

这才是使用ps命令的正确姿势 前言 在linux系统当中我们通常会使用命令去查看一些系统的进程信息,我们最常使用的就是 ps (process status)。ps 命令主要是用于查看当前正在运行的程序,以及他们相关的的信息,我们可以通过不同的选项进行查看…

全球名校AI课程库(12)| CMU卡内基梅隆 · 数据库系统进阶课程『Advanced Database Systems』

🏆 课程学习中心 | 🚧 计算机基础课程合辑 | 🌍 课程主页 | 📺 中英字幕视频 | 🚀 项目代码解析 课程介绍 CMU 15-721 是 CMU 卡内基梅隆大学开放的数据库方向进阶课程,讨论了很多数据库方向新的技术研究方…

基于Matlab使用跟踪筛选器跟踪机动目标仿真(附源码)

此示例演示如何使用各种跟踪筛选器跟踪机动目标。该示例显示了使用单个运动模型和多个运动模型的滤镜之间的差异。 一、定义方案 在此示例中,定义了一个目标,该目标最初以 200 m/s 的恒定速度行进 33 秒,然后输入 10 度/秒的恒定转弯。转弯…

【C++】类和对象(中)

类和对象是面向对象语言的一个重要部分,承接上一话,我们直接开始这一章的内容。 文章目录 一、类的6个默认成员函数二、构造函数三、析构函数四、拷贝构造函数五、赋值操作符重载六、 const成员函数七、取地址及const取地址操作符重载八、相关习题的练习…

Windows系统常用网络命令详解及命令示例(全)

1.最基本也是最常用的,PING ping 192.168.0.8 -t 测试物理网络   ,参数-t是等待用户中断测试   2.检查DNS、IP、Mac等   A. Win98:winipcfg   B.Win2000及以上:ipconfig /all      C.NSLOOKUP:如果查看河北…

初阶c语言之浅识指针

学习导航:> 1.指针是什么? 2.指针和指针类型 2.1指针-整数 2.2指针的解引用 3.野指针 3.1野指针成因 3.2如何规避野指针 4.指针运算 4.1指针-整数 4.2指针-指针 4.3指针的关系运算 5.指针和数组 6.二级指针 7.指针数组 1.指针是什么? 指…

动态路由协议解析(rip)

因为今天是1024程序猿节,小刘就在这里祝各位程序猿大佬们节日快乐啦 作者介绍: 💰作者:小刘在C站 ✨每天分享课堂笔记 🌸夕阳下,是最美的绽放 目录 动态路由协议和 rip 1.动态路由 2.动态路由协议工作…

非线性方程求根——牛顿迭代法

一、牛顿法 1.实质:牛顿法实质上是一种线性方法,其基本思想是将非线性方程f(x)0逐步归结为某种线性方程来解。 2.牛顿法公式: 已知方程f(x)0有近似解xk,假设,将f(x)在点xk泰勒展开,有则方程f(x)0可近似表示为&#…

【开关电源六】buck电路的输出纹波定量分析走一波?

在TI官网发现一篇关于降压开关电源的输出纹波定量分析,看完觉得挺不错的,于是大概整理翻译了一下分享出来。以往我们分析开关电源的一次纹波都是定性分析,知道输出电压纹波和电感纹波电流、输出滤波电容ESR等有关,今天我们用数学、…