在PIC微控制器中,MSSP(主同步串行端口)模块是利用多路复用引脚来应对I2C和SPI两种外设。使用这两个外设中的任何一个通常都没有问题。但是,如果要同时使用这两种外设而不改变微控制器该怎么办呢?
图1中的电路是为某便携式仪器所开发的,它使用了Microchip的28引脚PIC MCU,在I2C总线上运行RTC(实时时钟)、EEPROM和COG(玻璃上芯片)LCD,并在SPI总线上运行数字电位器和microSD卡。这个实现对我们来说性能完美无缺。
图1:同时利用PIC MCU两种外设输出的电路。
使用上述电路,就可以在只使用4个MOSFET而不大幅增加物料清单的情况下,使用相同的外围引脚和两个额外的GPIO引脚来使用SPI和I2C总线。我们所使用的MOSFET是现成的逻辑电平N通道类型。图中的示例包括2N7000和BSS138,两者均来自安森美(onsemi),并且都经过了测试且性能令人满意。
SCK/SCL和SDA/SDI的多路复用引脚通过该MOSFET组合进行切换,也即利用微控制器打开相应外设的栅极来实现这个动作。在固件中,也就是在初始化相应的总线之前,通过将相应的GPIO设为高电平并将另一个GPIO驱动为低电平来打开所需的外设。
连接很简单,也即把MOSFET漏极引脚连接到MCU引脚上,但FETDI (MOSI) MOSFET例外,这种器件是将其源极引脚连接到MCU。I2C侧MOSFET的源极引脚还应添加I2C连接上拉电阻。
实际运行的设备如图2所示。
图2:外设自动切换的实际运行设备。
Soumitra Bhattacharjee是一名产品设计人员,对楼宇自动化、空间和用户交互设计有着浓厚的兴趣。
(原文刊登于EDN美国版,参考链接:A circuit to use PIC peripheral outputs simultaneously,由Franklin Zhao编译。)
本文为《电子技术设计》2022年4月刊杂志文章,版权所有,禁止转载。免费杂志订阅申请点击这里。