Probleme mit SPI MISO am XMEGA

Gast #3769631
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?
Gast #3769643
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.
Angehängte Dateien:
#3769843
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

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