RS485/RS232通信协议并不是单独协议,只是电气层的协议,依赖于串口。
UART帧格式
1位起始位;
5-8位数据位(先发低位,后发高位);
校验位(可有可无);
(1/1.5/2位)停止位;

uart存在的问题:
电气接口不统一:
uart只是对信号的时序进行了定义,而未定义接口的电气特性;
uart通信时一般直接使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异,所以不同的而处理器使用uart通信时一般不能直接相连;
uart没有规定不同器件连接时连接器的标准,所以不同器件之间通过uart通信时连接很不方便。
抗干扰能力差
uart一般直接使用TTL信号来表示0和1,但TTL信号的抗干扰能力差,数据在传输过程中很容易出错。
通信距离短:
因为TTL信号的抗干扰能力较差,所以其通信距离很短,一般只能用于一个电路板上的两个不同芯片之间的通信。

RS232:
软件层面与串口通信一样。
信号:
该标准规定逻辑1的电平为-5~-15V逻辑0电平为+5v ~+15V,选用该电气标准的目的在于提高抗干扰能力,增大通信距离,其传输距离一般可达到15M;但是处理器一般都是TTL信号不符合RS232标准,所以一般还需要在处理器外部添加电路对信号电平进行转换两个器件之间通信的时候,两个器件都需要添加电平转换芯片。

232存在的问题
接口的信号电平值较高,已损坏接口电路芯片,又因为与TTL电平不兼容,所以需要使用电平转换芯片才能与TTL电路连接;
通信速度较低;
易产生共模干扰。抗噪声干扰性弱;
传输距离短;

RS485:
软件层面与串口通信一样。
能在远距离条件下以及电子噪声大的环境下有效传输信号,该标准允许连接多个收发器,具有多站能力。
信号:
RS485采用差分信号进行数据传输,两线之间电压差为+2V~+6V表示逻辑1,两线之间的电压差为-2V ~-6V表示逻辑0;使用差分信号能有效地减少噪声信号的干扰,延长通信距离,RS485的通信距离可以达到1500m;接口电路电平比232降低了,所以不易损坏接口电路芯片,且与TTL电平兼容,可方便地与TTL电路连接。485通信通常使用双绞线。
接口
采用两线制,这种接线方式为总线式拓扑结构,在同一条总线上可以同时存在多个结点,因为采用的是两线制,数据的发送和接受都要使用这对差分信号线,发送和接受不能同时进行,所以只能采用半双工的方式进行工作,编程时也需要加以处理。使用RS485一般还需要在处理器的外部添加电路将TTL信号转换为差分信号。
RS485优势:
接口信号电平值比较低,不易损坏接口电路的芯片,且与TTL电平兼容,可方便地与TTL电路连接。
通信速度快;
抗噪声干扰性强;
传输距离较远;
可实现多接地那组网;

SPI:
是一个同步的数据总线,也就是说它是用单独的数据线和一个单独的时钟信号来保证发送端和接收端的完美同步。
产生时钟的一侧称为主机,另一侧称为从机。总是只有一个主机(一般来说可以是微控制器/MCU),但是可以有多个从机。
数据的采集时机可能是时钟信号的上升沿(从低到高)或下降沿(从高到低)。
整体的传输大概可以分为以下几个过程:

1 主机先将NSS信号拉低,这样保证开始接收数据;

2 当接收端检测到时钟的边沿信号时,它将立即读取数据线上的信号,这样就得到了一位数据(1bit);

3 由于时钟是随数据一起发送的,因此指定数据的传输速度并不重要,尽管设备将具有可以运行的最高速度。

主机发送到从机时:主机产生相应的时钟信号,然后数据一位一位地将从MOSI信号线上进行发送到从机;

主机接收从机数据:如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号,并且从机会将数据通过MISO信号线发送;

无应答,速度快;
4根线:SCLK、MOSI/SDO(主机输出从机输入)、MISO/SDI(主机输入从机输出)、CS/SS
SPI总线包括4条逻辑线,定义如下:

MISO:Master input slave output 主机输入,从机输出(数据来自从机);

MOSI:Master output slave input 主机输出,从机输入(数据来自主机);

SCLK :Serial Clock 串行时钟信号,由主机产生发送给从机;

SS:Slave Select 片选信号,由主机发送,以控制与哪个从机通信,通常是低电平有效信号。

4中通信模式:
CPOL:时钟极性;
CPHA:时钟相位;

该图片拷贝自某博主博客,但是忘记是哪位博主。

SPI是“全双工”(具有单独的发送和接收线路)因此可以在同一时间发送和接收数据,另外SPI的接收硬件可以是一个简单的移位寄存器。
时钟极性 CKP/Clock Polarity
除了配置串行时钟速率(频率)外,SPI主设备还需要配置时钟极性。

根据硬件制造商的命名规则不同,时钟极性通常写为CKP或CPOL。时钟极性和相位共同决定读取数据的方式,比如信号上升沿读取数据还是信号下降沿读取数据;

CKP可以配置为1或0。这意味着您可以根据需要将时钟的默认状态(IDLE)设置为高或低。极性反转可以通过简单的逻辑逆变器实现。

CKP = 0:时钟空闲IDLE为低电平 0;
CKP = 1:时钟空闲IDLE为高电平1;
时钟相位 CKE /Clock Phase (Edge)
除配置串行时钟速率和极性外,SPI主设备还应配置时钟相位(或边沿)。根据硬件制造商的不同,时钟相位通常写为CKE或CPHA;

顾名思义,时钟相位/边沿,也就是采集数据时是在时钟信号的具体相位或者边沿;

