-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: 50 IC's an einem SPI bus?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2008
    Beiträge
    5

    50 IC's an einem SPI bus?

    Anzeige

    Ich würde gerne 50 CMOS-IC's als Slaves an einem gemeinsamen SPI bus (ATmega16 als Master, CLKmax << 1MHz) betreiben. Bei TTL wären das ja enorme Ströme, ich habe aber keine Ahnung wie das Limit bei CMOS-Bausteinen aussieht und kann auch keine Unterlagen dazu finden. Sehr wahrscheinlich werde ich einen Treiberbaustein oder eine Transitorschaltung für Clock- und Daten-Leitung benötigen.

    Kann mir bitte jemand eine Tip geben wie das aussehen könnte?
    Vielen Dank bereits im Voraus!

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.10.2007
    Ort
    41462 Neuss
    Alter
    49
    Beiträge
    375
    bei cmos ist das nicht viel anders als bei ttl: ein normaler ausgang kann nur eine begrenzte anzahl eingänge schalten. wieviele genau ist von der serie und dem baustein abhängig, d.h. du mußt die datenblätter konsultieren.

    50 sind jedenfalls ne ganze menge. mal von der benötigten treiberleistung abgesehen wird dein spi bus auch ne recht beachtliche länge haben (die 50 IC müssen ja irgendwo untergebracht werden) das macht alles noch mal deutlich komplizierter! stichworte: leitungskapazitäten, leitungswiderstände, verzögerungen der signale, signalform.

    ich würds erst gar nicht versuchen 50 IC an einen bus (egal ob spi oder was anderes) zu hängen, sondern mir ne andere architektur überlegen.

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    23
    Beiträge
    656
    Manche Funktionen der ICs lassen sich doch sicher auch mit einem Microcontroller realisieren.

    Wie willst du überhaupt 50 ICs an einen SPI Anschluss anschließen? Da braucht man dann doch auch für jeden eine ChipSelect Leitung. So viele hat doch ein AtMega16 gar nicht.

    mfg

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2008
    Beiträge
    5
    @fumir: würde ja gerne eine andere architektur wählen, aber einzige alternative wäre dann eine anordnung in reihe, aber durch das "durchreichen" der signale würde evtl. eine zu lange laufzeit entstehen. und ja, der bus wäre ziemlich lang, so bis zu 3m.

    @_r2d2: ich will ja nicht die volle SPI funktionalität, es reicht ein unidirektionaler bus mit einem master, alle slaves sind nur empfänger und shiften die daten mit dem CLK signal in ihr schiebe-register. also wird nur ein SCK und das MOSI signal verwendet, MISO und slave-select's fallen weg.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2008
    Beiträge
    5
    also laut dem wikipedia-artikel http://en.wikipedia.org/wiki/Fanout haben CMOS chips einen enorm großen fan-out wert:
    e.g. using NXP Semiconductor specifications for their HEF4000 series CMOS chips at 25 °C and 15 V gives a fanout of 34 thousand
    also 34-tausend eingänge an einem einzigen ausgang, oder verstehe ich da was falsch? dagegen haben TTL's einen wert um die 10.

    in meinem fall gilt für den ATmega: Io = max. 20mA
    und für die cmos eingänge: Iih/Iil = max. 1µA
    demzufolge ein FANout von ~20000
    oder nicht?

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.10.2007
    Ort
    41462 Neuss
    Alter
    49
    Beiträge
    375
    ich würde es mit ner art matrix versuchen. oder die 50 IC in gruppen zu je 10 ansteuern.

    dem Wiki artikel würd ich nicht trauen. die haben einfach max. ausgangsstrom durch eingangsstrom eines gatters geteilt. das stimmt so nur im statischen betrieb.
    bei ttl bedingt auch bei arbeitsfrequenzen.
    bei cmos jedoch ist das unsinn:

    der eingang eines cmos ist praktisch ein kleiner kondensator, der beim umschalten des l,ogikpegels geladen oder entladen werden muss.
    damit das richtig funktioniert, muss der kondensator schnell geladen werden. und dazu brauchts große ströme. wenn du an einen HEF4000 ausgang 34000 hef4000 eingänge anschliesst klappt das im prinzip prima solange sich der pegel nicht ändert. sobald sich aber der pegel ändert, wirken die 34000 eingänge zusammen wie ein kurzschluß. der ausgangspegel wird sich erst mal gar nicht und dann nur recht langsam ändern. mit 1mhz ist da schon mal gar nix. aber es kommt noch schlimmer: sobald der pegel dann endlich etwa die mitte zwischen low und high erreicht hat, geraden die 34000 eingänge in nen undefinierten zustand und die 34000 gatter begehen gemeinsam suizid (da beide eingangstransistoren leitend werden und damit die versorgungsspannung mehr oder weniger kurzschliesen)

    ein realistischer fanout von hef4000 dürfte wohl eher bei 20-30 liegen und ist stark von der arbeitsfrequenz abhängig.

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Kannst du einmal sagen was du vorhast, möglicherweise gibt es für dein Problem eine wesentlich einfacher Lösung.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2008
    Beiträge
    5
    @fumir: danke für den tip, ich werde es dann mit einer anderen architektur versuchen. also zB. ein treiberbaustein welcher den bus in 5 seperate busse aufteilt. leider müssen dadurch jedoch einiges mehr an kabel verlegt werden. besser wäre es da die treiberausgänge parallel auf ein kabel zu legen. wäre das dann wieder von nachteil? was wäre deiner meinung nach ein geeigneter treiberbaustein?

    @hubert: es handelt sich um ein netz aus 50 verteilten anzeigen, alle an einem bus, gesteuert durch den ATmega. der master sollte in der lage sein mit min. 50kbaud zu senden. da der bus sehr lang ist (ca.3m) dürfen nur wenige kabel verwendet werden (max. 4 incl. versorgungsspannung). funk, i2c, can o. ähnl. kommen nicht in frage da sie zu aufwendig zu implementieren sind und weitere/teurere komponenten auf empfängerseite benötigen würden. die daten müssen daher im einfachstromverfahren (pegel bei 0 und 5V) übertragen werden. gibt es dafür eine einfachere lösung?

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    43
    Beiträge
    377
    Zitat Zitat von wiRe
    es handelt sich um ein netz aus 50 verteilten anzeigen, alle an einem bus, gesteuert durch den ATmega. der master sollte in der lage sein mit min. 50kbaud zu senden. da der bus sehr lang ist (ca.3m) dürfen nur wenige kabel verwendet werden (max. 4 incl. versorgungsspannung).
    Hallo wiRe!

    - RS-485
    - mit MAX487 (2,08 € bei Kessler-Electronic)
    - bis zu 127 Empfänger
    - http://www.alldatasheet.com/view.jsp?Searchword=MAX487

    Wenn du jeden Empfänger eine ID gibst, dann brauchst du einfach nur über die UART Nachrichten raus schicken und für alle oder einen Empfänger kennzeichnen. Den Rest machen die MAX487-ICs, die du statt den üblichen MAX232 verwendest.

    Code:
    PRINT "00:irgendein Text fuer alle Empfaenger"
    PRINT "01:Ein Text fuer den ersten Empfaenger"
    PRINT "02:Ein Text fuer den zweiten Empfaenger"
    ...
    Es genügen drei oder vier Leitungen (wenn du auch VCC mitgibst).
    VCC, GND und zwei Datenleitungen.

    Ich konnte nirgends herauslesen, wer oder was der Empfänger sein soll. Also, wenn alle Stricke reißen, dann kannst du immer noch ATmega8 oder ATtiny2313 als Vermittler verwenden, die dann die Signale für die Empfänger aufbereiten.

    mfg
    Gerold
    :-)

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.06.2004
    Ort
    nahe Heidelberg
    Alter
    39
    Beiträge
    233
    Ich hab vor ca. 5 Jahren mal eine Laufschrift mit 18 IC's am ca. 2m langen SPI-Bus betrieben. Bei Datenraten von ca. 2Mbit hat das ganze auch noch sehr gut funktioniert. Da die IC's speziell dafür ausgelegt waren, brauchte ich auch nur einen CS für alle. Die Signale sahen da noch relativ gut aus. Daher würde ich jetzt mal schätzen, das sich warscheinlich so ca. 25 dieser IC's noch gut betreiben lassen würden. Aber genau sagen kann ich's jetzt nicht. Bei den IC's handelte es sich um den MAX7221.

    Gruß, Volker
    Es muss nicht immer alles Perfekt sein, doch sicher funktionieren solls schon.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •