Как заставить SpiDev работать на Raspberry PI
Я новичок как в Python, так и в Raspberry Pi, поэтому ожидал, что мне потребуется время на обучение, но думаю, что с этим мне понадобится помощь. Raspberry Pi потребуется взаимодействовать с внешним оборудованием через SPI. Я включил SPI на Raspberry Pi и установил все необходимые библиотеки.
Вот код.
#test program for spi
import spidev
import RPi.GPIO as GPIO
from time import sleep
bus = 0 #always 0, apparently
device = 0 #we will use our own CS pin
mode = 3 #see SPI modes
maxSpeed = 100000 #maximum clock speed in Hz
noCs = True #hardware CS
lsbFirst = False #MSB first is default
##############################################################
CS_PIN = 24 #CS pin number
WRITE_DATA = [0x4D, 0x4D, 0x4D]
##############################################################
if __name__ == '__main__':
#config GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(CS_PIN, GPIO.OUT)
GPIO.setwarnings(False)
GPIO.output(CS_PIN, True)
#config SPI
spi = spidev.SpiDev()
spi.open(bus, device)
spi.mode = mode
spi.no_cs = noCs
spi.lsbfirst = lsbFirst
spi.max_speed_hz = maxSpeed
#run SPI
GPIO.output(CS_PIN, False)
spi.xfer(WRITE_DATA)
GPIO.output(CS_PIN, True)
sleep(0.1)
#print data
'''
listLen = len(readbytes)
print("Lenght: ", listLen)
i = 0
while i < listLen:
print("Byte ", i, ": ", readbytes[i])
i += 1
'''
GPIO.cleanup()
Написанная мной программа не работала, поэтому я написал простую тестовую программу (код выше). Мне удалось посмотреть сигналы SPI с помощью осциллографа. Я ничего не увидел на MOSI, поэтому проверил SCK, и он тоже не колеблется.
Чтобы наблюдать эти сигналы, я установил триггер по заднему фронту на уровне около 2 В. Оба сигнала высокие. Я вижу, как сигнал CS становится низким, а затем высоким, но он контролируется с помощью GPIO.
Код SpiDev должен быть простым в использовании, но с этим я не в курсе.