Ich habe versucht, etwas von meinem AVR Code zu portieren, um ein einfaches SPI LCD zu ARM als eine Lernübung zu fahren (ich bin sehr neu zu ARM im Allgemeinen). Dazu muss ich nur SPI im Master-Modus verwenden.STM32F1 - Verwendung von Master SPI auf Bare Metal
Ich sah in der datasheet für mein Gerät (STM32F103C8) und festgestellt, dass die SPI1 Pins, die ich brauche, SCK und MOSI sind als alternative Funktionen von PA5 und PA7 bzw. zusammen mit anderen Peripheriegeräten zugeordnet (S. 29). Mein Verständnis ist, dass, um die SPI-Funktion auf diesen Pins zu verwenden, ich sicherstellen muss, dass alles andere auf den gleichen Pin zugeordnet deaktiviert ist. Wenn man jedoch die Voreinstellungen für das periphere Taktsteuerregister betrachtet, sieht es so aus, als ob die anderen Merkmale bereits deaktiviert sind.
Ich schaute auf die SPI-Abschnitt in der reference manual, einschließlich Abschnitt 25.3.3 - Konfigurieren der SPI im Master-Modus. Zuerst habe ich die SP1-Master-Uhr in APB2ENR aktiviert und die Schritte in diesem Abschnitt befolgt, um SPI1 nach meinen Bedürfnissen zu konfigurieren. Ich habe auch die Einstellungen für PA5/7 geändert, um ihren Modus auf "Alternate Function Output Push-Pull" (9.1.4) zu setzen. Schließlich habe ich SPI1 aktiviert, indem ich CR1_SPE gesetzt habe.
Von meinem Lesen hatte ich gedacht, dass durch das Laden eines Wertes in das SPI1-Datenregister nach der Konfiguration von SPI wie oben, die Daten herausgeschoben werden würden. Nach dem Schreiben der Daten wird das TXE-Flag im SPI-Statusregister jedoch nie gesetzt, was darauf hinweist, dass die Daten, die ich in das SPI-Statusregister geschrieben habe, nur dort abgelegt wurden.
An dieser Stelle nehme ich an, dass es etwas anderes gibt, das ich nicht richtig konfigurieren konnte. Zum Beispiel bin ich mir nicht 100% sicher, was ich mit den PA5/7-Pins machen soll. Ich habe versucht, aus den Datenblättern zu verstehen, was ich kann, aber ich komme nirgendwohin. Gibt es noch etwas, das getan werden muss, bevor es funktioniert?
Ich glaube nicht, dass die SPI versucht, die Daten zu übertragen, wenn die Pins falsch konfiguriert sind. Es würde nirgendwohin gehen, aber das Peripheriegerät würde es immer noch tun. Ich würde vorschlagen, dass das Peripheriegerät falsch konfiguriert ist. Hast du die Uhr auf dem SPI aktiviert? Hast du den SPI aktiviert? –
posten Sie Ihren Code, sonst können wir nur raten ... –