klasa SPI – serijski protokol kojim upravlja kontroler¶
SPI je sinkroni serijski protokol kojim upravlja kontroler. Na fizičkoj razini koristi tri linije (SCK, MOSI, MISO) plus liniju za odabir čipa po periferiji.
Korištenje je slično I2C; glavna razlika su parametri koji se prosljeđuju pri inicijalizaciji sabirnice:
from pyb import SPI
spi = SPI(2, SPI.CONTROLLER, baudrate=600000, polarity=1, phase=0, crc=0x7)
Jedini obavezni parametar je mode (SPI.CONTROLLER ili SPI.PERIPHERAL). polarity je razina mirovanja SCK (0 ili 1). phase bira hoće li se podaci uzorkovati na prvom (0) ili drugom (1) bridu takta. crc je ili None (bez CRC-a) ili CRC polinom.
Prijenos podataka:
data = spi.send_recv(b"1234") # send 4 bytes and receive 4 bytes
buf = bytearray(4)
spi.send_recv(b"1234", buf) # send 4 bytes and receive 4 into buf
spi.send_recv(buf, buf) # send/receive 4 bytes through buf
Konstruktori¶
- class pyb.SPI(bus: int | str, *args, **kwargs)¶
Konstruira SPI objekt na danoj
bus(cijeli broj indeksa SPI periferije, npr.2zaSPI2). Bez dodatnih parametara objekt se stvara, ali se ne inicijalizira (zadržava prethodne postavke sabirnice, ako ih ima); ako su zadani dodatni argumenti, sabirnica se inicijalizira njima. Za dostupne parametre pogledajteinit().SPI(2)je spojen na iste pinove zaglavlja na svakoj STM32 OpenMV Cam kameri; OpenMV Cam N6 dodatno izlažeSPI(4):Sabirnica
NSS
SCK
MISO
MOSI
SPI(2)(sve STM32 OpenMV Cam kamere)P3P2P1P0SPI(4)(samo OpenMV Cam N6)P15P16P17P18NSSne pokreće SPI periferija ni na jednoj sabirnici; slobodno se može koristiti kao običan GPIO za odabir čipa.Metode¶
- init(mode: int, baudrate: int = 328125, *, prescaler: int = -1, polarity: int = 1, phase: int = 0, bits: int = 8, firstbit: int = SPI.MSB, ti: bool = False, crc: int | None = None) None¶
Inicijalizira SPI sabirnicu sa zadanim parametrima:
modemora biti iliSPI.CONTROLLERiliSPI.PERIPHERAL.baudrateje brzina takta SCK-a (smisleno samo za kontroler).prescalerje predskalator koji se koristi za izvođenje SCK-a iz frekvencije APB sabirnice; korištenjeprescalerponištavabaudrate.polaritymože biti 0 ili 1 i razina je na kojoj se nalazi linija takta u mirovanju.phasemože biti 0 ili 1 za uzorkovanje podataka na prvom odnosno drugom bridu takta.bitsmože biti 8 ili 16 i broj je bitova u svakoj prenesenoj riječi.firstbitmože bitiSPI.MSBiliSPI.LSB.tiTrue označava konvencije signala Texas Instrumentsa, za razliku od Motorole.crcmože biti None za nepostojanje CRC-a ili specifikator polinoma.
Frekvencija SPI takta možda neće točno odgovarati
baudrate. Hardver podržava samo taktove koji su frekvencija nadređene APB sabirnice podijeljena predskalatorom koji je potencija broja dva (2, 4, 8, 16, 32, 64, 128ili256); upravljački program bira najveći koji ne premašuje traženibaudrate.SPI(2)je na APB1. Za preciznu kontrolu takta postaviteprescalerizravno umjestobaudrate.Ispis SPI objekta prikazuje izračunatu brzinu prijenosa (baud) i odabrani predskalator.
- recv(recv: int | bytearray, *, timeout: int = 5000) bytes¶
Prima podatke na sabirnici:
recvmože biti cijeli broj, koji je broj bajtova koje treba primiti, ili promjenjivi međuspremnik koji će se ispuniti primljenim bajtovima.timeoutje vrijeme čekanja u milisekundama za prijem.
Povratna vrijednost: ako je
recvcijeli broj tada novi međuspremnik s primljenim bajtovima, inače isti međuspremnik koji je proslijeđen urecv.
- send(send: int | bytes | bytearray, *, timeout: int = 5000) None¶
Šalje podatke na sabirnicu:
sendsu podaci koje treba poslati (cijeli broj koji treba poslati ili objekt međuspremnika).timeoutje vrijeme čekanja u milisekundama za slanje.
- send_recv(send: int | bytes | bytearray, recv: bytearray | None = None, *, timeout: int = 5000) bytes¶
Istovremeno šalje i prima podatke na sabirnici:
sendsu podaci koje treba poslati (cijeli broj koji treba poslati ili objekt međuspremnika).recvje promjenjivi međuspremnik koji će se ispuniti primljenim bajtovima. Može biti isti kaosendili izostavljen. Ako je izostavljen, stvorit će se novi međuspremnik.timeoutje vrijeme čekanja u milisekundama za prijem.
Povratna vrijednost: međuspremnik s primljenim bajtovima.
Konstante¶
- CONTROLLER: int¶
Inicijalizira SPI sabirnicu kao master (kontroler) – OpenMV Cam pokreće
SCKiMOSIi upravlja transakcijom.
- PERIPHERAL: int¶
Inicijalizira SPI sabirnicu kao slave (periferiju) – OpenMV Cam odgovara na impulse takta koje pokreće udaljeni kontroler.