串行通信——UART、SPI与I2C

串行通信——UART、SPI与I2C

  • UART与SPI为全双工通信,I2C为半双工通信。
  • SPI与I2C是同步通信,UART为异步通信。

同步通信:双方时钟要同步,通信双方除数据线外还连接一条时钟线,请求发送后,等待至结果出来。
异步通信:想发就发,发完后可以执行其他操作,请求被响应后会通知调用者。数据中增加开始和停止位。

  1. SPI
  • 无限数据位数
  • spi设备分为主从,主机一般为微控制器,从机一般为传感器,显示器,存储卡等,主机给从机下达指令,一般只有一个主机,可以有多个从机
  • 四种信号线:主机输出从机输入信号线,主机输入,从机输出信号线,时钟线,片选信号 每个时钟周期传输一位数据,因此数据传输速度取决于时钟频率
  • 主机通过片选信号选择从机来使能通信

优点:数据无中断传输,传输速度快,速度是I2C的两倍;可以同时发送和接受消息。
缺点:使用多根线,没有确认(I2C有),没有错误检测(UART奇偶校验)

  1. UART
  • 没有同步时钟(双方预设波特率),数据包增加开始和停止位
  • 起始位1+数据长度5-8+奇偶校验1+停止位1/2
  • 起始位1+数据长度5-9+停止位1/2
    优点:只需两根线就可进行通信;无需同步时钟;可以进行错误检查
    缺点:数据帧长度有限;不支持一对多传输
  1. I2C
  • 结合SPI与UART优点 支持多主机,多从机
  • 有两条线路,一条双向串行数据线(SDA),一条时钟线(SCL)
  • 每个从机有一个唯一的长度为7或者10b的地址,主机通过地址与从机通信 三种传输速度,100kb/s,400kb/s或者3.4Mb/s
  • 实际上连接到总线的设备数量受电容限制

I2C常见连接方式

  • 当SCL为高,SDA由高电平切换为低电平时,表示开始信号;
  • 当SCL为高,SDA由低电平切换为高电平时,表示停止信号
  • 每次都有主机开始通信过程,主机发送开始位,从机地址以及读写位,对应地址的从机回复ACK。写数据过程中:主机开始数据传输,每个数据帧都要等从机回复ACK,无数据发送则传输结束位;读过程中:从机传输数据到主机,主机对每一个数据帧回复ACK,无数据可读,主机发送停止位。
  • 数据以字节为单位进行传输,每次传输的数据量没有限制
  • 当SCL为高电平时,SDA数据有效,当SCL为低电平时,SDA进行电平切换,为下一次数据传输做好准备
    主机向从机读写数据(其中阴影部分表示数据来自主机)
    优点:仅使用两根线;支持多主机;有消息确认机制
    缺点:数据传输比SPI慢;数据帧大小限制为1B
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值