1. 说一说I2C的时序图,如何传输数据⭐⭐⭐⭐⭐

  2. I2C如何选择从设备⭐⭐⭐⭐

  3. 说一说SPI总线⭐⭐⭐⭐⭐

  4. 说说SPI的四种工作模式,由什么决定?⭐⭐⭐

  5. 说说UART的数据通信格式⭐⭐⭐⭐⭐

  6. 说说常用的数据校验算法:⭐⭐⭐⭐⭐

  7. 说说串口通信中的硬件流量控制⭐⭐⭐

  8. 说一说CAN总线的仲裁机制⭐⭐⭐⭐⭐

  9. 说一说CAN总线的优点⭐⭐⭐⭐⭐

  10. 说一说UART和USART的区别⭐⭐⭐⭐⭐

  11. 说说你了解的总线⭐⭐⭐⭐⭐

  12. 说一说RS232和RS485的区别⭐⭐⭐⭐⭐

  13. 说一说串行和并行的区别⭐⭐⭐⭐⭐

  14. 说一说同步和异步的区别⭐⭐⭐⭐⭐

=========================================================================================================

  • 本专栏适合于C/C++已经入门的学生或人士,有一定的编程基础。
  • 本专栏适合于互联网C++软件开发、嵌入式软件求职的学生或人士。
  • 本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵
  • 针对于非科班同学,建议学习本人专刊文章《蒋豆芽的秋招打怪之旅》,该专刊文章对每一个知识点进行了详细解析。
  • 如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。
  • 相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。

=========================================================================================================

  1. 说一说I2C的时序图,如何传输数据⭐⭐⭐⭐⭐

    I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL

    SDA:双向数据线,为OD (Open Drain,漏极输出) 门,与其它任意数量的OD与OC (Open Collector,集电极开路) 门成\线与\关系。

    SCL:上升沿将数据输入到每个I2C从设备中;下降沿驱动I2C从设备输出数据。(边沿触发)

    1. 空闲状态:I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。

    2. 起始信号:当SCL为高电平期间,SDA由高到低的跳变

    3. 停止信号:当SCL为高电平期间,SDA由低到高的跳变

    然后我们来看看如何传输数据的,如图:

    图片说明

    数据传输以字节为单位。

    主设备在SCL线上产生每个时钟脉冲,将在SDA线上传输一个数据位,当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位(ACK),此时才认为一个字节真正的被传输完成

    当然,并不是所有的字节传输都必须有一个应答位,比如:当从设备不能再接收主设备发送的数据时,从设备将回传一个否定应答位。

  2. I2C如何选择从设备⭐⭐⭐⭐

    系统中的所有外围器件通常具有一个7位的从器件专用地址码,其中高4位为器件类型,由生产厂家制定,低3位为器件引脚定义地址,由使用者定义(I2C还支持10位寻址)。

  3. 说一说SPI总线⭐⭐⭐⭐⭐

    SPI是串行外设接口。一 种同步串行接口技术,是一种高速的,全双工,同步的通信总线。

    SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多 个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI (数据输入)、SDO (数据输出)、SCLK (时钟)、CS (片选)。

    1. SDO/MOSI – 主设备数据输出,从设备数据输入;
    2. SDI/MISO – 主设备数据输入,从设备数据输出;
    3. SCLK – 时钟信号,由主设备产生;
    4. CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时需要将从设备对应的片选引脚电平拉低或者是拉高。
  4. 说说SPI的四种工作模式,由什么决定?⭐⭐⭐

    SPI总线有四种工作方式(SP0, SP1, SP2, SP3),其中使用的最为广泛的是SPI0和SPI3方式。SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性相位可以进行配置,如表格所示:

    SPI模式 时钟极性 (CPOL) 时钟相位 (CPHA) 空闲状态下的时钟极性 采样
    SP0 0 0 逻辑低电平 第一个跳变沿 (上升或下降) 数据被采样
    SP1 0 1 逻辑低电平 第二个跳变沿 (上升或下降) 数据被采样
    SP2 1 1 高电平 第二个跳变沿 (上升或下降) 数据被采样
    SP3 1 0 高电平 第一个跳变沿 (上升或下降) 数据被采样

    时钟极性 (CPOL) 对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。

    时钟相位 (CPHA) 能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿 (上升或下降) 数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿 (上升或下降) 数据被采样。

    SPI主模块和与之通信的外设时钟相位和极性应该一致

    SPI接口有四种不同的数据传输时序,取决于CPOLCPHL这两位的组合。

  5. 说说UART的数据通