ILI9341 Spannungsregelung

Gast #4471184
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
#4471192
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?
Gast #4471206
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
#4471211
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?
Gast #4471221
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
Gast #4471264
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;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren