Hallo Arduino Kenner, ich benutze die Arduino IDE mit die STM32 Core Erweiterung von ST und HAL Unterstützung. Wenn es an das interne von STM32 und Arduino geht, hören die Informationen sehr schnell auf. Der Arduino Teil stammt dabei anscheinend nicht von ST und ist veraltet oder nicht beschrieben . Andere Möglichkeiten wie die STM32duino von Clark passen nicht zusammen. Ich suche Arduino STM32 Core Kenner die mir helfen können. Mein Ziel ist, bei einen BluePill, die SPI 2 Schnittstelle als Master mit Arduino zu benutzen und später ein Display anzuschließen. Wer hat da Erfahrung? Ein funktionierendes STM32 Arduino SPI 2 Beispiel wäre super Mein Beispiel bekomme ich nicht zum laufen: // BluePill #include <SPI.h> // Pin Belegung originaler SPI-2 BUS #define SS_2_PIN 28 #define SCK_2_PIN 29 #define MISO_2_PIN 30 #define MOSI_2_PIN 31 byte my_SSEL; byte my_SCLK; byte my_MOSI; byte my_MISO; void SPI_2_MasterInit(void) { // Set MISO input, all others output pinMode(SCK_2_PIN, OUTPUT); pinMode(MOSI_2_PIN, OUTPUT); pinMode(MISO_2_PIN, INPUT); pinMode(SS_2_PIN, OUTPUT); my_SCLK = SCK_2_PIN; my_MOSI = MOSI_2_PIN; my_MISO = MISO_2_PIN; my_SSEL = SS_2_PIN; } void SPI_Init() { SPI_2_MasterInit(); SPI.setSCLK (my_SCLK); SPI.setMOSI (my_MOSI); SPI.setMISO (my_MISO); SPI.setSSEL (my_SSEL); } void setup() { SPI_Init(); SPI.begin(); // Aktiviere den SPI Port. SPI.setClockDivider (SPI_CLOCK_DIV16); // Niedrige Geschwindigkeit (72 / 16 = 4,5 Mhz SPI Geschwindigkeit) } void loop() { byte RX_Data; digitalWrite(my_SSEL, LOW); // CS ein SPI.transfer(0x55); // Sende HEX data 0x55 mit den SPI_2 Port und speichere // das empfangene Byte in die Variable <RX_Data> RX_Data = SPI.transfer(0); delay(1000); // 10 ms Verzögerung digitalWrite(my_SSEL, HIGH); // CS aus delay(1000); }
Hast du dein Beispiel schon mit der SPI-1 erfolgreich ausprobiert?
Roger Clark Version: Datei/Beispiele/SPI/using_SPI_ports https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries/SPI/examples/using_SPI_ports
1 | SPIClass SPI_2(2); //Create an instance of the SPI Class called SPI_2 that uses the 2nd SPI Port |
Der STM core macht das anders, da muss man die Signale mosi,miso,clk,ssel im Konstruktor angeben. https://github.com/stm32duino/Arduino_Core_STM32/tree/master/libraries/SPI
ich habe mich mit 3 Dateien beschäftigt. Erstens habe ich ein Programm geschrieben mit den ich beim BluePill mit dem Arduino etwas über die beiden SPI Schnittstellen senden Kann. SPI_2 hat mit PB13 und PB15 kein sauberes Signal. Mit dem nächsten Programm kann ich auf den SPI_1 Pins eine Software SPI benutzen. Diese steuert ein 1.8" ST7735 Display an. Das funktioniert. Das selbige Programm aber mit Hardware SPI_1 funktioniert nicht. Leider kann ich die gesendeten Daten nicht analysieren und damit nicht feststellen, was da falsch läuft. Nette Grüße Siegfried
Und warum kannst Du die gesendeten Daten nicht analysieren?
Andreas R. schrieb: > Und warum kannst Du die gesendeten Daten nicht analysieren? Weil ich kein entsprechendes Gerät habe ?
:
Bearbeitet durch User
keine 6€ übrig? https://www.ebay.de/itm/24MHz-8CH-USB-Logic-Analyzer-8-Channel-Logic-Analyzer-Compatible-to-Saleae/171202927182
Johannes S. schrieb: > keine 6€ übrig? > Ebay-Artikel Nr. 171202927182 Das Gerät müsste man ja dann bedienen ....
> Johannes S. schrieb: >> Ebay-Artikel Nr. 171202927182 Danke für diesen Tip. Dauert aber wohl 4 Wochen. Welche Software nimmt man da unter Linux? Nette Grüße Siegfried
aaa schrieb: > https://sigrok.org/ ja, oder man nimmt einen Originalen von Saleae. Die Software dazu läuft auf Windows, Mac und Linux. Original kostet natürlich mehr. Unter dem Stichwort 'saleae' findest du hier auch reichlich Diskussionen ob man die Original SW mit dem Clone nutzen darf. Aber sigrok hat wohl auch einen guten Stand erreicht. Der eBay Link war auch nur ein Beispiel, das Ding wird von vielen Anbietern geliefert und ist für ein paar Euro mehr auch aus deutschen Lagern mit kurzer Lieferzeit zu bekommen.
Johannes S. schrieb: > ist für ein paar Euro mehr auch aus deutschen > Lagern mit kurzer Lieferzeit zu bekommen. So hat alles Super geklappt. Die Installation auf Linux war nicht so einfach. Da gibt es irgendwie ein Bug mit den Treiber. Die Bedienung der Software ist sehr einfach. Auch für Anfänger geeignet, den es gibt gute Beschreibungen für Pulseview. Mein Problem konnte ich nicht lösen. Nach meiner Meinung liefert die Software- und Hardware SPI identische Daten. Das Problem konnte ich noch nicht finden. Vielleicht ist das Display auch nur Intelligent und hat kein Interesse an einer Hardware SPI. Als Anlage habe ich die beiden Diagramme als PulseView Dateien angehängt. Vielleicht hat ja einer Lust meine Aussage zu überprüfen. Der Fehler beginnt schon irgendwie gleich am Anfang. Ich werde mich jetzt erst einmal darum kümmern, warum auf SPI_2 ein Mischsignal auf ca. halber Betriebsspannung anliegt. Nette Grüße Siegfried
:
Bearbeitet durch User
Thread ist zwar schon etwas älter, aber vielleicht gibts noch Interesse - vom TE oder anderen. Ich hatte das selbe Problem, dass ich die WS2812 Lib von Roger an SPI_2 nutzten wollte und es erstmal nicht geht. Es ist ein Baudratenproblem. Habe auf dem Oszilloskop gesehen, dass die Pulslängen doppelt so lang sind. Habs noch nicht in den Unterlagen rausgewühlt, aber wahrscheinlich hängt der SPI_2 an der langsameren APB1 Clockdomain. Eigentlich hat Roger in seinen Zeilen auch Logik drin, die das abfängt - vielleicht klappt da was nicht... Das Referenzmanual beschreibt bei der SPI im Register CR1 die möglichen Baudsettings. Ich habe in Roger´s Files an verschiedenen stellen versucht ein zu greifen. Als ersten Griff hat es hardcoded funktioniert in SPI.c bei >spi_master_enable( >_currentSetting->spi_d, >>(spi_baud_rate)24/*_currentSetting->clockDivider*/, >(spi_mode)_currentSetting->dataMode, flags); Die 24 ist das 3 mal linksgeshiftete Muster für Fpsc = 16.
:
Bearbeitet durch User
Jasson J. schrieb: > Habs noch nicht in den Unterlagen rausgewühlt, aber wahrscheinlich hängt > der SPI_2 an der langsameren APB1 Clockdomain. So isses bei der STM32F1xx Serie. SPI1 wird von APB2 getaktet, aber SPI2 und 3 von APB1.
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.