class SPI – ohjaimen ohjaama sarjaprotokolla¶
SPI on synkroninen sarjaprotokolla, jota ohjain ohjaa. Fyysisellä tasolla se käyttää kolmea linjaa (SCK, MOSI, MISO) sekä oheislaitekohtaista lohonvalintalinjaa.
Käyttö on samanlaista kuin I2C:llä; pääero on väylää alustettaessa välitettävissä parametreissa:
from pyb import SPI
spi = SPI(2, SPI.CONTROLLER, baudrate=600000, polarity=1, phase=0, crc=0x7)
Ainoa pakollinen parametri on mode (SPI.CONTROLLER tai SPI.PERIPHERAL). polarity on SCK:n lepotaso (0 tai 1). phase valitsee, otetaanko data näytteeksi ensimmäisellä (0) vai toisella (1) kellon reunalla. crc on joko None (ei CRC:tä) tai CRC-polynomi.
Datan siirto:
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
Konstruktorit¶
- class pyb.SPI(bus: int | str, *args, **kwargs)¶
Muodosta SPI-objekti annetulle väylälle
bus(kokonaislukumuotoinen SPI-oheislaiteindeksi, esim.2väylälleSPI2). Ilman lisäparametreja objekti luodaan mutta sitä ei alusteta (se säilyttää mahdolliset aiemmat väyläasetukset); jos lisäargumentteja annetaan, väylä alustetaan niillä. Katso käytettävissä olevat parametrit metodistainit().SPI(2)on kytketty samoihin liitinnastoihin jokaisessa STM32-pohjaisessa OpenMV Cam -kamerassa; OpenMV Cam N6 tarjoaa lisäksi väylänSPI(4):Väylä
NSS
SCK
MISO
MOSI
SPI(2)(kaikki STM32 OpenMV Cam -kamerat)P3P2P1P0SPI(4)(vain OpenMV Cam N6)P15P16P17P18SPI-oheislaite ei ohjaa
NSS-linjaa kummallakaan väylällä; sitä voi vapaasti käyttää tavallisena GPIO-lohonvalintana.Metodit¶
- 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¶
Alusta SPI-väylä annetuilla parametreilla:
modeon oltava jokoSPI.CONTROLLERtaiSPI.PERIPHERAL.baudrateon SCK-kellotaajuus (järkevä vain ohjaimelle).prescaleron esijakaja, jolla SCK johdetaan APB-väylän taajuudesta;prescaler-arvon käyttö ohittaabaudrate-arvon.polarityvoi olla 0 tai 1, ja se on taso, jolla lepotilan kellolinja pysyy.phasevoi olla 0 tai 1 ottaakseen datan näytteeksi vastaavasti ensimmäisellä tai toisella kellon reunalla.bitsvoi olla 8 tai 16, ja se on bittien määrä kussakin siirretyssä sanassa.firstbitvoi ollaSPI.MSBtaiSPI.LSB.tiTrue ilmaisee Texas Instruments -signaalikäytäntöjä, vastakohtana Motorola-käytännöille.crcvoi olla None ilman CRC:tä, tai polynomimäärittely.
SPI-kellotaajuus ei välttämättä vastaa täsmälleen
baudrate-arvoa. Laitteisto tukee vain kellotaajuuksia, jotka ovat APB-pääväylän taajuus jaettuna kahden potenssina olevalla esijakajalla (2, 4, 8, 16, 32, 64, 128tai256); ajuri valitsee suurimman, joka ei ylitä pyydettyäbaudrate-arvoa.SPI(2)on APB1:llä. Kellon tarkkaa hallintaa varten asetaprescalersuoraanbaudrate-arvon sijaan.SPI-objektin tulostus näyttää lasketun siirtonopeuden ja valitun esijakajan.
- recv(recv: int | bytearray, *, timeout: int = 5000) bytes¶
Vastaanota dataa väylältä:
recvvoi olla kokonaisluku, joka on vastaanotettavien tavujen määrä, tai muokattava puskuri, joka täytetään vastaanotetuilla tavuilla.timeouton millisekunteina ilmoitettu aikakatkaisu, jonka vastaanottoa odotetaan.
Paluuarvo: jos
recvon kokonaisluku, palautetaan uusi puskuri vastaanotetuista tavuista, muutoin sama puskuri, joka välitettiinrecv-argumenttiin.
- send(send: int | bytes | bytearray, *, timeout: int = 5000) None¶
Lähetä dataa väylälle:
sendon lähetettävä data (lähetettävä kokonaisluku tai puskuriobjekti).timeouton millisekunteina ilmoitettu aikakatkaisu, jonka lähetystä odotetaan.
- send_recv(send: int | bytes | bytearray, recv: bytearray | None = None, *, timeout: int = 5000) bytes¶
Lähetä ja vastaanota dataa väylällä samanaikaisesti:
sendon lähetettävä data (lähetettävä kokonaisluku tai puskuriobjekti).recvon muokattava puskuri, joka täytetään vastaanotetuilla tavuilla. Se voi olla sama kuinsend, tai se voidaan jättää pois. Jos se jätetään pois, luodaan uusi puskuri.timeouton millisekunteina ilmoitettu aikakatkaisu, jonka vastaanottoa odotetaan.
Paluuarvo: puskuri vastaanotetuilla tavuilla.
Vakiot¶
- CONTROLLER: int¶
Alusta SPI-väylä isäntänä (ohjaimena) – OpenMV Cam ohjaa
SCK- jaMOSI-linjoja ja vastaa transaktiosta.
- PERIPHERAL: int¶
Alusta SPI-väylä orjana (oheislaitteena) – OpenMV Cam vastaa etäohjaimen ohjaamiin kellopulsseihin.