如何处理模块上的多个上拉电阻


9

我正在考虑为几天前开发的开发板制作一个模块,其中将包括spi / i2c接口。

问题是我没有在主板的MCU引脚中包括上拉电阻,而是在考虑将它们添加到模块中以使其更“通用”,因此每个用户都可以使用它们而无需在其中添加额外的电阻。原型板。

但是后来我遇到了下一个问题。如果在额外的模块中添加上拉电阻,并且例如将两个或多个模块连接到同一条总线,则这些电阻将并联,这样电阻将下降并且无法实现其功能。

但是,如果我在主板上增加上拉电阻,则这些引脚在MCU中始终为低电平有效。

因此,主要问题是:

如何将多个模块连接到同一条总线上,而每个模块上都有一个上拉电阻,而当一个以上模块时却不能使它们并联?那可能吗?

还是这里最好的解决方案是在MCU中启用上拉电阻,而不在模块中插入上拉电阻?

谢谢。-


创建单独的模块,该模块将仅包含上拉电阻器:)
Alexandr Zarubkin,

Answers:


14

我假设您的每条总线的总长度在1米以下,这对于普通的I 2 C和SPI来说是典型的。而且,总线电容在规格范围内。

只能有一(1)组上拉电阻。因此,最适合它们的位置是主控制器板上。不要将引体向上放在模块上。

如果您想在某些情况下上拉而在其他情况下不上拉。

  • 当您不需要上拉电阻时,请勿安装它们。
  • 设计主控制器板,使上拉电阻通过跳线连接到信号线。不需要上拉电阻时,请卸下短路块。

编辑: 坦率地说,我认为Sparkfun在I 2 C从模块上放置上拉电阻是一个错误。不幸的是,并非每个购买模块的人都意识到过度上拉可能是一个问题。如果控制器板(而不是从属外围板)具有带有焊料跳线的上拉电阻会更好。哦...等等... Arduino不带(可选)上拉电阻(尽管也许应该)。因此,让我们在各处进行俯卧撑。轻松的开箱即用体验。但是添加一些从模块,总线将停止工作。

更新(2015年5月):
- 在其他主题的注释中进行了相关讨论。
-在他们最近的模块中,SparkFun开始在Vcc和I 2 C上拉电阻之间添加焊料斑点跳线(示例)。这样可以更轻松地断开上拉电路。

更新(2015年12月):
有关对具有多个模块的I 2 C进行故障排除的类似问题不断出现在留言板上。 尝试扩大总体反应。


是的,实际上我的案子只是一个例子。例如,某些商店出售的所有rtc模块都包括上拉电阻,因此...在这种情况下如何处理这些模块。这就是为什么我将粗体标记为主要问题。:)
盛氧气

1
@SeinOxygen如果您有带上拉电阻的模块,加上带有自己的上拉电阻的控制器,则所有这些电阻将并联出现,并呈现出较硬的上拉电阻(较小的电阻)。假设总共有3个(三个)2.2kΩ电阻作为上拉电阻。总上拉电阻为733Ω。这违反了I2C规范。该怎么办?从模块中删除多余的上拉电阻(也许,它们本来不应该放在那儿)。
尼克·阿列克谢耶夫

@SeinOxygen有关此线程中 I2C上拉值的更多信息。
尼克·阿列克谢耶夫

4

一种选择是使用SIL或DIL电阻器,并将其安装在每个模块的插槽中。当构建具有多个模块的系统时,将它们从除最后一个模块之外的每个模块中拉出。这样可以节省一些跳线以外的电路板空间。

此主题的变化形式包括:FET开关,用于连接或断开电阻器,该开关由单个跳线或连接器上的备用引脚控制(因此,如果插入了另一个模块,则电阻器将自动断开)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.