【嵌入式】串行通信协议总结:UART,SPI,IIC,CAN

      最后更新:2022-01-26 15:10

      文章目录

      • 前言
      • UART
      • SPI
        • 参考资料
      • IIC
        • 参考链接
        • 总结
        • C51实现
      • CAN

      前言

      随着半导体技术的发展,数据传输速度逐渐增加,随之而来的是串行通信基本取代了并行通信,因此,了解常用的串行通信协议对于嵌入式开发来说非常有必要,这里总结一些用过的串行通信协议,重点在于其数据传输时序图。

      由于看到很多CSDN大佬写的文章非常详细也非常全面,故而本文主要是总结链接,以及总结个人实践经验。

      UART

      SPI

      参考资料

      SPI通信协议(SPI总线)学习 - 博客园
      CSDN

      IIC

      参考链接

      • 【STM32】IIC的基本原理(实例:普通IO口模拟IIC时序读取24C02)- CSDN
      • 浅谈I2C总线 - CSDN
      • [I2C]I2C总线协议图解 - 博客园

      总结

      上面那几篇文章确实写得非常好,而且也非常详细,总结来说:

      • IIC协议为两线,属于半双工,即能发送接收数据,但不能同时进行。

      • IIC中的信号有三种:起始信号、停止信号、应答信号,分别对应不同的两线电平状态。

      • IIC协议传输数据时有起始位,停止位,其数据传输结构为:1位起始位、7位的器件地址(即向谁写入/读取数据)、1位读/写标识位、之后就是数据位(可以有多个字节)、1位停止位在最后,且每传输一个字节都有应答位。
        在这里插入图片描述
        在这里插入图片描述
        其中,深色代表主机发送的数据,浅色代表从机向主机发送的数据。

      • 高字节先写入

      • 数据的有效性:数据在时钟线SCL的上升沿到来之前就需准备好。并在在下降沿到来之前必须稳定。且要求数据传输过程中有一定的延时,如下图所示。
        在这里插入图片描述

      • 有时候主机读入数据时,如果从机没有读入应答位的需求,则可以不加应答位。

      C51实现

      CAN

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类