Cortex M0/M4 SPI nach CMSIS ?

OP #3225044
Lesenswert?

Hallo,

ich versuche verzweifelt, die SPI-Schnittstelle meines LPC4353 (LPC435x) 
zum Laufen zu bringen - wohlgemerkt: die "echte SPI-Schnittstelle", 
nicht per SSP!
Als Basis nutze ich z.Zt. die CMSISv2p10_LPC43xx von NXP.
dort existiert aber leider keine Definition bzw. keine Funktionen zum 
SPI ansich (also keine lpc43xx_spi.c oder lpc43xx_spi.h  :-( )

Also habe ich eine ähnliche Lib vom lpc18xx genommen und teilweise auf 
den 43xx angepasst (Anhang lpc43xx_spi.c / lpc43xx_spi.h). Anpassen 
musste ich ebenfalls die CGU-Implementierung, da dort der SPI-teil ganz 
und gar gefehlt hat, obwohl die passenden Adressen/Register im 
Datenblatt beschrieben sind - habs im Code mit dem Hinweis auf 
UM10503.pdf vermerkt...
(Anhang: lpc43xx_cgu.c / lpc43xx_cgu.h)

Vielleicht könnt ihr etwas damit anfangen, wenn meine Frage noch geklärt 
sein wird...

Mein Problem ist nun die Taktversorgung in der Initialisierung, da ich 
einfach nicht aus dem Datenblatt (UM10503.pdf) schlau werde und auch 
sonst wenig zur "echten" SPI gefunden habe.

(aus lpc43xx_spi.c - SPI_Init)
1
  CGU_EntityConnect(CGU_CLKSRC_XTAL_OSC, CGU_BASE_SPI);
2
  CGU_ConfigPWR(CGU_PERIPHERAL_SPI, ENABLE);

reicht das schon? oder müsste ich noch etwas anderes machen/die 
Reihenfolge tauschen?
Angehängte Dateien:
Persönliche Seite #3225197
Lesenswert?

Ich nehme CMSIS nur für die Core-Funktionalität, hauptsächlich NVIC.

Für den Rest gehe ich direkt auf die Register, die sind wenigstens 
einigermaßen gescheit dokumentiert.

CMSIS wird wohl auch von NXP nicht mehr weitergepflegt, die neue 
Baustelle heißt LPCOpen:

http://www.lpcware.com/content/forum/lpcware-cmsis-driver-development-now-dead-it-seems-all-development-work-lpcopen
Gast #3225201
Lesenswert?

Jürgen S. schrieb:
> CMSIS wird wohl auch von NXP nicht mehr weitergepflegt, die neue
> Baustelle heißt LPCOpen:
>

Ich sehe das genauso. Und wenn ich die Entwicklung verfolge, freue ich 
mich nichts verkehrt gemacht zu haben. Die Libs ändern sich ständig, die 
Register bleiben. Und es bleibt noch Platz in der Rübe für sinnvollere 
Dinge.
OP #3225236
Lesenswert?

hmm.. okay.. löst nicht wirklich mein Problem..

habt ihr denn dann vielleicht ein Beispiel für die Initialisierung des 
SPI am LPC43xx ohne Lib parat ? Im LPC_Open habe ich zwar auch Beispiele 
gefunden, allerdings NUR über die SSP - etwas was ich nicht gern möchte.

danke schonmal
Gast #3225363
Lesenswert?

Hallo,
also die CMSIS Geschichte kann ja mehr Probleme schaffen, als einem lieb 
ist.
Wenn man nur einmal die Verschachtelungen der Definitionen, die sich 
über mehrere Dateien verteilen ansieht, wird es sehr schwierig ein 
solches Projekt zu pflegen. Und dann will man ja gerade eine 
Schnittstelle auch so nutzen, wie sie der Hersteller mit ihren 
Eigenarten erschaffen hat. Also sage ich auch, ganz klar auf 
Registerebene gehen und gut dokumentieren.

PS. das Rad muss halt ständig neu erfunden werden.
Gruß Sascha

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