Hallo, ich möchte gerne einen SPI Slave auf meinem STM32 implementieren, allerdings ohne die HAL-Library. Allerdings habe ich hierfür keine Implementationen im Netz gefunden, die es ja aber sicher geben muss... Könnt Ihr mir da vielleicht weiterhelfen? Vielen Dank im Voraus!
hmm also nicht selber schreiben, aber die HAL auch nicht verwenden wollen? Warum den nicht selber schreiben? So ein Treiberlein steht ja schnell mal...
Lies zuerst einmal das Kapitel zum SPI im Referenz manual durch, dann solltest du das selber schaffen (wenn konkrete Fragen auftreten kannst du ja hier nochmal fragen). SPI ist nicht sehr schwierig, besonders wenn man es Schritt für Schritt macht, also am Anfang mit polling beginnt, nachher erst auf interrupt umbaut. Wenn du es selber machst, statt aus dem Internet zu kopieren, lernst du auch viel mehr, wenn du nichts lernen willst, kannst du auch gleich HAL verwenden.
Oz z. schrieb: > ich möchte gerne einen SPI Slave auf meinem STM32 implementieren Ganz normale SPI Master Vorlage verwenden und an wenigen Stellen (zwei, drei?) die Init-Parameter auf Slave umstellen. Und dann, wie Alex schon schrub: Alex D. schrieb: > also am Anfang mit polling beginnt, > nachher erst auf interrupt umbaut.
Moin, danke erst einmal für Eure Antworten; ich kann Eure Meinung auch teilweise nachvollziehen, allerdings bin ich auch der Meinung, dass man das Rad zum einen nicht immer wieder aufs Neue erfinden muss, und zweitens auch die Frage ist, auf welcher „Flughöhe“ man sich befindet/befinden möchte. Häufig sind solche Treiber nur Mittel zum Zweck, um die höheren Schichten (Algorithmen) verwenden zu können.
Oz z. schrieb: > allerdings bin ich auch der Meinung, dass man > das Rad zum einen nicht immer wieder aufs Neue erfinden muss Dann musst du halt solange warten bis dir jemand den Slave schreibt und dir mundgerecht wie eine gebratene Taube in den Mund fallen lässt.
Oz z. schrieb: > Häufig sind solche Treiber nur Mittel zum > Zweck, um die höheren Schichten (Algorithmen) verwenden zu können. Codierte Verweigerungshaltung.... Häufig steckt hinter solchen Aussagen nur der Umstand "ich bin zu faul mir so etwas selbst zu schreiben, zehn Zeilen Code sind mir zuviel" oder "ich bin einfach zu blöd mir das schnell selbst hinzuschreiben".
"Ohne HAL" bedeutet ja wohl nicht dass eine andere Lib zum Einsatz kommen darf... https://github.com/libopencm3/libopencm3-examples
@Erklehr Behr: nein, das heißt es nicht! Aber ich denke, wir sind uns einig, dass man guten, sauberen Code nicht einmal so schnell herunter schreibt! Und ich habe auch keine Lust, hier eine Grundsatzdiskussion vom Zaun zu brechen. @Frank: vielen Dank für Deinen Link, das sehe ich mir gerne einmal an!
Meine Erfahrung ist, dass man beim selbst schreiben sehr leicht schwer zu debuggende Fehler macht, z.B. irgendein Flag vergessen oder so. Vorhandenen Beispiel-Code ist da durchaus hilfreich, und sei es nur als Checkliste, welche Register/Flags man braucht (und in welcher Reihenfolge). Runterschreiben nach Reference Manual ist auch leichter gesagt als getan, weil da so extrem viele obskure Features beschrieben sind und man einige Zeit braucht zu verstehen, welches Subset der Funktionalität man nun wirklich braucht und wie man das korrekt ansteuert. Da kann es sehr hilfreich sein, wenn man zu Beginn einen funktionierenden Beispiel-code hat. Dann kann man im Reference Manual gezielt mit den Registern anfangen, die auch im Beispiel verwendet werden und so relativ schnell die Grundfunktionalität der Hardware verstehen und einen eigenen Treiber schreiben. Und noch ein praktischer Tip: Die Code-Suche bei Github kann sehr hilfreich sein (geht allerdings nur wenn man eingeloggt ist). Einfach mal nach ein paar relevanten Registernamen suchen und mit etwas Glück findet man ein Projekt, das die entsprechende Hardware verwendet und einen eigenen Treiber enthält.
Oz z. schrieb: > dass man guten, sauberen Code nicht einmal so schnell herunter > schreibt! Und auch nicht für lau findet. Im Web darf jeder was schreiben. Welchen Erfahrungsstand er hat, sieht man nicht. Z. B. das Web strotzt nur so vor schlechten Entprellversuchen. Wenn man eine professionelle Compilerlizenz kauft, hat man oft auch Zugriff auf solide Beispiele und Support.
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.