Forum: Mikrocontroller und Digitale Elektronik Cortex M0/M4 SPI nach CMSIS ?


von Rene F. (fook)


Angehängte Dateien:

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?

von Jürgen S. (starblue) Benutzerseite


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

von temp (Gast)


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.

von Rene F. (fook)


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

von Sascha (Gast)


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

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
Noch kein Account? Hier anmelden.