Forum: Mikrocontroller und Digitale Elektronik ILI9341 Spannungsregelung


von matthias s. (Gast)


Lesenswert?

Kurze Frage,

ich steuere mein LCD mit ili9341 controller über einen at90can an. 
dieser hat 5 V ausgangsspannung. Wie regel ich diese spannung am besten 
auf 3,3 V runter? Gibt es dafür einen schnellen Tip?

Vielen Dank im voraus

von Nitram E. (slexx)


Lesenswert?

Z-Diode

von matthias s. (Gast)


Lesenswert?

Ist auch ein spannungsteiler möglich?

von matthias s. (Gast)


Lesenswert?

Martin T. schrieb:
> Z-Diode

Ist auch ein Spannungsteiler möglich?

von Nitram E. (slexx)


Lesenswert?

Wenn du nur das Display mit Strom versorgen möchtest reicht eine z Diode 
aus. Der ili9341 verträgt der 5v Steuersignale vom uC? Wenn nicht dann 
Pegelwandler. Oder dein komplettes Projekt wird mit 3.3V betrieben. :)
Und ja, ein Regler ist möglich. SMD?

von matthias s. (Gast)


Lesenswert?

Martin T. schrieb:
> Wenn du nur das Display mit Strom versorgen möchtest reicht eine z Diode
> aus. Der ili9341 verträgt der 5v Steuersignale vom uC? Wenn nicht dann
> Pegelwandler. Oder dein komplettes Projekt wird mit 3.3V betrieben. :)
> Und ja, ein Regler ist möglich. SMD?

das Display sollte iegtnlich 5 V vertragen. Da ich mit dem 
Initialisieren allerdings nicht weiter komme, dachte ich mir, dass ich 
mal Versuche die 3,3 V zu bekommen

von Nitram E. (slexx)


Lesenswert?

> das Display sollte iegtnlich 5 V vertragen. Da ich mit dem
> Initialisieren allerdings nicht weiter komme, dachte ich mir, dass ich
> mal Versuche die 3,3 V zu bekommen

Also ich habe auch den ili9341, Allerdings mit 3.3V soweit ich das 
datenblatt interpretieren kann, darf nix über 3.3V rein.
Am besten wäre ein spannungsregler und ein Pegelwandler.
Möchtest du SMD verwendet?

von matthias s. (Gast)


Lesenswert?

Martin T. schrieb:
>> das Display sollte iegtnlich 5 V vertragen. Da ich mit dem
>> Initialisieren allerdings nicht weiter komme, dachte ich mir, dass ich
>> mal Versuche die 3,3 V zu bekommen
>
> Also ich habe auch den ili9341, Allerdings mit 3.3V soweit ich das
> datenblatt interpretieren kann, darf nix über 3.3V rein.
> Am besten wäre ein spannungsregler und ein Pegelwandler.
> Möchtest du SMD verwendet?

ich hab eins von adafruit und da steht dass es von 3,3 V-5 V betrieben 
werden kann. Nein SMD möchte ich nicht verwenden

von Nitram E. (slexx)


Lesenswert?

> ich hab eins von adafruit und da steht dass es von 3,3 V-5 V betrieben
> werden kann. Nein SMD möchte ich nicht verwenden

Sag das doch. Dann brauchst du dir keine Gedanken machen, auf dem Board 
ist ein Wandler und Regler drauf. Warum willst du jetzt was auf 3.3v 
regeln?

von matthias s. (Gast)


Lesenswert?

Martin T. schrieb:
>> ich hab eins von adafruit und da steht dass es von 3,3 V-5 V
> betrieben
>> werden kann. Nein SMD möchte ich nicht verwenden
>
> Sag das doch. Dann brauchst du dir keine Gedanken machen, auf dem Board
> ist ein Wandler und Regler drauf. Warum willst du jetzt was auf 3.3v
> regeln?

Ist wohl mehr ein Verzweiflungsversuch, da ich das Initialisieren nicht 
hinbekomme und mir überlegt habe, ob es daran liegen könnte ... sorry

hast du ein programmcode zum initialisiern des displays, dass du evtl. 
auch zu verfügung stellst. ich bin wirklich am ende mit meinem latein

von Nitram E. (slexx)


Lesenswert?

Hast du einen Schaltplan?
Welches Modul von Adafruit ist das?
Ich habe das eine für den arduino und das 2.8 Breakout Board

von matthias s. (Gast)


Lesenswert?

Martin T. schrieb:
> Hast du einen Schaltplan?
> Welches Modul von Adafruit ist das?
> Ich habe das eine für den arduino und das 2.8 Breakout Board

http://www.exp-tech.de/adafruit-2-8-tft-lcd-with-touchscreen-breakout-board-w-microsd-socket

von matthias s. (Gast)


Lesenswert?

Schaltplan habe ich leider noch keinen erstellt.

von Mitlesa (Gast)


Lesenswert?

Martin T. schrieb:
> Ich habe das eine für den arduino und das 2.8 Breakout Board

Das sind ganz andere LCDs !

Der 9341 is üblicherweise ein 2.2 inch Display, der Controller mit SPI.

von Mitlesa (Gast)


Lesenswert?

matthias s. schrieb:
> http://www.exp-tech.de/adafruit-2-8-tft-lcd-with-t...

Ja in diesem Fall passt es, aber

Martin T. schrieb:
> für den arduino und das 2.8 Breakout Board

Es gibt nur eines, gell?

von Nitram E. (slexx)


Lesenswert?

