Existe-t-il un seul SMBus sur les cartes mères PC?

8

J'ai connecté deux fils à l'horloge SMBus et aux lignes de données de ma carte mère (soudé manuellement via des fils, car il n'y a pas d'en-tête). Je souhaite interfacer ce bus avec mon microcontrôleur.

Je les ai connectés à mon champ d'application, et ils montrent le bon 3,3 V ou à peu près (cela me semble que les fils ont été connectés depuis qu'il y a un pullup).

Je peux lire et écrire sur ce SMBus via python-smbus sur linux. Le même SMBus récupère même les eeproms SPD sur les modules de mémoire, donc CE smbus fonctionne définitivement. Mais je ne vois aucune de ces activités sur ma portée.

Existe-t-il un seul SMBus sur les cartes mères PC? Ou y en a-t-il plusieurs, et donc je connecte mes fils aux mauvais endroits?

Ma carte mère est un ASRock X58 Extreme 6 (Southbridge est ICH10R)

cksa361
la source
2
Quel chipset avez-vous? La réponse dépend de votre IC South Bridge. SMBUS et I²C sont si faciles à implémenter qu'il n'est pas impossible d'en avoir plusieurs. Du point de vue de l'utilisateur, toutes les cartes mères PC sont à peu près les mêmes. À un faible niveau, cependant, les choses sont radicalement différentes. Le chipset résume une grande partie des subtilités, même au niveau matériel.
Alexios
Southbridge est ICH10R
cksa361

Réponses:

4

Jetez un œil à la fiche technique de la famille ICH10 .

À la page 214, il décrit le SMBus. Il n'y a qu'une seule interface SMBus à bord pour contrôler / interroger les périphériques de la carte mère, mais il y a un SMBus esclave supplémentaire , par lequel un périphérique maître externe peut envoyer des événements à l'ICH10. Il n'y a aucun moyen d'utiliser cela par programme du côté de l'ordinateur. La section 5.20.7 à la page 222 décrit comment cela fonctionne et ce que vous pouvez faire. Il semble qu'il soit utilisé pour la gestion de l'extinction, les chiens de garde externes, la télémétrie des capteurs, etc.

Il se pourrait bien que vous soyez connecté à cette interface esclave, c'est pourquoi vous ne voyez pas de trafic. Les tractions sur ces broches sont probablement là pour protéger les entrées à haute impédance.

Alexios
la source
0

Le nombre de bus dépend du système.

Actuellement (2017), de nombreuses cartes mères de socket à processeur unique utilisent le contrôleur SMBus unique dans le pont sud. Ce bus peut être connecté aux DEUX broches SMBus sur les emplacements PCIe et est utilisé pour des choses comme la lecture des informations de configuration de la DRAM depuis eeprom. Les processeurs qui utilisent des sockets avec plus de broches, comme les processeurs Intel Xeon E5, ont plusieurs bus I2C supplémentaires pour parler aux eeproms de la mémoire, donc ne partagez pas un seul bus I2C entre les emplacements et les périphériques de la carte mère.

Si une carte dans un emplacement a une adresse en conflit ou place des signaux bidons sur le bus, le résultat est que le système peut ne pas démarrer (il ne peut pas lire les paramètres DIMM pour initialiser les contrôleurs DRAM) ou peut avoir des problèmes de fonctionnement avec la carte mère I2C des appareils comme les moniteurs de température / tension.

Malheureusement, la norme SMBus n'exige pas actuellement de périphériques pour éviter l'adresse I2C très courante, comme 0x50-0x57 (eeproms DIMM SPD), donc des cartes ont été créées qui fonctionnent bien sur les serveurs haut de gamme avec plusieurs bus mais ne fonctionnent pas sur les bus inférieurs serveurs d'extrémité avec un bus partagé. Les adresses utilisées sur une conception de bus partagée dépendront de la conception de la carte mère et des emplacements de mémoire remplis. Vous pouvez avoir un système avec 4 emplacements de mémoire, 2 de ceux qui sont remplis et une carte contrôleur PCIe qui utilise SMBus et tout fonctionne bien. Lorsque vous allez ajouter 2 modules DIMM supplémentaires, le système ne démarre pas, et la raison en est que l'adresse SMBus de la carte contrôleur est en conflit avec l'adresse I2C des nouveaux modules DIMM. Le problème est la carte contrôleur, pas la mémoire.

Les solutions de contournement incluent: mettre du ruban adhésif sur les broches SMBus de la carte contrôleur (voir l'article Wikipedia sur PCIe pour les broches correctes), ou certaines cartes mères ont un cavalier pour contrôler si le SMBus est routé vers les emplacements.

Une solution à long terme serait de changer la spécification SMBus pour refléter cette réalité des ordinateurs SMBus / I2C partagés et de rendre les adresses 0x50-0x57 et toute autre adresse couramment utilisée pour les capteurs thermiques et autres, interdites pour l'ajout de cartes. La spécification DIMD Serial Presence Detect (SPD) pourrait également être clarifiée pour expliquer comment les périphériques sur les bus I2C partagés peuvent entrer en conflit, et peut-être faire valoir que la prise de mesures pour éviter les conflits d'adresse est une bonne idée. La spécification Micron SPD que j'ai vue parle de modèles de bits et vous devez lire attentivement pour savoir quelles adresses I2C seront consommées.

Jan Bottorff
la source