Raspberry Pi 3B über SPI Schnittstelle
Verfasst: Mittwoch 7. August 2019, 13:07
Hallo zusammen,
ich versuche mit meinem Raspby 3B ein Evaluation Board über die SPI Schnittstelle zu steuern. Die Bits möchte ich selbst einlesen. Ich habe das mit folgendem Beispiel versucht und möchte dieses Programm etwas abändern auf mein Board:
https://gist.github.com/m0xpd/4578261
ich habe dies folgendermaßen abgeändert:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
# Define GPIO pins, s. S.9 Data Sheet
SCLK = 23 # M6
SDO = 21 # M4
SDIO = 29 # M5
CSB = 24 # M3
GPIO.setup(SCLK, GPIO.OUT) # Serial Clock Input
GPIO.setup(SDO, GPIO.IN) # Serial Data Output
GPIO.setup(SDIO, GPIO.OUT) # Serial Data Input and Output
GPIO.setup(CSB, GPIO.OUT) # Chip Select Input
GPIO.output(SCLK, False) # initialize everything to zero...
GPIO.output(SDIO, False)
GPIO.output(CSB, False)
GPIO.input(SDO, False)
pulseHigh(CSB) # start-up sequence to see measurements (except DATA or SDIO)
pulseHigh(SCLK)
pulseHigh(SDO)
def pulseHigh(pin): # Function to send a pulse
GPIO.output(pin, True) # do it a few times to increase pulse width
GPIO.output(pin, True)
GPIO.output(pin, True)
GPIO.output(pin, False) # end of the pulse
return
# Funktion zur Übermittlung der Anweisungen
def tfr_byte(data): # Function to send a byte by serial "bit-banging"
GPIO.output(CSB,false) # Pull the CSB low to enable the SPI port
for i in range (0,24): # clock in the 16 preceding address bits
GPIO.output(SDIO, data & 0x80) # Mask out MSB and put on GPIO pin "SDIO"
pulseHigh(SCLK) # pulse the clock line
data=data<<1 # Rotate left to get next bit
GPIO.output(CSB,true) # Pull the CSB high to disable the SPI port, CSB goes high, serial data is loaded into the register
return
Anbei habe ich das Datenblatt von den Signalen, die ich erreichen möchte.
Meine Frage nun: Wie würdet ihr CSB einbauen? und generell Read and Write? Ich weiß nicht genau, wie ich zb Anweisungen wie 0x180064 übermitteln soll....
Dies ist das Datenblatt: https://www.analog.com/media/e…/data-sh ... AR1000.pdf
ich versuche mit meinem Raspby 3B ein Evaluation Board über die SPI Schnittstelle zu steuern. Die Bits möchte ich selbst einlesen. Ich habe das mit folgendem Beispiel versucht und möchte dieses Programm etwas abändern auf mein Board:
https://gist.github.com/m0xpd/4578261
ich habe dies folgendermaßen abgeändert:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
# Define GPIO pins, s. S.9 Data Sheet
SCLK = 23 # M6
SDO = 21 # M4
SDIO = 29 # M5
CSB = 24 # M3
GPIO.setup(SCLK, GPIO.OUT) # Serial Clock Input
GPIO.setup(SDO, GPIO.IN) # Serial Data Output
GPIO.setup(SDIO, GPIO.OUT) # Serial Data Input and Output
GPIO.setup(CSB, GPIO.OUT) # Chip Select Input
GPIO.output(SCLK, False) # initialize everything to zero...
GPIO.output(SDIO, False)
GPIO.output(CSB, False)
GPIO.input(SDO, False)
pulseHigh(CSB) # start-up sequence to see measurements (except DATA or SDIO)
pulseHigh(SCLK)
pulseHigh(SDO)
def pulseHigh(pin): # Function to send a pulse
GPIO.output(pin, True) # do it a few times to increase pulse width
GPIO.output(pin, True)
GPIO.output(pin, True)
GPIO.output(pin, False) # end of the pulse
return
# Funktion zur Übermittlung der Anweisungen
def tfr_byte(data): # Function to send a byte by serial "bit-banging"
GPIO.output(CSB,false) # Pull the CSB low to enable the SPI port
for i in range (0,24): # clock in the 16 preceding address bits
GPIO.output(SDIO, data & 0x80) # Mask out MSB and put on GPIO pin "SDIO"
pulseHigh(SCLK) # pulse the clock line
data=data<<1 # Rotate left to get next bit
GPIO.output(CSB,true) # Pull the CSB high to disable the SPI port, CSB goes high, serial data is loaded into the register
return
Anbei habe ich das Datenblatt von den Signalen, die ich erreichen möchte.
Meine Frage nun: Wie würdet ihr CSB einbauen? und generell Read and Write? Ich weiß nicht genau, wie ich zb Anweisungen wie 0x180064 übermitteln soll....
Dies ist das Datenblatt: https://www.analog.com/media/e…/data-sh ... AR1000.pdf