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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.