SPI I2C UART- 通信协议和使用
微控制器开发是电子组装中的一个重要过程。但是串行协议和通信接口的输入促进了这项工作。在本文中,我们打算详尽探索SPI I2C UART接口和UART等串行通信协议。我们将分析串行协议的特性、优点、缺点和示例。
1。 UART接口
什么是UART?
图 1:Arduino 上的 UART 协议
通用异步接收和传输( UART ) 是一种串行通信协议,便于主机与辅助设备进行通信。首先,它支持串行数据传输。此外,它还具有异步通信和双向传输的能力。
简单协议还具有两条数据线:处理传输 (Tx) 和其他信号接收 (Rx)。通常情况下,信号是通过数字引脚 0 发送,而接收是通过数字引脚 1。
此外,它还有助于同步管理计算机和外部串行设备。
它是如何工作的?
图 2:DIY 电子 USB UART 板
本质上,UART通过以下方式管理两个设备之间的信号通信:
- 单纯形
- 半双工
- 全双工
单工涉及单向数据传输,而半双工意味着两个设备之间在任一方向上的非同时通信。最后,全双工需要在任一方向上同时传输数据。
一般情况下,连接后,从发送 UART 的数据线到接收 UART 会有数据传输。它通过以下原理发生;
- 首先,发送 UART 会将主设备的并行数据转换为串行形式,以传输到接收 UART。同样,接收 UART 将串行数据更改为并行数据,以供连接的接收设备使用。
- 由于 UART 需要异步通信,它没有时钟。因此,UART 将生成开始和停止位来指示消息的开始和结束。
- 两个 UART 必须以相同的波特率或 UART 数据传输速度运行。理想情况下,这是为了确保数据位的准确时序,因为超过 10% 的差异会使数据无用。
UART 工作协议
数据传输和接收
- 对于传输,发送 UART 需要从数据总线(例如 CPU)接收数据。
- 接下来,它添加三个位,即起始位、奇偶校验位和停止位。三者将形成一个数据包,通过 TX 引脚发送到接收 UART。
- 在发送 UART 中的数据用完后,数据传输停止。
中断控制
数据中断在自动发送缓冲区内容时很方便。以下情况可能会提示中断控制:
- 首先,当您遇到 FIFO(先进先出)溢出错误、换行错误、帧错误或奇偶校验错误时使用它。
- 另外,在数据接收、发送或接收超时期间激活它。
先进先出操作
图 3. Arduino 上的 UART 接口
Stellaris 系列 UART 模块具有两个 16 字节 FIFO,一个用于数据接收,另一个用于传输。此外,您可以在不同的深度配置它们以提供不同的中断。例如,你可能有 1/8 深度、1/4 深度、1/2 深度等。
发送FIFO的工作流程
- 首先,数据传输在数据输入后开始。此外,由于耗时,数据输入是连续的,直到发送 FIFO 已满。
- 填满后,您必须停止数据输入,以免丢失所有新数据。
- 接下来,发送 FIFO 会逐位发送数据,直到为空。最后,发送 FIFO 将创建一个额外的插槽。
接收FIFO的工作流程
- 硬件接收到上述步骤的数据后,将其存储在接收FIFO中。理想情况下,接收 FIFO 程序接收和擦除数据是一个自动过程。因此,接收 FIFO 中应有足够的空间。
- 它还具有一个收发器 FIFO,这对于解决 CPU 效率低下问题至关重要。此外,它有助于解决频繁的 UART 收发器中断问题。
- 最后,FIFO 不会丢失数据,因为它预先密封了所有可能的丢失途径。
环回
UART 有一个内部环回,用于调试和诊断 RX 输入将在何处接收发送的数据。
串行红外协议
UART 具有作为编码器/解码器模块运行的 IrDA 串行红外 (SIR)。它在转换半双工串行 SIR 接口和异步 UART 数据流时非常方便。
此外,串行通信协议向 UART 提供解码输入和数字编码输出。
使用 UART 的优势
- 简单的通信协议是一个文档齐全且易于使用的模块。
- 其次,它不需要串行时钟线。
- 第三,它有一个奇偶校验位,可以进行错误检查。
使用 UART 的缺点
- UART 接口的数据帧大小限制为 9 位,并且传输速度较慢。
- 此外,它无法使用许多主系统和从设备。
- 此外,它还具有 10% 以内的强制波特率,以防止数据丢失。
- 第四,设备之间的数据传输速度通常较慢。
微控制器中的 UART 示例
- UART Seeeduino V4.2
- USB 转 UART 5V
- 基础护盾 V2
- USB CP2102 串口转换器
2。 I2C接口
什么是 I2C?
图 4:使用 I2C 的差压传感器
内部集成电路 (I2C) 通信协议类似于 UART。但是,虽然 UART 被指定用于 PC 设备通信,但 I2C 在传感器和模块应用中很有用。
此外,双向两线同步串行总线可以连接多个设备,而不会影响通信路径。这要归功于它的共享总线和地址系统属性。
但与 SPI 相比,此功能的代价是设备之间的通信相对较慢。它的速度取决于外部噪声、线路质量和数据速度。
最后,两线接口可以连接低速设备,例如 EEPROM、模拟/数字转换器和微控制器。
它是如何工作的?
I2C 协议具有两条线:串行数据线接受端口 (SDA) 和串行时钟线 (SCL)。 SCL 促进传输同步,而 SDA 代表用于发送和接收数据位的数据线。
传输过程中,主设备提示总线数据传输。同时,它会生成一个时钟来打开传输设备。在这种情况下,传输中的寻址设备是从设备。
值得注意的是,主设备和从设备不具有恒定的数据传输速率。相反,它们的关系依赖于传输时的数据传输方向。
此外,单个主设备必须在开始数据传输之前通知从选择设备。同样,它需要在从从站接收数据之前通知从站。
将上拉电阻连接到 I2C 电源以实现最佳功能也很重要。
I2C 工作协议
图5:A针0.96寸OLED 128X64 OLED显示模块IIC I2C
数据传输方式
连接过程如下:
- 主要通过将 SDA 线从高电压电平切换到低电平,主输出将向连接的从设备发送传输信号。接下来,它将 SCL 线从高电压电平切换到低电平。
- 然后,主设备发送 7 位或 10 位地址并向每个从设备读取/写入位。
- 第三,奴隶将地址与自己的地址进行比较。如果匹配,它将返回一个 ACK 位,将 SDA 线切换为低电平。但是,如果它们不匹配,从机将使 SDA 线保持高电平。
- 接下来,主机发送或接收数据帧(取决于匹配的地址)。然后,在完成数据传输后,接收组件向数据发送方返回一个 ACK 位。它是确认一个完整的传输。
- 最后,主控将 SCL 切换为高电平,然后将 SDA 切换为通信结束。
时钟同步
每个主机都必须在 SCL 线路中生成其时钟信号以进行数据传输。此外,只有在时钟的高电平期间,数据才在 I2C 传输中保持有效。
传输模式
它主要通过两种方式传输,即:
快速模式
快速模式下的设备以 400kbit/s 的速率接收和传输数据。此外,快速模式 I2C 总线可以显着抑制毛刺,其输出具有斜率控制功能。
高速模式
高速模式下的 I2C 总线将以 3.4 Mbit/s 的比特率发送/接收数据。因此,它具有比以前的快速模式更快的数据传输速率。
I2C 的优势
- 即使您在主设备上连接了许多设备,它的引脚/信号数量也非常有限。
- 其次,I2C 设备凭借其多主设备和多从设备功能提供了灵活性。
- 此外,它使用起来也很简单,因为您只需要两条双向线即可连接到众多设备。
- 此外,它提供了广泛的适应性,还可以支持众多大师。
I2C的缺点
- 它的速度比较慢,必须使用上拉电阻,不像SPI只需要推挽电阻。此外,其开漏设计会降低其速度。
- 此外,电阻器占用的空间在 PCB 组装中至关重要。
- 当您连接了许多设备时,它并不容易使用。
微控制器中的 I2C 示例
- Raspberry Pi 的 4 通道 16 位 ADC
- I2C 集线器(6 端口)- Grove
- I2C 驱动程序/适配器
- I2C Arduino
3。 SPI接口
什么是 SPI?
图 6:SPI 接口在显示模块中很方便。
串行外设接口 (SPI) 被指定用于微控制器。此外,由于它以全双工方式工作,因此可以同时传输和接收数据。
SPI相对比I2C快,数据传输率至少为8位。首先,该模块的简单协议可实现更快的数据速率。因此,它在需要速度的应用中非常重要,例如显示模块和 SD 卡。
它在涉及信息突然变化的应用中也很重要,例如温度计。
它是如何工作的?
图 7:SD 卡使用 SPI
SPI 形式的设备将以以下两种方式之一运行:
- 首先,它选择带有片选线的器件。请注意,每个设备都需要其独特的片选线。
- 或者,它也可以通过菊花链方式运行。
您可以在 SPI 接口中连接任意数量的设备。但是,在大多数情况下,您会受到可用硬件选择行的限制。最后,在点对点通信期间,模块不需要寻址操作。
SPI 工作协议
SPI通过四个端口起作用,分别是:
- 主数据输出,从数据输入 (MOSI)
- 主数据输入,从数据输出 (MISO)
- 时钟信号 (SCLK)
- 启用从属信号 (NSS)
当使用多从机系统时,每个从机都需要一个唯一的使能信号。与 I2C 通信相比,此要求使硬件要求复杂化。
此外,SPI 接口具有两个移位寄存器。它允许在单个主设备(例如 CPU)与外围设备之间进行同步串行数据传输。
使用 SPI 的优势
- 它使用简单,因为与 I2C 不同,它缺少复杂的从机寻址系统。
- 其次,它是我们介绍的所有串行接口中速度最快的协议(比 UART 和 I2C 更快)。
- 它没有像 UART 通信那样的开始和停止位。因此,它允许连续的数据传输而不会中断。
- 最后,它具有独立的 MISO 和 MOSI 线路,可以同时发送和接收数据。
使用 SPI 的缺点
- 它的大部分 Pin 端口都被占用,这限制了您可以连接的设备数量。
- 此外,它缺少指定的流控制,并且与 I2C 不同,它没有确认数据已发送/接收的机制。
- 它需要使用 4 行,正如我们在上面强调的那样,并且与 UART 不同,它缺少错误检查机制。
- 第四,它还有一个主控。
微控制器中的 SPI 示例
- SPI Seeeduino V4.2
- SPI 驱动程序/适配器轻松驱动 SPI 设备
比较 UART、I2C 和 SPI
这些通信外围设备中哪一个是“最好的”? UART、SPI 还是 I2C?
这三者中没有出色的通信外围设备,因为每个都有其主要的优点和缺点。因此,根据您的项目选择最适合的协议。例如,如果您正在寻找速度,SPI 将为您提供最佳服务。
但是,如果您想在没有复杂阵列的情况下连接大量设备,请选择 I2C。
结论
我们已经揭示了您需要了解的有关 UART、I2C 和 SPI 通信接口及其各种传输速率的所有关键见解。此外,我们在这里回答有关通信协议的任何疑问。联系我们,我们会立即为您提供帮助。
工业技术