Willkommen in unserer Community

Werde Teil unserer Community und registriere dich jetzt kostenlos ...

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

SSD1306 (OLED) anschließen

Dieses Thema im Forum "Schaltungen und Layout" wurde erstellt von LotadaC, 28. Januar 2018.

  1. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.789
    Zustimmungen:
    40
    Ort:
    Hennigsdorf
    Sprachen:
    BascomAVR, Assembler
    Map
    Hi,

    ich wollte langsam anfangen, diese Displays in Betrieb zu nehmen.

    Abgesehen von etwas Hühnerfutter zur Spannungsstabilisierung, Strom- und Frequenzeinstellung sowie für die interne Ladungspumpe benötigt das Display einen I²C mit max 3,3V, außerdem einen low-aktiven Reset (soll auch beim Powerup low sein). Die Spannung für die Ladungspumpe (Vbat) soll erst nach Vdd angelegt werden, und beim abschalten auch vorher getrennt werden.
    Die Schaltung soll 5V-tolerant werden bzw an bestehende 5V-Schaltungen angeschlossen werden können.

    Ich benötige also:
    • einen Linearregler (LDO)
    • für den I²C je einen Leveltranslator (bidirektional)
    • für /Reset einen unidirektionalen Pegelwandler
    • eine Möglichkeit, Vbat an-/abzuschalten
    Bisher sieht mein Entwurf so aus - könnt Ihr mal was dazu sagen? Insbesondere zu den geplanten FETs und dem generellen Plan?
    SSD1306.png Benötige ich an den Gates von Q3 und Q4 Strombegrenzungswiderstände (R4, R8), oder kann ein AVR die direkt umladen? (/Reset sollte nicht sonderlich zeitkritisch sein, Vbat erst recht nicht).
    @Dirk ?
     
  2. achim S.

    achim S. Mitglied

    Registriert seit:
    16. Januar 2010
    Beiträge:
    269
    Zustimmungen:
    5
    Map
    Hallo
    du treibst ja einen riesen Aufwand für das Teil. Wozu 4x BSS138 und Reset? Wozu die R und C am Display? Habe gerade vor ein paar Tagen so ein Fertig Display mit diesem Controller in Betrieb genommen. Gibt es ja als 0,96 Zoll und 1,2 Zoll. Hat auch eine Speisung von 5V und Regler auf 3,3V. Habe es in mein modulares System eingebaut. Das erste Programm geht auch schon, natürlich alles über den I2C Bus. Kann dir gern das Bild von der Platine schiecken. Leider ist das Tut dazu noch nicht fertig. Programm in C erstellt. Lass mich wissen was du brauchst.

    achim
     
  3. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.789
    Zustimmungen:
    40
    Ort:
    Hennigsdorf
    Sprachen:
    BascomAVR, Assembler
    Map
    Es sind drei.
    Die wandeln von 5V auf 3V3 Logik. Der SSD soll im aktiven Reset gestartet werden.
    Der SSD benötigt für das Display selbst ca 7,5V, kannst Du extern auf Vcc klemmen. Er besitzt aber eine interne Ladungspumpe, die mit externen Kerkos arbeiten kann -> C3 und C4.
    C5..C9 puffern die extern anliegenden/intern erzeugten Spannungen ab.
    R6 soll den Segment-Strom auf 12.5µA einstellen.
    Standardbeschaltung aus dem Datenblatt bei Verwendung der internen Ladungspumpe.
    Es geht mir um die drei rechten... 0.69", 0.84" mit je 96x16 Pixeln, das größere ist ein 0.91" mit 128x32 Pixeln. Deine Displays werden sicher größer sein, insbesondere mit der Platine drunter.
    Final soll die Platine nicht viel breiter als ein cm werden - zum Testen kommt diese Schaltung erstmal mit auf mein STK500-Expansion-Board mit drauf.
    Klar. Da hab ich feststellen müssen, daß der final geplante Tiny841 kein USI hat. Slave-TWI nutzt mir nichts, also muß ich mir'n Soft-Master-TWI stricken. Aber zum Testen tuts 'n Controller mit Hardware-Master-TWI.
    (kenne keinen kleinen(!!) Controller mit HW-TWI (Master) und ADC mit Gain-Amplifier... nicht mal die neuen XTinies haben sowas geplant... leider)
    Wird bei mir logischerweise alles in Assembler werden..
     
  4. Mikro23

    Mikro23 Mitglied

    Registriert seit:
    2. Januar 2017
    Beiträge:
    147
    Zustimmungen:
    12
    Ort:
    Großraum Hannover
    Sprachen:
    C, Assembler
    Map
    Ist Dir der ATtiny214/414/814 zu groß?
    ADC mit Gain-Amplifier hat er allerdings nicht...
     
  5. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.789
    Zustimmungen:
    40
    Ort:
    Hennigsdorf
    Sprachen:
    BascomAVR, Assembler
    Map
    Du hattest ja auch auf den 212/412 hingewiesen. Ja, die XTinies haben Master-TWI onboard. Aber eben keinen differentiellen ADC mit GA. Und keine PLL - sonst könnte man auf lange Sicht quasi jeden Tiny durch einen XTiny ersetzen.
    Achso, der 43u wär noch ein Exot.
    Möglicherweise ändere ich das noch ab auf externe Signalverstärkung, und nehme dann den 814. Der 816 wäre mit 0.300-SOIC schon wieder recht groß, und QFN will ich mir noch nicht antun...
    BTT:
    Unabhängig davon will ich erstmal mit den Displays spielen können, deswegen soll eins auf mein STK-Board mit drauf. Und eben auch an 5V betrieben werden können.
     
  6. Dirk

    Dirk Administrator Mitarbeiter

    Registriert seit:
    28. Januar 2007
    Beiträge:
    4.111
    Zustimmungen:
    108
    Ort:
    Mittelhessen, Giessen
    Sprachen:
    C, Assembler, Pascal, C++, PHP, Java
    Map
    Vorwiderstände benötigst du hier nicht. Ein kleiner Vorwiderstand ist dann sinnvoll, wenn du mit hohen Frequenzen arbeitest.
     
  7. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.789
    Zustimmungen:
    40
    Ort:
    Hennigsdorf
    Sprachen:
    BascomAVR, Assembler
    Map
    Ok, dann laß ich die beiden weg.
    Q1 und Q2 sollten (mit ihren R) ok sein.
    Was ist mit Q3 und Q4?
    Bei Q4 soll der DS-Spannungsabfall möglichst gering sein. Daß Display wird wohl über Vbat bis zu 20mA aufnehmen, möglicherweise klemm ich da auch noch'ne LED mit rein.
     
  8. Mikro23

    Mikro23 Mitglied

    Registriert seit:
    2. Januar 2017
    Beiträge:
    147
    Zustimmungen:
    12
    Ort:
    Großraum Hannover
    Sprachen:
    C, Assembler
    Map
    Bei den Mengen, die ich brauche, kommt es mir auf die 1,50 die der E5 mehr kostet, auch nicht an. ;)
    Der hat das alles und DMA, 12bit ADC, DAC, XCL, Eventsystem und vieles mehr.

    TWI sieht bei den xtinies ähnlich aus wie bei den xmegas, d.h. es unterscheidet sich ziemlich von den tinies und megas. Es soll einfacher sein, ich hab es aber nicht ohne die Interruptroutine aus dem ASF hingekriegt (beim A4). Entweder habe ich es nicht richtig verstanden oder das Datenblatt ist fehlerhaft oder unvollständig. (Kann sich inzwischen natürlich verbessert haben...)

    Hat Dein Master Pullups an SDA und SCL? Wenn nicht, fehlen sie im Schaltplan.

    BTW: Die zum µC passenden ANs findet man auf der zugehörigen microchip-Seite unter Dokumentation.
    http://www.microchip.com/wwwproducts/en/ATTINY414
    Ist aber leider kein "Migrating from conventional Core AVR to X-Core-AVR" dabei...
     
    #8 Mikro23, 28. Januar 2018
    Zuletzt bearbeitet: 28. Januar 2018
  9. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.789
    Zustimmungen:
    40
    Ort:
    Hennigsdorf
    Sprachen:
    BascomAVR, Assembler
    Map
    Ist aber auch wieder größer...
    Ich werde mich natürlich langsam mal an die neuen Tinies rantasten...
    Deswegen würde ich das Display erstmal mit irgendnem Mega angehen - man muß ja nicht gleich auf drei Baustellen anfangen.
    Eigentlich gibt es keinen Master in der Form. Ich plane eine Expansion-Platine für mein STK500, die diverse AVR (SMD-Tinies) via ZIF-Sockeln aufnehmen kann. Da noch Platz ist, soll noch ein Drehencoder mit rauf, und eines der OLEDs. Letzteres operiert nur mit 3V3 (eigentlich 2V8, aber 3V3 wären noch erlaubt) - deswegen die Anpassungsschaltung. Ob die 5V-seitigen Pullups mit drauf sollen, hab ich noch nicht entschieden - wahrscheinlich mach ich die aber via Jumper zuschaltbar. Auch hier 10k ?
     
  10. Mikro23

    Mikro23 Mitglied

    Registriert seit:
    2. Januar 2017
    Beiträge:
    147
    Zustimmungen:
    12
    Ort:
    Großraum Hannover
    Sprachen:
    C, Assembler
    Map
    So groß finde ich 7 x 7 mm jetzt nicht grade... ;)
    Das Display muß ja wohl an irgendeinen Master angeschlossen werden, wenn es benutzt werden soll und auf der 5V-Seite fehlen die Pullups. Wenn da nur ein Master mit Pullups angeschlossen wird, kein Problem.
    Die Spezifikation empfiehlt 3 mA durch die Pullups. Das ist aber nur bei vielen Slaves und ggf. Mastern und langen Leitungen erforderlich. I2C ist nicht sonderlich stromsparend...
    Wenn Du nur einen Slave an einen Master über sehr kurze Leitungen anschließen willst, könnten mit 10k sogar noch 400 kHz gehen. 4k7 wären sicherer. Aber das siehst Du an der Kurvenform...
    http://www.ti.com/lit/an/slva689/slva689.pdf
     
  11. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.789
    Zustimmungen:
    40
    Ort:
    Hennigsdorf
    Sprachen:
    BascomAVR, Assembler
    Map
    Der TQFP hätte 7x7 Body zuzüglich Beine -> 9x9 mindestens.
    Der VQFN hätte 5x5 (ohne Beine), der UQFN 2,8x2,8.
    Die beiden beinlosen will ich mir eigentlich nicht antun, routingtechnisch wird das auch nicht einfacher, bei 'nem 1cm-Platinenstreifen...
    Werd wohl bei 'nem 150er SOIC bleiben...
    Wie gesagt, die Schaltung soll mit auf das Expansion Board. Ohne Master. Der kann dann an JP1 angeschlossen werden. Prinzipiell kann man dann auch irgendwie anders Pullups dazuklemmen - ich plane die über einen Jumper mit ein, dann hat man später beide Möglichkeiten.
    3mA... ok. Aber wie ist das mit den Pullups auf der 3V3-Seite? Die mischen doch irgendwie mit rein (also wenn die 5V-Seite runterzieht über die Body-Diode, und wenn die 3V3-Seite runterzieht über den FET selbst).
    So'n 1206 umzulöten ist kein Thema, wenn die Kurvenform nicht paßt - aber ich hab kein Oszi. Naja, wäre ja dann glatt 'n Grund, zu Euch nach Hannover rüberzudüsen, das letzte Treffen ist ja schon ewig her...

    Hab noch gar nicht nachgeschaut, wie schnell man den SSD1306 ansprechen kann.

    P.S.: Danke bisher...
     
  12. Mikro23

    Mikro23 Mitglied

    Registriert seit:
    2. Januar 2017
    Beiträge:
    147
    Zustimmungen:
    12
    Ort:
    Großraum Hannover
    Sprachen:
    C, Assembler
    Map
    so ehrgeizig bin ich nicht, da gönne ich mir lieber genug Platz, wenn‘s geht sogar gerne THT. ;)
    (Beruflich geht auch BGA, das muß ich dann aber auch nicht selbst bestücken, das wird gebacken...)
    Das weiß ich auch nicht. Bei allen I2C-Schaltungen mit Levelshifter, die ich bisher gesehen habe, sind auf beiden Seiten Pullups (natürlich ohne Wertangabe) und mit 4k7 auf beiden Seiten ist man immer noch insgesamt unter 3 mA.

    Der SSD1306 kann 400 kHz bei I2C. Er kann aber auch SPI (wenn es nicht anders fest verdrahtet ist) mit 10 MHz und ohne das nervige, überflüssige I2C-Protokoll...
     
  13. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.789
    Zustimmungen:
    40
    Ort:
    Hennigsdorf
    Sprachen:
    BascomAVR, Assembler
    Map
    Die beiden großen Displays aus meinem Link im ersten Post sind diesbezüglich vollständig angeschlossen. Die drei (bzw sechs) kleinen haben nur I²C. SPI hätte auch der Tiny841 gehabt.
     
  14. Mikro23

    Mikro23 Mitglied

    Registriert seit:
    2. Januar 2017
    Beiträge:
    147
    Zustimmungen:
    12
    Ort:
    Großraum Hannover
    Sprachen:
    C, Assembler
    Map
    Im Übrigen brauchst Du gar keine bidirektionalen Pegelwandler. Der SSD1306 läßt sich nur im Parallelmode lesen.
     
  15. Dirk

    Dirk Administrator Mitarbeiter

    Registriert seit:
    28. Januar 2007
    Beiträge:
    4.111
    Zustimmungen:
    108
    Ort:
    Mittelhessen, Giessen
    Sprachen:
    C, Assembler, Pascal, C++, PHP, Java
    Map
    Das Display als Slave wird auf der SDA Leitung mit ACK antworten, es gehen also Infos zurück zum Master. Der Displaycontroller hat auch SPI, da brächte man keinen bidirektionalen Pegelwandler.
     
  16. Mikro23

    Mikro23 Mitglied

    Registriert seit:
    2. Januar 2017
    Beiträge:
    147
    Zustimmungen:
    12
    Ort:
    Großraum Hannover
    Sprachen:
    C, Assembler
    Map
    Ja, wenn man es denn benutzen will. Sonst nicht:
     
  17. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.789
    Zustimmungen:
    40
    Ort:
    Hennigsdorf
    Sprachen:
    BascomAVR, Assembler
    Map
    Daten lesen nicht, aber gabs da nicht auch irgend'n lesbares Statusregister?
    Das Display muß doch aber ein ACK erzeugen können, und ob es die Clock stretchen will, weiß ich auch grad nicht...

    Edit:
    Scheinbar nicht...
     
    #17 LotadaC, 29. Januar 2018
    Zuletzt bearbeitet: 29. Januar 2018
  18. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.789
    Zustimmungen:
    40
    Ort:
    Hennigsdorf
    Sprachen:
    BascomAVR, Assembler
    Map
    Ja, aber die drei Displays sind nur I²C-verdrahtet. Wahrscheinlich wird auch der SDA-OUT verdrahtet sein.
    Trotzdem würde man so mit einer Richtung auskommen, wenn man die NACKs nicht interpretiert...

    Auf der STK-Platine hab ich Platz für die FETs und das Hühnerfutter...
     
  19. Mikro23

    Mikro23 Mitglied

    Registriert seit:
    2. Januar 2017
    Beiträge:
    147
    Zustimmungen:
    12
    Ort:
    Großraum Hannover
    Sprachen:
    C, Assembler
    Map
    Auch nur im Parallelmode.
    kann man abschalten siehe Beitrag #16
    wird im Datenblatt nicht erwähnt
     
  20. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    2.789
    Zustimmungen:
    40
    Ort:
    Hennigsdorf
    Sprachen:
    BascomAVR, Assembler
    Map
    ???
    Wie meinst Du das?
    Wenn der Pegelwandler das ACK nicht durchstellt, kann der Master es auch nicht erkennen. Egal, ob das Display überhaupt eins sendet.
    Es wäre also Sache des Codes im Master (bzw der Master-Hardware), das NACK zu ignorieren, und trotzdem Daten zu senden etc...
     

Diese Seite empfehlen

  • Über uns

    Unsere immer weiter wachsende Community beschäftigt sich mit Themenbereichen rund um Mikrocontroller- und Kleinstrechnersysteme. Neben den Themen Design von Schaltungen, Layout und Software, beschäftigen wir uns auch mit der herkömmlichen Elektrotechnik.

    Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  • Coffee Time

    Unser makerconnect-Team arbeitet hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und unser eigener makerconnekt-Server regelmäßig gewartet wird. Wir nehmen das Thema Datensicherung und Datenschutz sehr ernst und sind hier sehr aktiv, auch sorgen wir uns darum, dass alles Drumherum stimmt!

    Dir gefällt das Forum und die Arbeit unseres Teams und du möchtest es unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft, unser Team freut sich auch über eine Spende für die Kaffeekasse :-)
    Vielen Dank!
    Dein makerconnect-Team

    Spende uns! (Paypal)