Cette question fait suite à ma précédente: Alternatives au SPI en raison de l'EMI . Je joue avec l'idée de concevoir mon propre bus de communication. Je serais reconnaissant si quelqu'un pouvait jeter un œil sur ma conception préliminaire et me dire où je suis fou ...
J'utilise actuellement 2 MHz SPI transporté sur des fils de 10 cm de long à sept ADC sur des PCB séparés (CS partagé, mais chaque ADC a sa propre ligne MISO. Le problème est qu'il n'y a pas beaucoup d'ADC avec un bus différentiel, donc je me demande s'il est possible de concevoir mon propre bus. Au moins la couche physique, et peut-être aussi le protocole.
Objectifs de conception du nouveau bus:
- utiliser des composants physiquement petits
- faible EMI
- pas plus de 4 fils de données (deux paires)
- bande passante de> 300 kbps à partir de chaque ADC. (> 2,1 Mbps au total)
Avant de m'écrire comme fou de penser à cela, considérez que ce n'est peut-être pas si difficile à faire sur un PSoC5 . Sur cette puce, je peux certainement concevoir mon propre protocole dans Verilog et le faire implémenter dans le matériel. Et dans une certaine mesure, je pourrai peut-être également inclure les composants de la couche physique. De plus, je peux peut-être avoir sept de ces choses en même temps, toutes fonctionnant en parallèle dans le maître, une pour chaque esclave afin que je puisse obtenir une bonne bande passante globale.
Et voici mon idée préliminaire:
Il serait basé sur I2C, légèrement modifié pour l'aider à se connecter aux composants de la couche physique. Les lignes SDA et SCL sont maintenant des paires différentielles. La paire SDA a la propriété OR-ing. Ceci est réalisé en utilisant une broche qui ne peut conduire qu'en haut et une qui ne peut conduire qu'en bas. La paire SCL est entraînée exclusivement par le maître. Le débit de données serait augmenté à au moins 1 Mbps.
Le maître serait un PSoC5 avec 7 modules maîtres. Les esclaves seraient également des PSoC5, avec un module esclave, et utiliseraient l'ADC intégré.
Pensées:
- Je ne sais pas trop quelle est la meilleure façon de mettre en œuvre les résistances de rappel et les composants de limitation de vitesse de balayage.
- Je suppose que je n'ai pas besoin de résiliation. Si je limite la vitesse de balayage à environ 80 ns, cela devrait être bon pour un câble de 10 cm de long.
- Ce n'est évidemment pas un émetteur-récepteur différentiel approprié. Suis-je en train de perdre mon temps à essayer d'en fabriquer un avec des portes?
- Ces portes non provoquent un certain biais. Est-ce que cela risque d'être un problème?