常用串行通信总线协议UART、IIC、SPI随笔

1.UART(不算地收发2根线,全双工。一根且只能收(发)为单工)

  串口全称叫做串行接口,数据一位一位传输,两条线即可实现双向通信。
  嵌入式里面说的串口(COM接口),一般是指UART口,单片机的TXD、RXD是TTL电平(32是CMOS 3.3V),所以你得万变不离其宗的将其它信号转成TTL电平,只有这样给单片机下载程序才有可能成功!
  UART 外设就是串口的一种,UART 全称是 Universal Asynchronous Receiver/Trasmitter,也就是异步串行收发器。通过 UART 接口与外界相连最少只需要三条线: TXD(发送)、 RXD(接收)和 GND(地线)。
通信格式
  UART 一般的接口电平有 TTL 和 RS-232,TTL电平:TXD,RXD上低电平表示逻辑0,高电平表示逻辑1。RS-232(采用差分线,需要DB9接口):-15 ~ -3表示逻辑1,+3 ~ +15表示逻辑0。

2.IIC(两根线即可,其中一根SDA即可完成收发,半双工)

  I2C (Inter-Integrated Circuit内部整合电路,记这个不益于理解)是最常用的通信接口,众多的传感器都会提供 I2C 接口来和主控相连(陀螺仪、加速度计、触摸屏)。I2C 是 NXP 公司设计的,使用两条线在主控制器和从机之间进行数据通信:一条是 SCL(串行时钟线),另外一条是 SDA(串行数据线),需要接上拉电阻(一般4.7K),总线空闲的时候 SCL 和 SDA 处于高电平。 I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。

  I2C 总线工作是按照一定的协议来运行的:I2C 是支持多从机的,I2C 主控制器可以通过 I2C 设备的器件地址访问指定的 I2C设备,即通过 SDA 和 SCL 这两根线来访问多个 I2C设备。
  一样有起始位,数据位,停止位。当 I2C 主机发送完 8 位数据以后会将 SDA 设置为输入状态,等待 I2C 从机应答,也就是等到 I2C 从机告诉主机它接收到数据了。应答信号是由从机发出的,主机需要提供应答信号所需的时钟,主机发送完 8 位数据以后紧跟着的一个时钟信号就是给应答信号使用的。从机通过将 SDA 拉低来表示发出应答信号,表示通信成功,否则表示通信失败。
在这里插入图片描述
  主机通过 I2C 总线与从机之间进行通信不外乎两个操作:写和读。
写时序如下:
在这里插入图片描述
读时序如下(多了一次发送设备地址)
在这里插入图片描述

3.SPI(4根或者3根,其中收发两根,全双工)

  SPI( Serial Perripheral Interface)是和 I2C 一样广泛使用的串行通信,也可以通过 SPI 来连接众多的传感器。相比 I2C 接口, SPI 接口的通信速度很快(因为不像IIC还要用数据线完成设备地址的发送【协议复杂】,直接CS片选即可,但硬件实现比iic复杂,且没有应答机制以确认), I2C 最多 400KHz,但是 SPI 可以到达几十 MHz。对于访问速度要求比价高的话 I2C 就不适合了。
  SPI 是 Motorola 公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线, SPI 时钟频率相比 I2C 要高很多,最高可以工作在上百 MHz。 SPI 以主从方式工作,通常是有一个主设备和一个或多个从设备,一般 SPI 需要4 根线,但是也可以使用三根线(单向传输)。CS/SS(Slave Select/Chip Select),SCK(Serial Clock), MOSI/SDO( Master Out Slave In/Serial Data Output),MISO/SDI( Master In Slave Out/Serial Data Input)。
  SPI 通信都是由主机发起的,主机需要提供通信的时钟信号。SPI 的时序图很简单,不像 I2C 那样还要分为读时序和写时序,因为 SPI 是全双工的,所以读写时序可以一起完成
在这里插入图片描述

  SPI 有四种工作模式,通过串行时钟极性(CPOL)和相位(CPHA)的搭配来得到四种工作模式。和I2C 一样, SPI 也是有时序图的,以 CPOL=0(clock polarity), CPHA(clock phase)=0 这个工作模式为例(串行时钟空闲状态为低电平。串行时钟SCLK的第一个跳变沿(上升沿或下降沿)采集数据。), SPI 进行全双工通信的时序如图 :
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值