Guten Tag liebe Forenfreunde,
ich beschäftige mich gerade mit der SPI Schnittstelle des Raspberry Pi. Ich möchte von einem Mikrocontroller ( über einen ADC ) Werte zum Raspberry Pi schicken und sie dort auslesen. Dabei soll der Mikrocontroller als Master und der Pi als Slave fungieren. Jedoch habe ich bei allen Dokumentationen im Netz nur Beispiele zum Raspberry als Master gefunden. Ich habe schon einen kleinen Code geschrieben, wobei ich hier auch nicht weiß wie ich das Chip-Select unterbringen kann, da dieses ja nur vom Master gesendet werden kann (deshalb als input). Das ganze ist noch etwas Neuland für mich, also verzeiht etwaige banalen/dummen Kommentare meinerseits.
#Verschiedenen Module importieren
import time
import sys
import spidev
import RPi.GPIO as GPIO
# Chipselect Pin (Auch an GPIO25 später anschließen)
CS = 25
# Warnungen deaktivieren
GPIO.setwarnings(False)
# GPIO 25 als CS konfigurieren
GPIO.setmode(GPIO.BCM)
GPIO.setup(CS, GPIO.IN)
# SPI Device öffnen
spi = spidev.SpiDev()
spi.open(0, 0) #CE0
# Maximum Bus-Speed in Hz
spi.max_speed_hz = 1000000
# Erstellung einer Liste von 3 bytes
def buildReadCommand(channel):
startBit = 0x01
singleEnded = 0x08
return []
# Rückgabewert
def processAdcValue(result):
pass
# Bytes senden und Rückgabewert in r speichern
def readAdc(channel):
r = spi.xfer2(buildReadCommand(channel))
return processAdcValue(r)
# Rückgabewert in Datenbank eintragen
def datenbank(val):
xxx
xxx
# Hauptprogramm; Wert des ADC auslesen, in die Variable val als String schreiben, 5s warten und wieder ausführen. (Hier kommt auch die Datenbankfunktion rein)
try:
while True:
val = readAdc(0)
print "ADC Result: ", str(val)
time.sleep(5)
# Ein Tastendruck bricht die Messung ab
except KeyboardInterrupt:
spi.close()
sys.exit(0)
Alles anzeigen
Hier ist noch eine Datenbankfunktion drin aber die ergänze ich wenn ich weiter bin.
Ich hoffe ihr könnt mir weiterhelfen
Liebe Grüße
Neolinga