CKE = 0:在时钟信号SCK的第一个跳变沿采样;
CKE = 1:在时钟信号SCK的第二个跳变沿采样;

该图片同样拷贝自之前那位博主博客。
模式编号
SPI的时钟极性和相位的配置通常称为 SPI模式,所有可能的模式都遵循以下约定;具体如下表所示;

通信协议——Uart、RS232、RS485、SPI相关推荐

  1. 串口---UART RS232 RS485 TTL

    什么是串口? 串口通信分同步串口通信USRT,异步串口通信UART, 串口主流的电气(电平)标准 RS232 RS485 RS422 TTL 相关芯片 PL2303.CP2102芯片都是常用的USB转 ...

  2. 总线协议一(UART/RS232/RS485/IIC/SPI)

    目录 基础概述: 一.UART(为串口通信方式) 二.RS232协议 三.RS485协议 四.I2C总线协议 五.SPI总线 六.I2C和SPI的区别 基础概述: 总线的本质就是一根导线,传递的是电信 ...

  3. RS232\RS485\TTL接口\UART

    一 uart rs232 rs485功能 UART是cpu中的控制器实现数据的串并转换(其中cpu使用并行数据,外部通信使用串行数据):控制数据的波特率 校验机制等工作:cpu直接控制的是这个控制器的 ...

  4. I/O接口和外部通信接口——嵌入式系统 GPIO/IIC/SPI/UART/USB/HDMI/RS-232/RS-485/CAN

    I/O接口:GPIO.IIC.SPI.UART.USB.HDMI (1)GPIO         通用输入输出接口,General Purpose Input Output, GPIO. 输出引脚的两 ...

  5. RS-232/RS-485/RS-422通信协议介绍

    1.RS-232 (1) 基本概念 RS-232接口符合美国电子工业联盟(EIA)制定的串行数据通信的接口标准,被广泛用于计算机串行接口外设连接,像有些老式PC机上就配置有RS232接口.RS232的 ...

  6. UART和RS232/RS485的关系是什么?

    串口通讯是电子工程师和嵌入式开发工程师面对的最基本问题,RS232则是其中最简单最常用的通讯方式.但是初学者往往搞不清有关的名词如UART和RS232或RS485之间是什么关系,因为它们经常被放到语句 ...

  7. UART和RS232/RS485的关系是什么?RS485在linux下的调试 ubuntu串口调试工具

    串口通讯是电子工程师和嵌入式开发工程师面对的最基本问题,RS232则是其中最简单最常用的通讯方式.但是初学者往往搞不清有关的名词如UART和RS232或RS485之间是什么关系,因为它们经常被放到语句 ...

  8. 常见通信协议之UART、RS485

    UART 通用异步收发器 一种通用的串行.异步通信总线,该总线有两条数据线,可以实现全双工的发送和接受 并行通信和串行通信 总线传递数据的本质-高低电信号 并行通信-一次性传输多个位-布线难度高-存在 ...

  9. 串口RS232 RS485最本质的区别!-!I2C通讯协议 最简单的总线通讯!-深入理解SPi通讯协议!

    5分钟看懂!串口RS232 RS485最本质的区别!-4分钟看懂!I2C通讯协议 最简单的总线通讯!-深入理解SPi通讯协议,5分钟看懂! 一.5分钟看懂!串口RS232 RS485最本质的区别! 二 ...

  10. UART和RS232/RS485/RS422的关系

    转: http://www.elecfans.com/emb/jiekou/20180418663969.html https://blog.csdn.net/u013178472/article/d ...

最新文章

  1. Unity加载配置文件的两种方式
  2. HTML5 学习总结(二)——HTML5新增属性与表单元素
  3. (42)System Verilog 例化Verilog模块
  4. 【数据库实验】《小型MIS的开发》— JavaFx 开发 民航票务管理系统
  5. 让Kubernetes成为数据中心操作系统(DCOS)的一等公民
  6. 【渝粤教育】国家开放大学2018年春季 8638-21T薪酬制度与薪酬管理 参考试题
  7. java方法调用制作万年历,基于JAVA的万年历api调用代码实例
  8. 组态王与DLT645-2007电能表通讯调试总结
  9. 阿里巴巴 Java开发手册 最新官网下载
  10. 微信小程序订阅消息,并跳转指定页面
  11. numpy——随机取样
  12. DT741-csf联通创维光猫桥接模式+华为WS5200路由器拨号设置
  13. 召唤神龙无敌版------小鱼吃大龙
  14. 深入理解GlusterFS之数据均衡
  15. 十二星座最怕失去的东西
  16. 斩获 offer 的 Java 面试宝典
  17. hihoCoder - 1633(2017北京icpc现场赛-G题)
  18. HDU 2594 - Simpsons’ Hidden Talents(KMP)
  19. 【Teradata】数据库初始化(sysinit和dip工具)
  20. LintCode-最大数

热门文章

  1. PS学习(一)-改变logo颜色
  2. PMP®第十三章 项目干系人管理
  3. Golang开发的CMS内容发布系统
  4. python爬取内容_Python爬取数据(基础,从0开始)
  5. [ Java ] 实现两个数加减乘除的简易计算器
  6. linux下磁盘测速,linux下磁盘测速工具
  7. HyperLynx(三十二)高速串行总线仿真(四)
  8. 闭包:让外部函数能访问函数内的变量,让局部变量长期贮存在内存中
  9. SparkStreaming 实现广告计费系统中在线黑名单过滤实战
  10. 《互联网周刊》封面报道:P2P——新媒体革命