UC3C SPI UNDES trotz master

Gast #3013234
Lesenswert?

Hallo,

ich verzweifle langsam bei dem Versuch den SPI meines AT32UC3C0512C als 
Master zum Laufen zu bekommen.

Ich verwende die Pins PB10-PB13 in ihre Peripheral function B:
spi_port->pmr2c = (1 << (AVR32_PIN_PB10 & 0x1F));
spi_port->pmr1c = (1 << (AVR32_PIN_PB10 & 0x1F));
spi_port->pmr0s = (1 << (AVR32_PIN_PB10 & 0x1F));
spi_port->gperc = (1 << (AVR32_PIN_PB10 & 0x1F));

und initialisiere den SPI0 als Master exakt so wie es der SPI Master 
driver des ASF es vorgibt:

//Reset SPI0
AVR32_SPI0.cr = AVR32_SPI_CR_SWRST_MASK;
//Set Master-Mote of SPI0
AVR32_SPI0.MR.mstr = 1;
//Disable Modfault of SPI0
AVR32_SPI0.MR.modfdis = 1;
//Disable Loopback
AVR32_SPI0.MR.llb = 0;
//Set Chip Select of SPI0
AVR32_SPI0.MR.pcs = 0b1111;
//Disable Variable Chip Select of SPI0
AVR32_SPI0.MR.ps = 0;
//Disable Chip Select Decoding of SPI0
AVR32_SPI0.MR.pcsdec = 0;
//Set Chip Select Delay of SPI0
AVR32_SPI0.MR.dlybcs = 0;
//Set Transfer-Delay of SPI0->NPCS0
AVR32_SPI0.CSR0.dlybct = 0;
//Set SPCK-Delay of SPI0->NPCS0
AVR32_SPI0.CSR0.dlybs = 0;
//Set 8Bit-Transfer of SPI0->NPCS0
AVR32_SPI0.CSR0.bits = 0;
//Set Serial Clock Baud Rate of SPI0->NPCS0
AVR32_SPI0.CSR0.scbr = 0b110;
//Set Active After Transfer of SPI0->NPCS0
AVR32_SPI0.CSR0.csaat = 1;
//Set SPI-Mode of SPI0->NPCS0
AVR32_SPI0.CSR0.cpol = 0;
AVR32_SPI0.CSR0.ncpha = 1;
//Enable SPI0
AVR32_SPI0.cr = AVR32_SPI_CR_SPIEN_MASK;

Auch der PBC treibt das SPI0 Modul korrekt an da das Statusregister 
werte enthält.

Jedoch leider die falschen.
Direkt nach der Aktivierung enthält das Statusregister des SPI0 
folgenden wert:
0x10202 ->
1 in SPIENS (SPI Enable Status)
1 in UNDES (Underrun Error Status (Slave Mode Only))
1 in TDRE (Transmit Data Register Empty)

Ich verstehe nicht weshalb UNDES gesetzt ist obwohl der SPI0 sich 
nachweislich im Master Mode befindet.
Selbstverständlich verweigert das Modul jegliche Kommunikation.

Ich gucke nun schon seit na Stunde auf den Code und finde den Fehler 
nicht.

Hat jemand eine Vorahnung woran es liegen könnte und was ich noch prüfen 
könnte?

Gruß Denis

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