UART,SPI和I2C介绍

文章目录

  • 0 几个概念
  • 1 UART
  • 2 SPI
    • 2.1 SPI 信号线
    • 2.2 SPI 传输数据模式(时序)
  • 3 I2C
    • 3.1 空闲状态
    • 3.2 起始位与停止位
    • 3.3 数据的有效性

UART,SPI和I2C介绍_第1张图片

0 几个概念

发送器:发送数据到总线的器件;

接收器:从总线接收数据的器件;

主机:启动数据传送并产生时钟信号的设备;

从机:被主机寻址的器件;

多主机:同时有多于一个主机尝试控制总线但不破坏传输;

主模式:用I2CNDAT支持自动字节计数的模式;位I2CRM,I2CSTT,I2CSTP控制数据的接收和发送;

从模式:发送和接收操作都是由I2C模块自动控制的;

1 UART

https://blog.csdn.net/weixin_46027505/article/details/107329802

2 SPI

SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议。

SPI接口具有全双工操作,操作简单,数据传输速率较高的优点,但也存在没有指定的流控制,没有应答机制确认是否接收到数据的缺点。

SPI通信采用主从模式(Master-Slave)架构,一般为一个Master和多个Slave的应用模式。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。
UART,SPI和I2C介绍_第2张图片

2.1 SPI 信号线

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

(1) MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;
(2) MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;
(3) SCLK – Serial Clock,时钟信号,由主设备产生;
(4) CS – Chip Select,从设备使能信号,由主设备控制。低电平使能芯片。

其中,CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。这就使在同一条总线上连接多个SPI设备成为可能。

2.2 SPI 传输数据模式(时序)

SPI传输的模式由极性Polarity和相位Phase控制。
(1) CKPOL (Clock Polarity) = CPOL = POL = Polarity = (时钟)极性
(2) CKPHA (Clock Phase) = CPHA = PHA = Phase = (时钟)相位
(3) SCK=SCLK=SPI的时钟
(4) Edge=边沿,即时钟电平变化的时刻,即上升沿(rising edge)或者下降沿(falling edge)

UART,SPI和I2C介绍_第3张图片

CPOL的高低决定串行同步时钟的空闲状态电平。

  • 如果CPOL=0,串行同步时钟的空闲状态为低电平;
  • 如果CPOL=1,串行同步时钟的空闲状态为高电平;

时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。

  • 如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;
  • 如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样;

UART,SPI和I2C介绍_第4张图片
UART,SPI和I2C介绍_第5张图片

3 I2C

I2C是由Philips公司发明的一种串行数据通信协议,仅使用两根信号线:SerialClock(简称SCL)和SerialData(简称SDA)。

UART,SPI和I2C介绍_第6张图片

3.1 空闲状态

I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。

3.2 起始位与停止位

  • 起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。
  • 停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。

3.3 数据的有效性

I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

你可能感兴趣的:(LoRaWAN,单片机)