Forum: Mikrocontroller und Digitale Elektronik Probleme mit SPI MISO am XMEGA


von Michael (Gast)


Lesenswert?

Hallo Leute,

momentan verstehe ich die Welt nicht mehr. Ein einfacher SPI Bus macht 
mir so viel Probleme. Ich verwende einen Atmel XMEGA128A3U als 
Mikrocontroller. Am SPI Bus D hängt nur ein einziger Soudchip von 
Nuvoton.

Ich habe ein kleines Testprogramm geschrieben, das per SPI Daten in den 
Soundchip schreib. Dies habe ich auch bereits mit einem Oscilloscope 
getestet und die CS, SCLK und MOSI Leitung sich auch alle richtig 
beschaltet.

Nur die MISO Leitung macht mir Probleme. Der Pegel liegt bei 2,8V und 
beim 1. Bit sogar bei 2,5V. Eigentlich müssten aus dem IC 3,3V Pegel 
kommen. Der Mikrocontroller ist direkt an den Nuvoton Soundchip 
angeschlossen so das nichts das MISO Signal beeinflussen sollte.

Ich habe auch schon mehrfach die SPI Konfiguration geprüft. Der MISO-Pin 
ist auf Eingang gestellt.

Hier ist mein Code zur Initialisierung:

// SPID initialization
void spid_init(void)
{
  // SPID is enabled
  // SPI mode: 3
  // Operating as: Master
  // Data order: MSB First
  // SCK clock prescaler: 16
  // SCK clock doubled: Off
  // SCK clock frequency: 2000,000 kHz
  SPID.CTRL=SPI_ENABLE_bm | SPI_MODE_3_gc | (1<<SPI_MASTER_bp) | 
(0<<SPI_DORD_bp) | SPI_PRESCALER_DIV16_gc | (0<<SPI_CLK2X_bp);

  // SPID interrupt: Disabled
  SPID.INTCTRL=SPI_INTLVL_OFF_gc;
}

Hier die Port Initialisierung:

// PORTD initialization
// OUT register
PORTD.OUT=0x10;

// Pin0: Input
// Pin1: Input
// Pin2: Input
// Pin3: Input
// Pin4: Output
// Pin5: Output
// Pin6: Input
// Pin7: Output
PORTD.DIR=0xB0;

// Pin6 Output/Pull configuration: Totempole/No
// Pin6 Input/Sense configuration: Sense both edges
// Pin6 Inverted: Off
// Pin6 Slew Rate Limitation: Off
PORTD.PIN6CTRL=PORT_OPC_TOTEM_gc | PORT_ISC_BOTHEDGES_gc;


Was mache ich falsch?

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

So ich habe jetzt noch mal 2 Screenshots zur Verfügung gestellt. Das 1. 
Bild zeigt die CS, SCLK und MOSI Signale. Beim 2. Bild wurde das MOSI 
Signal durch das MISO Signal ersetzt.

Wie man sieht ist die Flankensteilheit nicht besonders gut obwohl 16MHz 
Clock Frequenz möglich sein sollen.

Außerdem ist bei 1. Bit so ein Einbruch zu erkennen.

Das System ist nach dem SPI-Mode 3 initialisiert.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Michael schrieb:
> Was mache ich falsch?

 Frage vergessen - Pegel ist uninteressant wenn alles funktioniert.
 Funktioniert das Ganze nun, oder nicht ?
 Was hast du gesendet, erwartest du Antwort, wenn ja, wie sollte
 die Antwort aussehen ?

Michael schrieb:
> Außerdem ist bei 1. Bit so ein Einbruch zu erkennen.

 Wo ?

von Oliver L. (olubritz)


Lesenswert?

Also die Initialisierung der Pins und des SPI sehen gut aus.
Da es sich bei MISO um einen Eingang handelt könnte das Problem auch bei 
deinem Soundchip liegen. Liegt Vcc am Soundchip an? Kannst du irgendwie 
testen, ob dieser auch eingeschaltet ist oder ob dieser funktioniert?
Ansonsten mal andere Daten an den Soundchip senden und sehen ob das 
Verhalten so bleibt.

Olli

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.