> hast du ein programmcode zum initialisiern des displays, dass du evtl.
> auch zu verfügung stellst. ich bin wirklich am ende mit meinem latein

Schick mal deine Routine.

Nein Mitlesa, es gibt mehrere Varianten von Adafruit. Die Displays sind 
die gleichen.
Bei dem
http://www.exp-tech.de/adafruit-2-8-tft-lcd-with-t
Ist z. B. Kein Touchcontroller drauf

von matthias s. (Gast)


Lesenswert?

Martin T. schrieb:
> Schick mal deine Routine.

void UTFT::InitLCD(void)
{

    TCCR2A = (1 << COM2A1) |  (1 << WGM20);
    TCCR2A = (1 << CS21);
//CS Pin
    DDRB |= (1<<PB0);
    // DC Pin
    DDRA |= (1<<PA0);
    SPI.SPI_init();
    CS_TFT_HIGH;
    DC_TFT_HIGH;

  _delay_ms(1); //alter Wert 100


LCD_Write_COM(0xCB);
LCD_Write_DATA(0x39);
LCD_Write_DATA(0x2C);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x34);
LCD_Write_DATA(0x02);

LCD_Write_COM(0xCF);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0XC1);
LCD_Write_DATA(0X30);

LCD_Write_COM(0xE8);
LCD_Write_DATA(0x85);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x78);

LCD_Write_COM(0xEA);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x00);

LCD_Write_COM(0xED);
LCD_Write_DATA(0x64);
LCD_Write_DATA(0x03);
LCD_Write_DATA(0X12);
LCD_Write_DATA(0X81);

LCD_Write_COM(0xF7);
LCD_Write_DATA(0x20);

LCD_Write_COM(0xC0);      //Power control
LCD_Write_DATA(0x23);     //VRH[5:0]

LCD_Write_COM(0xC1);      //Power control
LCD_Write_DATA(0x10);     //SAP[2:0];BT[3:0]

LCD_Write_COM(0xC5);      //VCM control
//LCD_Write_DATA (0x2B);
//LCD_Write_DATA (0x2B);
LCD_Write_DATA(0x3e);     //Contrast
LCD_Write_DATA(0x28);

LCD_Write_COM(0xC7);      //VCM control2
LCD_Write_DATA(0x86);     //--


// Memory Access Control
// [MY]  [MX]  [MV]  [ML]  [BGR]  [MH]  0  0
//  0  1    0    0    1    0    0  0    = 48
//  0  1    0    1    1    0    0  0    = 58
LCD_Write_COM(0x36);
LCD_Write_DATA(0x48);
LCD_Write_DATA(0x58);

LCD_Write_COM(0x3A);
LCD_Write_DATA(0x55);

LCD_Write_COM(0xB1);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x18);// 79Hz
//LCD_Write_DATA(0x13); //100 hz

LCD_Write_COM(0xB6);      // Display Function Control
LCD_Write_DATA(0x08);
LCD_Write_DATA(0x82);
LCD_Write_DATA(0x27);

LCD_Write_COM(0xF2);      // 3Gamma Function Disable
LCD_Write_DATA(0x00);

LCD_Write_COM(0x26);      //Gamma curve selected
LCD_Write_DATA(0x01);

LCD_Write_COM(0xE0);      //Set Gamma
LCD_Write_DATA(0x0F);
LCD_Write_DATA(0x31);
LCD_Write_DATA(0x2B);
LCD_Write_DATA(0x0C);
LCD_Write_DATA(0x0E);
LCD_Write_DATA(0x08);
LCD_Write_DATA(0x4E);
LCD_Write_DATA(0xF1);
LCD_Write_DATA(0x37);
LCD_Write_DATA(0x07);
LCD_Write_DATA(0x10);
LCD_Write_DATA(0x03);
LCD_Write_DATA(0x0E);
LCD_Write_DATA(0x09);
LCD_Write_DATA(0x00);

LCD_Write_COM(0xE1);      //Set Gamma
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x0E);
LCD_Write_DATA(0x14);
LCD_Write_DATA(0x03);
LCD_Write_DATA(0x11);
LCD_Write_DATA(0x07);
LCD_Write_DATA(0x31);
LCD_Write_DATA(0xC1);
LCD_Write_DATA(0x48);
LCD_Write_DATA(0x08);
LCD_Write_DATA(0x0F);
LCD_Write_DATA(0x0C);
LCD_Write_DATA(0x31);
LCD_Write_DATA(0x36);
LCD_Write_DATA(0x0F);

LCD_Write_COM(0x11);      //Exit Sleep
_delay_ms(120);

LCD_Write_COM(0x29);    //Display on
LCD_Write_COM(0x2c);
_delay_ms(10);

}

void SPILibrary::SPI_init()
{
    /* Set MISO output, all others input */
    //SS als output
    DDRB |= (1<<PB0);
    //CS auf high
    PORTB |= (1<<PB0);


    //SCK output
    DDRB |= (1<<PB1);
    //MOSI output
    DDRF |= (1<<PF0);
    //MISO input
    //DDRF &=~ (1<<PF1);
    // speed
    SPCR |= (1<<SPE) | (1<<MSTR);
    SPCR &=~ ((1<<SPR0)|(1<<SPR1));
    SPSR |= (1<<SPI2X);

    /* Enable SPI */
    //SPCR |= (1<<SPE);
}
uint8_t SPILibrary::SPI_transfer(uint8_t cData)
{
  /* Wait for reception complete */
  while(!(SPSR & (1<<SPIF)));
  /* Return data register */
  return SPDR;
}

SPILibrary SPI;

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.