USART,I2C,SPI

USART

  • 串口通信的标准电平有TTL,RS232,RS458

    • TTL与RS232区别

      在这里插入图片描述

协议层

  • TXD->RXD;RXD->TXD

  • 数据包由启始位、主体数据、校验位以及停止位组成

在这里插入图片描述

  • 异步通讯中由于没有时钟信号 (DB9 接口中是没有时钟信号的),所以两个通讯设备之间需要约定好波特率,即每个码元的长度

  • 数据包的起始信号由一个逻辑 0 的数据位表示,而数据包的停止信号可由 0.5、1、1.5 或 2 个逻辑 1 的数据位表示,只要双方约定一致即可。

  • 在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为 5、6、7 或 8 位长

  • 校验方法有奇校验 (odd)、偶校验(even)、0 校验 (space)、1 校验 (mark) 以及无校验 (noparity)

    • 奇校验要求有效数据和校验位中“1”的个数为奇数
    • 偶校验与奇校验要求刚好相反,要求帧数据和校验位中“1”的个数为偶数
    • 0 校验是不管有效数据中的内容是什么,校验位总为“0”,1 校验是校验位总为“1”

I2C

  • I2C 通讯协议 (Inter - Integrated Circuit) 是由 Phiilps 公司开发的由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路 (IC) 间的通讯。

物理层

  • I2C 通讯设备之间的常用连接方式见图

    在这里插入图片描述

  • 一个 I2C 总线只使用两条总线线路,一条双向串行数据线 (SDA) ,一条串行时钟线 (SCL)。数据线即用来表示数据,时钟线用于数据收发同步。

  • 每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问。

  • 总线通过上拉电阻接到电源。当 I2C 设备空闲时,会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高 电平。

  • 多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线

  • 具有三种传输模式:标准模式传输速率为 100kbit/s ,快速模式为 400kbit/s ,高速模式下可达3.4Mbit/s,但目前大多 I 2 C 设备尚不支持高速模式。

  • 连接到相同总线的 IC 数量受到总线的最大电容 400pF 限制

协议层

  • I2C 的协议定义了通讯的起始和停止信号、数据有效性、响应、仲裁、时钟同步和地址广播等环节。

  • 主机写数据到从机 、图主机由从机中读数据 及图 I2C 通讯复合格式,SDA 线的数据包序列:

    在这里插入图片描述
    在这里插入图片描述

    • S 表示由主机的 I2C 接口产生的传输起始信号 (S),这时连接到 I2C 总线上的所有从机都会接收到这个信号。
    • 起始信号产生后,所有从机就开始等待主机紧接下来广播的从机地址信号 (SLAVE_ADDRESS)。在 I2C 总线上,每个设备的地址都是唯一的,当主机广播的地址与某个设备地址相同时,这个设备就被选中了,没被选中的设备将会忽略之后的数据信号,这个从机地址可以是7 位或 10 位
    • 在地址位之后,是传输方向的选择位,该位为 0 时,表示后面的数据传输方向是由主机传输至从机,即主机向从机写数据。该位为 1 时,则相反,即主机由从机读数据
    • 从机接收到匹配的地址后,主机或从机会返回一个应答 (ACK) 或非应答 (NACK) 信号,只有接收到应答信号后,主机才能继续发送或接收数据。
    • 写数据:
      • 广播完地址,接收到应答信号后,主机开始正式向从机传输数据 (DATA)
      • 数据包的大小为 8 位,主机每发送完一个字节数据,都要等待从机的应答信号 (ACK),重复这个过程,可以向从机传输 N 个数据,这个 N 没有大小限制
      • 主机向从机发送一个停止传输信号 §,表示不再传输数据。
    • 读数据:
      • 广播完地址,接收到应答信号后,从机开始向主机返回数据 (DATA),数据包大小也为 8 位
      • 从机每发送完一个数据,都会等待主机的应答信号 (ACK),重复这个过程,可以返回 N 个数据,这个 N 也没有大小限制
      • 当主机希望停止接收数据时,就向从机返回一个非应答信号 (NACK),则从机自动停止数据传输
    • 读和写数据:
      • 该传输过程有两次起始信号 (S)。一般在第一次传输中,主机通过 SLAVE_ADDRESS 寻找到从设备后,发送一段“数据”,这段数据通常用于表示从设备内部的寄存器或存储器地址,在第二次的传输中,对该地址的内容进行读或写。也就是说,第一次通讯是告诉从机读写地址,第二次则是读写的实际内容
  • 当 SCL 线是高电平时 SDA 线从高电平向低电平切换,这个情况表示通讯的起始。当 SCL 是高电平时 SDA 线由低电平向高电平切 换,表示通讯的停止。起始和停止信号一般由主机产生。

  • SDA 数据线在 SCL 的每个时钟周期传输一位数据

  • SCL 为高电平的时候 SDA 表示的数据有效,即此时的 SDA 为高电平时表示数据“1”,为低电平时表示数据“0”。当 SCL 为低电平时,SDA的数据无效,一般在这个时候 SDA 进行电平切换,为下一次表示数据做好准备。

  • 每次数据传输都以字节为单位,每次传输的字节数不受限制。

  • 读数据方向时,主机会释放对 SDA 信号线的控制,由从机控制 SDA 信号线,主机接收信号,写数据方向时,SDA 由主机控制,从机接收信号。

SPI

  • SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线
  • 广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合

物理层

  • 常见的连接方式
    在这里插入图片描述

  • SPI 通讯使用 3 条总线及片选线,3 条总线分别为 SCK、MOSI、MISO;片选线,它们的作用介绍如下:

    • ( Slave Select):从设备选择信号线,常称为片选信号线,也称为 NSS、CS,而每个从设备都有独立的这一条 NSS 信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选信号线

      • 把该从设备的 NSS 信号线设置为低电平,该从设备即被选中,即片选有效;以 NSS 线被拉高作为结束信号

      • I2C 协议中通过设备地址来寻址、选中总线上的某个设备并与其进行通讯;而 SPI 协议中没有设备地址,它使用 NSS 信号线来寻址

    • SCK (Serial Clock):时钟信号线,用于通讯数据同步。它由通讯主机产生

    • MOSI (Master Output,Slave Input):主设备输出/从设备输入引脚

    • MISO(Master Input,,Slave Output):主设备输入/从设备输出引脚

协议层

  • 与 I2C 的类似,SPI 协议定义了通讯的起始和停止信号、数据有效性、时钟同步等环节

  • SPI时序

在这里插入图片描述

  • 这是一个主机的通讯时序。NSS、SCK、MOSI 信号都由主机控制产生,而 MISO 的信号由从机产生,主机通过该信号线读取从机的数据。MOSI 与 MISO 的信号只在 NSS 为低电平的时候才有效,在 SCK 的每个时钟周期 MOSI 和 MISO 传输一位数据

  • 数据传输时,MSB先行或 LSB 先行并没有作硬性规定

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

  • SPI 一共有四种通讯模式

    • 时钟极性 CPOL 是指 SPI 通讯设备处于空闲状态时,SCK 信号线的电平信号:CPOL=0 时,SCK 在空闲状态时为低电平,CPOL=1 时,则相反。
    • 时钟相位 CPHA 是指数据的采样的时刻,当 CPHA=0 时,MOSI 或 MISO 数据线上的信号将会在SCK 时钟线的“奇数边沿”被采样。当 CPHA=1 时,数据线在 SCK 的“偶数边沿”采样
    • SPI 的采样时刻不是由上升/下降沿决定的

    在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值