目录

一、UART总线通信协议

二、IIC总线时序图

2.1IIC总线时序图

2.1.1起始信号和终止信号时序图

2.2数据传输时序图

2.3字节传输和应答信号

2.4I2C的寻址

2.2IIC总线通信协议

2.2.1主机给从机发生一个字节的通信协议

2.2.2主机给从机发生连续的多个字节的通信协议

2.2.3主机从从机读一个字节的通信协议

2.2.4主机从从机读连续的多个字节的通信协议

三、SPI总线通信协议

3.1SPI基本的通信协议

3.2SPI共有4种通信模式


一、UART总线通信协议

起始位:发送数据的开始信号,由发送器产生;

数据位:要发送的数据,先发送低位,再发送高位;

校验位:校准数据的,常用奇偶校验位;

​ 奇校验:数据位和校验位中,1的个数之和为奇数;

​ eg : 假设数据位为0x55, 校验位自动补1;假设数据位为0x51, 校验位自动补0;

​ 偶检验:数据位和校验位中,1的个数之和为偶数;

​ eg : 假设数据位为0x55, 校验位自动补0;假设数据位为0x51, 校验位自动补1;

停止位:一帧数据发送结束,最重要的功能是用来校准时钟的。

​ 由于串口采用的是异步通信,通信的双方各自采用各自独立的时钟源,虽然要求时钟的频率保持一致,

​ 但是也会存在一定的误差,每发送一个bit位数据之后,误差就会进行累积,因此发送一帧数据完成之后,

​ 需要通过停止位校准时钟。

常用的串口协议为:8N1(8位数据位,没有校验位,1个停止位);

波特率(比特率):表示串口通信的数据的传输速率,每s钟传输数据的bit位数,单位为bps。

​ 常用的波特率为:115200bps或者9600bps

二、IIC总线时序图

2.1IIC总线时序图

2.1.1起始信号和终止信号时序图

1> SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号

2> SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号

3> 起始和终止信号都是由主机发出,起始信号产生后,总线就处于占用的态;终止信号产生后,总线就处于空闲态。

2.2数据传输时序图

1> I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

2> 在SCL为低电平期间,发送器可以向数据线上写入输入,因此数据线上的数据允许发生变化;

3> 在SCL为高电平期间,接收器从数据线上读取数据,因此必须保持数据线上的数据保持稳定。

2.3字节传输和应答信号

​ 1> 每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。

​ 2> 在第9个时钟周期的低电平期间,接收器向数据线上写入数据,在第9个时钟周期的高电平期间,发送器从数据线上读取数据,如果读到的是高电平,则表示非应答信号;如果读到的是低电平,则表示应答信号。

​ 3> 应答信号是由接收器产生的。

2.4I2C的寻址

1> I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。

2> 主机在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/W),用“0”表示主机发送数据(W),“1”表示主机接收数据(R)。总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己被主机寻址,根据R/W位将自己定为发送器或接收器。

2.2IIC总线通信协议

2.2.1主机给从机发生一个字节的通信协议

”8位数据“ 被写到 “寄存器的地址” 中。

2.2.2主机给从机发生连续的多个字节的通信协议

第1个 ”8位数据“ 被写到 “寄存器的地址” 中。

第2个 ”8位数据“ 被写到 “寄存器的地址+1” 中。

第3个 ”8位数据“ 被写到 “寄存器的地址+2” 中。

..............(地址会自动增加1)

2.2.3主机从从机读一个字节的通信协议

从机将 “寄存器地址”中的数据发送给主机

从机只能被动的进行数据的收发,如果从机给主机发送一个字节数据之后,如果主机给从机发送应答信号之后,则从机会认为主机还想接收下一个字节的数据,因此从机会将下一个字节的数据再次发送给主机;如果从机收到的是非应答信号,则从机不会发送下一个字节的数据给主机。

2.2.4主机从从机读连续的多个字节的通信协议

第一次, 从机将 “寄存器地址”中的数据发送给主机;

第二次, 从机将 “寄存器地址+1”中的数据发送给主机;

..........

三、SPI总线通信协议

3.1SPI基本的通信协议

设备选择线/片选线 : CS SS NCS NSS

​          时钟线 : SCK SCL SCLK

​          串行输出数据线 : MOSI

​          串行输入数据线 : MISO

​          M : Master I : Input S : Slave O : Output

MOSI:主器件数据输出,从器件数据输入

MISO:主器件数据输入,从器件数据输出

SCLK :时钟信号,由主器件产生

/SS:从器件使能信号,由主器件控制(片选)

1> 起始信号: NSS信号线由高变低,是SPI通讯的起始信号

2> 结束信号:NSS信号线由低变高,是SPI通讯的停止信号

3> 数据传输:SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。

​ MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的。

​ SPI每次数据传输可以 8 位或 16 位为单位,每次传输的单位数不受限制。

​ SPI总线发送的数据既有地址信息,命令信息和数据相关的信息。

3.2SPI共有4种通信模式

在SPI操作中,最重要的两项设置就是时钟极性(CPOL)和时钟相位(CPHA)这两项即是主从设备间数据采样的约定方式。

3.2.1时钟极性CPOL : 设置时钟空闲时的电平的状态

​ 当CPOL = 0 ,SCK引脚在空闲状态保持低电平;

​ 当CPOL = 1 ,SCK引脚在空闲状态保持高电平。

3.2.2时钟相位CPHA :设置数据采样时的时钟边沿

