PC主板上只有一个SMBus吗?


8

我已经将两根线连接到主板的SMBus时钟和数据线(通过手动焊接,因为没有接头)。我希望将此总线连接到我的微控制器。

我将它们连接到我的示波器上,它们显示正确的3.3V左右(在我看来,由于存在上拉电阻,因此已连接了导线)。

我可以通过linux上的python-smbus读写此SMBus。相同的SMBus甚至可以拾取内存模块上的SPD eeprom,因此此smbus肯定可以工作。但是我看不到我的示波器上的任何活动。

PC主板上只有一个SMBus吗?还是有多个,所以我将电线连接到错误的地方?

我的主板是华擎X58 Extreme 6(南桥是ICH10R)


2
你有什么芯片组?答案取决于您的南桥IC。SMBUS和I²C是如此易于实现,并非不可能有多个。从用户的角度来看,所有PC主板几乎都是相同的。但是,从低层次看,情况截然不同。芯片组甚至在硬件级别上也提取了许多复杂性。
Alexios

南桥是ICH10R
cksa361

Answers:


4

请查看ICH10系列数据表

在页214,它描述了SMBus。板载只有一个SMBus接口用于控制/轮询母板设备,但还有一个附加的 SMBus,外部主设备可通过该接口将事件发送到ICH10。无法从计算机方面以编程方式使用此功能。第222页的5.20.7节介绍了它的工作原理以及可以执行的操作。看起来它用于熄灯管理,外部看门狗,传感器遥测等。

很可能是您已连接到该从属接口,这就是为什么您看不到流量的原因。这些引脚上的上拉电阻可能在那里以保护高阻抗输入。


0

有多少总线取决于系统。

当前(2017年),许多单处理器插槽主板在南桥中使用单个SMBus控制器。该总线可以连接到PCIe插槽上的SMBus引脚,并且可以用于从eeprom中读取DRAM配置信息。使用带有更多针脚的插槽的处理器(例如Intel Xeon E5处理器)具有多个额外的I2C总线与内存eeprom进行通信,因此,请勿在插槽和主板设备之间共享一条I2C总线。

如果插槽中的卡的地址有冲突,或总线上的伪造信号导致系统可能无法启动(无法读取DIMM参数来初始化DRAM控制器)或主板I2C可能存在操作问题诸如温度/电压监视器之类的设备。

不幸的是,SMBus标准目前不要求设备避免使用非常通用的I2C地址,例如0x50-0x57(DIMM SPD eeproms),因此已经制作了卡,可以在具有多个总线的高端服务器上正常工作,但不能在较低总线上工作具有共享总线的终端服务器。共享总线设计上使用哪些地址将取决于母板设计以及所填充的内存插槽。您可能拥有一个系统,该系统具有4个内存插槽,已填充的2个内存插槽以及一个使用SMBus的PCIe控制器卡,并且一切正常。当您添加另外2个DIMM时,系统无法启动,原因是因为控制器卡SMBus地址与新DIMM的I2C地址冲突。问题出在控制器卡,而不是内存。

解决方法包括:将胶带放在控制器卡的SMBus引脚上(有关正确的引脚,请参阅PCIe上的Wikipedia文章),或者某些主板具有跳线来控制是否将SMBus路由到插槽。

长期的解决方案是更改SMBus规格以反映共享的SMBus / I2C计算机的实际情况,并将地址0x50-0x57以及热传感器等任何其他常用地址禁止添加到卡上。还可以弄清DIMM串行存在检测(SPD)规范,以阐明共享I2C总线上的设备如何发生冲突,并可能采取措施避免地址冲突是一个好主意。我见过的Micron SPD规范讨论了位模式,您必须仔细阅读以了解将消耗哪些I2C地址。

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.