SPI mit Raspberry Pi2

OP #4078162
Lesenswert?
• ▲
▼
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.
OP #4079041
Lesenswert?
• ▲
▼
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 ?
OP #4079914
Lesenswert?
• ▲
▼
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");

}
OP #4080830
Lesenswert?
• ▲
▼
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);

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.