Gast
#3769631
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?

