TSC2046 und xMega SPI Problem

OP #3899951
Lesenswert?

Hallo

Ich bin jetzt schon seit Stunden an diesem Problem und finde keine 
Lösung. Vielleicht weiss ja jemand von euch weiter. :D

Ich verwende ein Touchscreen mit dem Controller TSC2046. Der Contorller 
wird per SPI angesteuert. Der CS, MOSI und CLK funktionieren. Es kommen 
jedoch keine Daten zurück. Siehe KO-Bild.

Mein Port ist wie folgt initialisiert:
1
  PORTD.DIR=0xBB;  // D_In & T_ISQ = Input
2

3
  void init_spi(void)
4
  {
5
  SPID.CTRL = SPI_ENABLE_bm |SPI_MASTER_bm | SPI_MODE_gm| SPI_PRESCALER_gm;      // Master, Setup Falling sample Rising, Prescaler = 128
6
  SPID.STATUS = 0;
7
//  SPID.INTCTRL = SPI_INTLVL_MED_gc;
8
}

Der Chip select wird anfänglich auf high gesetzt.

LG
Jérôme
Angehängte Dateien:
Gast #3899970
Lesenswert?

Hallo

MISO sieht so aus als würde er gar nicht angesteuert werden, also 
floaten.
Trick: Beim Messen auch den Finger an die Oszi-Spitze halten und sehen 
ob signifikant Störungen eingekoppelt werden.

Ist das der Fall ist entweder MISO nicht richtig angeschlossen, das 
ChipSelect erreicht den TouchController-Chip nie oder die CS Polarirät 
ist falsch.

da1l6
#3900105
Lesenswert?

Hallo,

wenn du die Reihenfolg beachtest, sollte
es funktionieren: Bei mir SPIE!



#define TS_SPI_DDR  PORTE_DIR
#define TS_SPI_PORT PORTE_OUT
#define TS_SPI_PIN  PORTE_IN


#define TS_MOSI_BIT  5
#define TS_MISO_BIT  6
#define TS_SCK_BIT  7

#define TS_CS_DDR  PORTE_DIR
#define TS_CS_PORT PORTE_OUT
#define TS_CS_PIN  PORTE_IN
#define TS_CS_BIT 4


TS_CS_PORT |= (1<<TS_CS_BIT);  // Disable CS
TS_CS_DDR |= (1<<TS_CS_BIT);  // CS pin as Output



TS_SPI_DDR |= (1<<TS_SCK_BIT)|(1<<TS_MOSI_BIT) | (1<<TS_CS_BIT); 
//output
TS_SPI_DDR &= ~ (1<<TS_MISO_BIT); //  SS is input



//SPIE.CTRL =  SPI_MODE_0_gc | SPI_PRESCALER_DIV16_gc | (1<< 
SPI_CLK2X_bp) | (1<< SPI_ENABLE_bp) | (1<< SPI_MASTER_bp); // 4Mhz




Gruß G.G.

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