担心微控制器I/O不够用?让外部I/O扩展器件帮你解忧!

担心微控制器I/O不够用?让外部I/O扩展器件帮你解忧!

作者:Jacob Beningo


关键词: 单片机, 电路设计

设计人员经常面临两个微控制器I/O问题。第一个问题是,最适合应用的微控制器不具备合适的I/O能力组合。第二个问题是,已推出的产品线需要增加I/O。

出现第一个问题时,开发人员经常不得不购买更昂贵且功能更强的微控制器。而面对第二个问题时,切换到新的微控制器以及随之而来的软件移植所需的成本及时间可能会多得令人难以承受。

要同时解决这两个问题,一种潜在的解决方案是使用外部I/O扩展器件,这种器件通常可连接到微控制器的SPI或I2C总线。这样就能避免在引脚数以及可能的性能和封装方面,对微控制器做出过多的规定。同时,这种方法还能让产品设计具有前瞻性,以应对功能蠕变、目标市场扩张、客户功能请求和微控制器选择不当(这种情况时有发生)等问题。

本文将讨论典型的微控制器I/O要求,并介绍一些合适的外部扩展器件,然后说明如何使用这些片外资源来增加通用输入和输出、存储器存储、脉冲宽度调制 (PWM) 甚至看门狗定时器功能。


选择扩展接口

微控制器配有多个不同的片载外设接口,可用于与外部设备通信。根据微控制器的不同,这些接口可能包括(仅列举几例):

  • 串行外设接口 (SPI)
  • 内部集成电路 (I2C) 总线
  • 通用串行总线 (USB)
  • 通用异步接收器/发送器 (UART)
  • 控制器区域网络 (CAN)
  • Wi-Fi

其中最适合与外部扩展设备通信的接口是I2C和SPI。

I2C是一种两线总线,传统的运行速率为100千位/秒 (kb/s) 或400kb/s,但也有一些可支持1Mb/s或更快速度的高速设备。其中一条线是专用的时钟引脚,而另一条线则用于主设备和从设备之间的双向通信。通常情况下,微控制器充当主设备,外部设备充当从设备。从设备可使用7位或10位寻址方案进行寻址。

SPI是一种三线总线接口,运行速率介于1Mb/s和12Mb/s之间。SPI总线配有专用的主设备输出数据线、从设备输出数据线和时钟。微控制器同样配置为主设备,使用“从设备选择”线与从设备通信。每个与微控制器连接的从设备都需要一个专用输出引脚,用于选择它进行通信。不难想象,如果开发人员有很多想要连接的外部设备,他们可能很快就会用尽 I/O 线,然后选择从设备。

例如,如果开发人员使用STMicroelectronicsSTM32L011D4P7,可供使用的I/O线共有11条(图1)。仅SPI数据和时钟就需要三条I/O线,剩下的八条线除了与从设备通信,还需要执行系统所需的所有其他功能。虽然这完全可以满足许多应用的要求,但某些时候,设计人员仍可能需要对I/O进行扩展。


图1:STM32L011D4P7是一款Arm® Cortex®-M7处理器,其I/O引脚数限制为11个(图片来源:STMicroelectronics)


一般情况下,经验法则非常简单:添加以下功能时使用I2C总线:

  • I/O
  • PWM
  • EEPROM
  • 看门狗定时器

SPI 总线应该用于增加诸如为SD卡提供高速存储器访问等功能。


扩展通用I/O

有相当多的集成电路可支持通过I2C接口来扩展输入和输出。以下是一些有趣的示例:

PCA8574是一款特别有趣的器件,因为它只包含一个用于执行输入和输出的寄存器。单个寄存器极大地精简了配置器件以及读写引脚所需的软件数量(图2)。微控制器通过I2C与PCA8574通信,并根据A0至A2引脚的配置方式对此器件进行寻址。这一特性增加了设计的灵活性,因此开发人员可以为PCA8574选择从设备地址,并且可在一个设计中使用多个从设备地址。


图2:NXP的PCA8574是一款准双向8位I/O I2C扩展器。该扩展器只有一个I2C寄存器可供读写,从而在其引脚上执行I/O功能,因此是一款非常简单、精巧的器件。
(图片来源:NXP Semiconductors)


默认情况下,P0至P7在上电时配置为输入。读取单个内部寄存器时将为器件上的各个引脚指定状态,无论该引脚配置为输入还是输出。PCA8574允许引脚同时用作输入和输出,因此对寄存器的写入也会设置相应的位输出。

输出驱动由微弱的内部电阻器上拉,该电阻器很容易因输入值而过载。如果任何一个输入状态发生变化,INT引脚将切换为低电平,让微控制器知道输入状态发生了变化。然后,微控制器可以调用I2C来读取新值。


扩展PWM

PWM扩展器是一款非常有用的扩展器件。该器件在驱动LED时特别有用。当微控制器未执行任何操作时,可将其设为休眠模式,此时PWM扩展器可负责驱动LED状态。

关于如何使用PWM扩展器的完美范例经常出现在RGB按钮电路中,该电路可使用E-SwitchPV6F240SSG RGB按钮。

图3:E-Switch 的 PV6F240SSG RGB 按钮


Maxim IntegratedMAX7315便是一款适用于I2C接口的PWM扩展芯片。MAX7315配有8个PWM端口,并具有LED强度控制功能,这样可以轻松涵盖驱动RGB开关所需的3个通道,使得单个器件能够驱动若干开关和一些独立的LED。此外,MAX7315还有第9个端口,可以用作转换检测中断或通用输出。

MAX7315 I2C接口比NXP的PCA8574稍微复杂一些,因为它包含多个寄存器。因此,开发人员必须寻址从设备,提供其有兴趣读取或写入的存储器地址,然后执行写入或读取。MAX7315的存储器映射如图4所示。


图4:MAX7315 PWM控制器配有8个输出端口,其中包括LED强度功能。该器件的寄存器映射非常简单,允许轻松访问高级PWM功能。
(图片来源:Maxim Integrated)

MAX7315 的寄存器映射非常简单,允许轻松访问高级 PWM 功能。


配有WDT、EEPROM和PWM的组合型扩展器

如图所示,I2C总线I/O扩展器在用作独立器件时可能非常强大。也就是说,这种扩展器只包含诸如I/O或PWM等特定功能。例如Cypress SemiconductorCY8C9520A多端口I/O扩展器,这类扩展器在一个IC封装中包含了多个外设扩展。CY8C9520A共有三种扩展形式:20位、40位或60位扩展。然后可将这些引脚配置为输入、输出或PWM(图5)。


图5:Cypress Semiconductor的CY8C9520是一款配有EEPROM的20位、40位或60位I/O扩展器。该扩展器允许将扩展引脚配置为输入、输出或PWM。
(图片来源:Cypress Semiconductor)


除I/O扩展外,CY8C9520还配有EEPROM,可用于存储重要的应用设置(如序列号)以及其他重要的配置参数。

仔细查看图5,您会看到GPort 2上的WD6引脚。该引脚是一个看门狗定时器输出引脚,可在微控制器无法通信时用于复位微控制器,以及操控CY8C9529看门狗。看门狗设置是完全可配置的,并且可用于为应用程序代码增加额外的稳健性。


扩展微控制器功能的技巧和诀窍

目前有许多技术可帮助扩展微控制器的功能。以下是一些有帮助的技巧和诀窍:

  • 使用I2C连接外部设备。该接口只需两个引脚,并且支持多个从设备。
  • 在将某个零件设计成硬件之前,先购买一个开发板,或将芯片焊接到扩展板上,测试其能否满足您的系统需求。
  • 使用I2C总线工具与扩展器件连接,并了解其工作情况,这样可大幅提升软件的开发速度。
  • 在软件开发过程中,使用总线分析器监视与外部设备的通信,最大限度缩短调试时间。
  • 如果可能,选择配有外部看门狗定时器的器件,这可以作为一种工具,为系统设计增加稳健性。
  • 在连接片外存储器获取数据(非配置数据)时,请使用SPI等高速接口。
  • 如果设备返回否定应答 (NAK) 信号,或者总线受到拖累,请确保微控制器的I2C驱动程序可以处理此类问题。对于这些驱动程序来说,在收到意外响应时忽略错误并进入无限循环的情况并不罕见。



本文小结

当设计进展到微控制器无法继续提供更多I/O时,开发人员无需将现有的设计推倒重来。相反,他们可以使用外设芯片,以便为系统增加额外的功能。


———————————————————–

如有任何问题,欢迎联系得捷电子Digi-Key客服团队。

中国(人民币)客服
- 400-920-1199
- service.sh@digikey.com
- QQ在线实时咨询 |QQ号:4009201199


中国(美金)/ 香港客服
- 400-882-4440
- 8523104-0500
- china.support@digikey.com

Digikey WeChat QR Code

到微信搜寻“digikey”或“得捷电子
关注我们官方微信
并登记成会员,
每周接收工程师秘技,
赚积分、换礼品、享福利

头像
得捷电子

评论已关闭。

Copyright©DigiKey Electronics