Hallo NG,
kann mir bitte jemand sage, der schon mal SPI auf dem AT91SAM7S
verwendet hat, ob die SPI-Initialisierung so passt (Die Pins vom
SD-Kartenleser sollen zugewiesen werden)? Oder habe ich noch was
vergessen?
Vielen Dank!
Peter
init_spi:
// verwendete Register auf Stack legen
PUSH {r0, r1}
// Basisadresse setzen
LDR r0, =PIO_BASE
// den entsprechenden PINS die Funktion zuweisen
LDR r1, =BIT11 | BIT12 | BIT13 | BIT14
STR r1, [r0, #PIO_PDR]
STR r1, [r0, #PIO_ASR]
LDR r1, =0
STR r1, [r0, #PIO_BSR]
// Basisadresse setzen
LDR r0, =PIO_BASE
// enable SPI-Clock (ID=5)
LDR r1, =1 << 5
STR r1, [r0, #PMC_PCER]
// Basisadresse setzen
LDR r0, =SPI_BASE
// SPI-MODE: fixed
LDR r1, =0x81; // SPI Enable, Software Reset
STR r1, [r0, #SPI_CR]
LDR r1, =0x01; // SPI Enable
STR r1, [r0, #SPI_CR]
LDR r1, =0xE0011; // Master Mode, Fixed Select
STR r1, [r0, #SPI_MR]
LDR r1, =0x4A02; // 8bit, CPOL: 0, ClockPhase: 1,
STR r1, [r0, #SPI_CSR0] // SCLK: 200kHz
// Basisadresse setzen
LDR r0, =PDC_BASE
LDR r1, =AT91C_PDC_TXTEN | AT91C_PDC_RXTEN
STR r1, [r0, #PDC_PTCR]
// Basisadresse setzen
LDR r0, =SPI_BASE
STR r1, [r0, #SPI_PTCR]
// urspruengliche Register vom Stack holen
POP {r0, r1}
// Zurueck aus Subroutine
MOV pc, r14
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.