​ 当 CPHA=0 时,MOSI或 MISO 数据线上的信号将会在 SCK时钟线的奇数边沿被采样

​ 当 CPHA=1时, MOSI或 MISO 数据线上的信号将会在 SCK时钟线的偶数边沿被采样

UART、IIC以及SPI通信协议相关推荐

  1. 关于iic、spi通信协议的概述

    目录 一.IIC 1.通信模式 2.软件iic通信方式与步骤 a.通讯的起始和停止信号: b.数据有效性 c.响应信号 d.数据的读写 e.上诉情况对oled屏幕的读写(本人的实操举例而已) 2.硬件 ...

  2. 常用通信时序之UART、IIC、SPI(基于STM32)

    常用通信时序(UART.IIC.SPI,RS232.RS485)及协议(Modbus) 通讯时序 1. UART 2. IIC 3. SPI 4. RS323 5. RS485 通信协议 1. Mod ...

  3. 常用的嵌入式硬件通信接口协议(UART、IIC、SPI、RS-232、RS-485、RS-422、CAN、USB、IRDA)(一)

    一.概述 通信协议是两个(或多个)设备之间进行通信,必须要遵循的一种协议.通讯协议分为物理层和协议层. 物理层:规定通讯系统中具有机械.电子功能部分的特性,确保原始数据在物理媒体的传输: 协议层:规定 ...

  4. 杂七杂八的整理——STM32、Proteus使用、UART、IIC、SPI、LIN

    简要介绍两款ARM架构单片机 一. S32K1xx 系列单片机 S32K系列单片机是NXP比较新的车规级单片机,有S32K11x(基于ARM Cortex-M0+)和S32K14x(基于ARM Cor ...

  5. UART、RS232、RS485、IIC、SPI、CAN、CANFD、LIN、flexray、以太网等总线介绍

    目录 A.基础概念 A.1 字节 A.2 波特率 A.3 QoS A.4 AVB A.5 TSN A.6 DDS A.7 SOME/IP A.8 SOME/IP与DDS的差异点 A.9 以太网帧 A. ...

  6. (123)FPGA面试题-介绍低速接口(UART、IIC、SPI),SPI有几根线,每根线的作用?(三)

    1.1 FPGA面试题-介绍低速接口(UART.IIC.SPI),SPI有几根线,每根线的作用?(三) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-介 ...

  7. (92)低速接口UART、IIC、SPI介绍,面试必问(十六)(第19天)

    (92)低速接口UART.IIC.SPI介绍,面试必问(十六)(第19天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)低速接口UART.IIC.SPI介绍,面 ...

  8. 常用的嵌入式硬件通信接口协议(UART、IIC、SPI、RS-232、RS-485、RS-422、CAN、USB、IRDA)(二)

    2.IIC (1)基本概念 IIC总线是一种串行.半双工总线,同步通信.主要用于近距离.低速的芯片之间的通信. IIC串行总线一般有两根信号线,一根是双向的数据线SDA收发数据,另一根是时钟线SCL双 ...

  9. 1024之牛客之错误笔记+uart/IIC/232/485/SPI总结

    目录 牛客之错误笔记: uart/IIC/232/485/SPI总结: 牛客之错误笔记: [1.转义字符    \"                 %%     "是用\转义 % ...

  10. 开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板

    开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板 发个方便测试I2C.SPI.1Wire接口的工具模块 总的思路是通过USB或者UART接口发送一些协议字符串,由模块转换成 ...

最新文章

  1. LIME:一种解释机器学习模型的方法
  2. 服务器市场步步为营:Intel发布新款至强Xeon E5-4600v4四路处理器
  3. GitHub for windows使用教程(三) 团队协作流程
  4. SVM之交叉验证【转】
  5. java 中batch_java相关:Mybatis中使用updateBatch进行批量更新
  6. chrome浏览器安装vue调试插件dev-tools
  7. “云”话数字经济:2020 腾讯全球数字生态大会定档 9 月!​
  8. 翻译【mysqladmin --help】
  9. java爬取html过快,需要输入验证码
  10. python源代码文件_Python代码编译与反编译
  11. 重装的电脑360打补丁都是智能忽略
  12. beamer插入图片_用Latex制作幻灯片(beamer)
  13. SpringBoot项目resources下指定目录的所有文件下载到Centos服务器上,浏览器访问API后资源包直接下载本地磁盘,Java删除linux文件,zip文件打包
  14. Flex ikev2
  15. UV、PV、IP意思及区别解释
  16. 18、try...catch
  17. 计算机偏置,深度学习中偏置的作用
  18. level升级打怪是什么意思_工业平板电脑的常规升级是什么意思?以液晶屏来说明...
  19. PHPExcel读取表格内容
  20. Unity与3ds Max的单位关系(使用FBX文件)

热门文章

  1. intel AVX / AVX2指令学习资源
  2. 自由手写体字帖pdf_行楷钢笔字帖下载-行楷字帖电子版pdf版 - 极光下载站
  3. Java静态代理和动态代理(代理模式)详解
  4. linux基础:快速搭建平台
  5. 《Python金融大数据风控建模实战》 第5章 变量编码方法
  6. 中国所有省市区的ip经纬度接口
  7. Spring Cloud Gateway⑤令牌桶算法
  8. Matlab 最小二乘法
  9. SSM框架整合详细教程
  10. 四川多多开店:拼多多如何检查聊天记录