【概念理解】【笔记】浅谈单片机通信[UART、I2C、SPI]

视频1:点击观看原视频
视频2:这个讲得不错的视频,可以一起kk

一、通信

1、概念

对于单片机来说,通信是与 传感器存储芯片外围控制芯片 的信息交换

2、种类

(1、基本类型

  • 并行通信
  • 串行通信
    在这里插入图片描述

在这里插入图片描述

(2、三种传输方式

单行道嘛
在这里插入图片描述
双向单行道,
在这里插入图片描述
在这里插入图片描述

3、波特率(baud)

在这里插入图片描述

波特率是指数据通信中的传输速率,也称为数据传输速率或比特率。它表示每秒钟传输的比特数(单位为bps,即bits per second)。

在串行通信中,波特率是指每秒钟传输的符号数或信号变化次数。每个符号可以代表一个二进制位(比特),例如,在常见的异步串行通信中,一个波特率为9600 bps的串口可以每秒发送9600个二进制位。

二、三种通信方式

1、UART

特点:低位在前,高位在后

在这里插入图片描述

(1、发送一个字节的全过程

在这里插入图片描述

  • 当总线处于空闲状态时,线路保持高电平;
  • 发送数据前,会先发送一个低电平,让总线从 高电平 变为 低电平,提醒数据接收方做好准备;
  • 依次从高位到低位发送8为数据位;
    在这里插入图片描述
  • 8位数据 完成传输后,会发出一个高电平,让总线重新回到高电平状态;

uart传输数据时,一次发送8位,但再加上起始位和停止位时,实际是发送了10位。

(2、应用场景

在这里插入图片描述

  • 232,9针通信接口,一般用于计算机和单片机之间通信。但后续笔记本为了更加轻便,这个接口被取消了;
  • USB转串口,目前PC机与微机通信最常见的方式;
  • 主辅控制芯片,两个单片机之间通信。

总体来说,uart多用于板间通信;PC与微机;2个设备之间

2、IIC

在这里插入图片描述

(1、结构【2条线】

  • SCL 同步时钟线
  • SDA 数据传输线

特点: 可挂载多个器件,且支持多主机模式(即线路上的任何一个器件都可以作为主机,局限于只有一根信号线,同一时刻只能有一个主机);主机用有该时刻下总线的控制权,也就是发起和结束一次通信的权利;从机只能被主机呼叫。

在这里插入图片描述
在IIC总线协议中,每个器件都有一个7位的地址(就像咱们的电话号码)。
在这里插入图片描述

(2、发生一个字节的全过程

在这里插入图片描述

  • 它们的地址分别是0x21, 0x31,0x41,0x51;
  • 当MCU为主机,要读取E2PROM里的数据时,会向总线先发送一个0x31,找到E2PROM
  • 若要向E2PROM发送数据0x96

其发送数据的顺序与uart不同,是先高 后低,依次发送。

  • 当总线空闲时,SCL与SDA都保持高电平
  • 当主机要开始传输数据时,会将SDA电平拉低,然后它的起始位是 由高变低的下降沿
  • 再进行器件寻址,在SCL低电平时,依次发生7位地址位0x31,
  • 发送完毕后,紧接着,主机会发送一个读写指示位,低电平:要发送数据,高电平:请求数据。
  • 当主机发送完以上数据,从机若是成功接收,会发送一个应答位到总线上

注意点:只有SCL低电平时,SDA才可以变化。因为SCL高电平的时候,SDA要保持住,因为接受方要接受你在SCL低电平时候发生变化的数据!!!!

  • 发完寻址位,找到要通信的器件后,接下来就可以正式发送数据了;(上一个发送的数据是器件的地址位,先找到地址嘛,现在才是要发送的数据)
  • 发送的过程和寻址过程一样。

注意:
1.当发生完一个字节后,要有一个应答位才能发送下一个字节;
2.当要传输的所有数据发送完毕后,主机要将SCL拉到高电平,并将SDA数据线从低拉到高电平;低 -> 高,也表示 停止位

总结

在这里插入图片描述

3、SPI

在这里插入图片描述

(1、结构【标准SPI 有4根线,只有SCL是必须的,其余3条根据情况删减】

多个从机才需要CS进行片选。
在这里插入图片描述

(2、多机通信,需要用到CS进行片选

具体拉低/高,看单片机的设定;
以低电平选定为例,当主机要和Slave1 通信时, 通过CS1输出低电平,选择Slave1;
在这里插入图片描述

(3、发送一个字节的全过程

在这里插入图片描述

其发送数据的顺序与IIC相同,是先高 后低,依次发送。

  • SCLK 在空闲时,可以为高电平,也可以为低电平;
  • 以空闲时刻为高电平为例,
    • 当SCLK出现下降沿时,进行数据输出。
    • 当SCLK出现上升沿时,进行数据采样;
      具体的:
  1. 初始化:选择要与之通信的外部设备,并将对应的片选线(CS)拉低,进入通信模式。

  2. 准备数据:将要发送的字节数据加载到发送缓冲区中。

  3. 数据输出:从发送缓冲区读取数据位,根据通信协议的要求,在SCLK的下降沿时将数据位输出到数据线(MOSI)上。具体步骤可描述如下:

    • 在空闲时刻(SCLK为高电平),将第一个数据位设置到数据线。
    • 当SCLK出现下降沿时,数据线上的电平会保持不变,以输出当前数据位。
    • 当SCLK再次回到高电平时,移动到下一个数据位,准备进行下一轮数据输出。
  4. 数据采样:根据CPOL的设置,当SCLK出现上升沿时,进行数据采样。具体步骤可描述如下:

    • 当SCLK出现上升沿时,外部设备会将数据线上的电平变化反映到接收缓冲区。
    • 微控制器会在SCLK上升沿时读取数据线上的电平,采样当前数据位。
    • 根据通信协议的要求,可以在上升沿、下降沿或其他特定时机进行数据采样。
  5. 重复步骤3和4:根据需要,依次发送和采样每个数据位。在每个SCLK的上升沿和下降沿,进行数据输出和采样操作。

  6. 停止传输:传输完所有数据位后,将片选线拉高,表示结束通信,释放外部设备。

和IIC 相比,SPI没有开始位、结束位和应答位;

在这里插入图片描述
以上两两组合,构成了SPI的四种模式。

  • CPOL是SPI(Serial Peripheral Interface)协议中的一个参数,表示时钟极性(Clock Polarity)。SPI是一种常用的串行通信接口,用于在微控制器和外部设备之间进行数据传输。

  • CPOL定义了时钟信号的极性,它有两个可能的取值:

    • CPOL=0:时钟空闲状态为低电平,时钟信号在每个数据传输周期的上升沿触发。
    • CPOL=1:时钟空闲状态为高电平,时钟信号在每个数据传输周期的下降沿触发。
  • CPOL的设置需要发送方和接收方保持一致,以确保数据的正确传输。它对于数据传输的稳定性和可靠性有重要影响,特别是在高速通信和高噪声环境下。

  • 需要注意的是,CPOL与另一个参数CPHA(Clock Phase,时钟相位)一起使用,共同定义了数据采样和传输的时序。CPHA决定了数据采样的时机,而CPOL决定了时钟信号的极性。

4、总结

在这里插入图片描述

每天进步一点点 笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值