Hallo zusammen Ich möchte mit dem RPI2 per SPI mit einem STM32 kommunizieren. Für den Anfang habe ich mir überlegt, testweise den LIS3DSH Sensor auf dem STM32 Discovery Board auszulesen, später sollte dann der STM32 als Slave dienen. Nun die Frage: was brauche ich alles auf dem RPI damit ich mit SPI kommunizieren kann ? Die Software auf dem RPI wollte ich mit dem QT Creator programmieren. Ich habe schon gegoogelt, aber da gibt es relativ viele Varianten, dass ich langsam den überblick verloren haben.
>Ich möchte mit dem RPI2 per SPI mit einem STM32 kommunizieren.
Ich würde den per UART anschliessen.
Super bestens ! Also mit dem wiringpi funtkioniert auf jedenfall mal das einfache schreiben auf einen gpio. nun zurück zum spi und dem stm32 discovery board. habe noch ein kleines problem: und zwar sind die pegel am RPI 3.3V und am discovery 3V :-( gemäss datenblatt vom LIS3DSH dürfen die signale max 0.3V grösser als VDD_IO sein. Was kann ich da machen ? einfach einen wiederstand dazwischen, oder muss da wirklich ein pegelwandler dran ?
Also das Problem mit den Pegeln hat sich erledigt. Mit der wiringPI lib kann ich jedoch den SPI port am Raspberry nicht initialisieren. Bei wiringPiSPISetup(0,1000000) kommt immer der Fehler: /home/pi/test/mainwindow.cpp:-1: error: undefined reference to `wiringPiSPISetup' :-1: error: collect2: ld returned 1 exit status Was mache ich genau falsch ? Hier der Code von mainwindow.cpp: #include "mainwindow.h" #include "ui_mainwindow.h" #include "wiringPiSPI.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { int a; a = wiringPiSPISetup(0,1000000); ui->lineEdit->setText("SPI Setup"); }
alles klar du meinst also so wie hier: http://wiringpi.com/examples/gertboard-and-wiringpi/blink/ aber wie mache ich das mit dem QT Creator ?
Have a look at how Guzunty PI accesses the spi (fast) https://github.com/Guzunty/Pi/ Spi user lib : https://github.com/Guzunty/Pi/tree/master/src/gzlib Spi test program & makefile : https://github.com/Guzunty/Pi/tree/master/src/gz_16o8i /Bingo
irgendetwas passiert, jedoch nicht das richtige. Vom sensor LIS3DSH möchte ich das inforegister auslesen (0x0D), ich sollte dann den wert 0x21 zurückbekommen, es kommt jedoch immer 0xFF, was mach ich falsch ? Hier mal der Code: int a; int b; quint8 buff[10]; QString txt; a = wiringPiSPISetupMode(0,1000000,0); txt = "Setup: "+QString::number(a)+"\n"; buff[0]=0x8D; a = wiringPiSPIDataRW (0,buff,1) ; txt += "RW: "+QString::number(a)+"\n"; for(b=0;b<10;b++){ txt += QString::number(buff[b])+"\n"; } ui->textEdit->setText(txt);
habe den fehler bereits gefunden :-) SPI Mode = 1 das empfangene byte steht natürlich in zweiten byte: buff[1] und nicht in buff[0] besten dank für eure hilfe
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.