基于 MCU 设计的I²C 和 SPI 扩展器

基于 MCU 设计的I²C 和 SPI 扩展器,第1张

  自该技术问世以来,微控制器 (MCU) 的一个标志性功能就是在 IC 上集成 I/O 端口。通用 I/O 具有多种功能,从简单连接到开关和指示器到用作关键任务中断处理的触发器。然而,随着 IC 封装越来越小、引脚越来越少的趋势,有时您可能会遇到应用程序中所需的 I/O 端口数量不足的情况。I/O 端口扩展器 IC 是在基于 MCU 的设计中增加灵活性的宝贵工具。一些 IC 连接到集成 I/O 线路。其他的可以连接串行接口,例如 Inter IC (I²C)。如果您缺少 I/O 线或需要在系统中分配 I/O,则可能有一种设计可以满足您的需求。让‘

  我们将首先讨论您可能需要 I/O 端口扩展器的原因。总是有一个简单的解决方案,即选择具有更多 I/O 端口的不同 MCU,但这可能不是最佳选择。通过将微型 MCU 与端口扩展器 IC 相结合,您可以实现更小尺寸、更低成本和更低功耗的设计。此外,当今大多数 MCU 将多种功能分配给许多引脚,以尽量减少 IC 占用空间。您可能无法访问集成在 MCU 中的 I/O,因为您需要该引脚用于另一个外设。在某些应用中,您可能需要远离 MCU、靠近与现实世界的物理接口的 I/O 集群。

  I/O 扩展器肯定派上用场的一个地方是与引脚很少的非常小的 MCU 并驾齐驱。例如,一些PIC12F 系列中的Microchip 8 位 MCU 采用 8 引脚封装。具体来说,我们将讨论PIC12F1822。8 引脚 MCU 仅包含 6 条 I/O 线,由于引脚与其他外设共享,因此大多数设计无法将所有这些引脚用于通用 I/O。MCU 还包括一个 A/D 转换器和两个定时器

  I²C 和 SPI 扩展器

  PIC12F1822 还包括一个数字接口,可用于支持 I²C 或串行外设接口 (SPI)。两者均可用于连接多个片外外围设备,包括串行存储器和通过 I/O 端口扩展器的附加 I/O。

  Microchip 提供了许多可与 PIC12F1822 一起使用的扩展器 IC。例如,MCP23018I2C(图 1)基于 I²C,包括 16 条通用 I/O 线,可作为 16 位端口无缝读写。串行链路可以以 3.4 Mbits/s 的速度传输数据。这可能看起来并不快,但对于大多数 I/O *** 作来说已经足够了,因为 CPU 时钟将以 32 MHz 或更慢的速度运行。

基于 MCU 设计的I²C 和 SPI 扩展器,poYBAGL56-GANF60AAHAPdAVA_Q194.png,第2张

  图 1:Microchip MCP32018 和 MCP23S18 I/O 端口扩展器 IC 分别使用 I²C 和 SPI 接口,将 16 个通用 I/O 端口添加到 MCU 的片上 I/O 分配中。

  如果您仔细查看图 1 中的框图,您会注意到第二个虚线选项——依赖 SPI 而不是 I²C的MCP23S18 。SPI 链路以 10 Mbits/s 的速度运行得更快。您可以选择 I²C 或 SPI 还有其他原因,其中一个重要原因可能是您的应用程序中需要的其他外设以及这些外设支持的串行标准。

  Microchip 提供其他 I/O 扩展器,包括 8 位版本。该公司还提供集成额外外围设备的扩展器,例如额外的数据转换器和定时器。

  通过一根 I/O 线进行扩展

  让我们继续讨论德州仪器(TI) 的一种新扩展方法,该方法使用更简单的接口。TI 提供依赖于 I²C 和系统管理总线 (SMBus) 的扩展器 IC,但新的 TI TCA5405依赖于一条 MCU 通用 I/O 线来提供五个 I/O 引脚(图 2)。

基于 MCU 设计的I²C 和 SPI 扩展器,poYBAGL56--ADrwTAAFtTMH9LI4568.png,第3张

  图 2:德州仪器开发了一种自定时单线 (STSW) 接口,允许工程师使用单个 MCU I/O 添加 5 个 I/O 端口来连接扩展器。

  TCA5405 使用 TI 所谓的 STSW(自定时单线)接口,需要单线和接地。相比之下,SPI 至少需要三根电线,而 I²C 需要电线,尽管其中两根是参考电压和接地。

  连接到 TCA5405 的主控 MCU 必须生成一个主控时钟,以便扩展器在设置期间进行采样,然后生成与主控同步的自己的时钟。TI 没有定义 STSW 接口的最大数据速率,但规格表定义了 10 kHz 的 TCA5405 的最大输入开关频率。

  I/O 端口特性

  端口扩展器还有许多其他特性可能会影响您为应用程序选择的产品。例如,TCA5405 依赖于推挽式 I/O。TI 表示,推挽式设计允许扩展器以低于 20 mA 的电流驱动便携式应用中的 LED

  当然,只有当电源电压大于 LED 的正向电压时,扩展器才能完成这样的任务。TI 规定的电源电压范围为 1.65 至 3.6 V,驱动 LED 的设计将处于该范围的高端。

  前面讨论的 Microchip 扩展器使用开漏输出。这种配置很有用,因为 IC 通常吸收的电流比它们可以提供的电流多。此外,MCU 和 I/O 扩展器 IC 都可以在低于为外部组件供电所需的电源电压下运行。例如,在 LED 的情况下,即使扩展器在较低电压下运行并提供相应的节能效果,开漏输出也可以通过被上拉至 5 V 的 LED 吸收驱动电流。

  鉴于许多 IC 制造商提供种类繁多的 I/O 扩展器,最后一个主题是您是否可以使用一个供应商的 MCU 和第二个供应商的扩展器 IC。一般来说,答案是肯定的。但是,这可能需要一些努力。例如,您必须对来自其他供应商的 MCU 进行编程,才能为 TI STSW 接口提供必要的时序。相反,期望 TI 在其工具库中支持该接口,用于许多 MCU,甚至可能是其他 DSP 或微处理器。基于 SPI 等标准的扩展器应该更易于跨公司使用。

  下次当您遇到想要使用的 MCU 与 I/O 要求不匹配时,请确保在简单地选择可能使用更多功率和更高成本的更大 MCU 之前考虑使用扩展器 IC。此外,看看分配 I/O 是否更有意义,因为使用扩展器可以将 I/O 定位在物理接口上。您可能会发现绝对简单的扩展器是您工具箱中很有价值的一部分。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2999275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-26
下一篇 2022-09-26

发表评论

登录后才能评论

评论列表(0条)

保存