class SDCard – SD / MMC -korttiajuri¶
SDCard -luokka ohjaa SD / MMC -korttipaikkaa niissä OpenMV-kameroissa, joissa sellainen on. Ajuri toteuttaa vfs.AbstractBlockDev -rajapinnan, joten sen voi välittää suoraan funktiolle vfs.mount()
import machine
import vfs
sd = machine.SDCard()
vfs.mount(sd, "/sd")
Muista
OpenMV-laiteohjelmisto liittää SD-kortin automaattisesti käynnistyksen yhteydessä, joten useimmat skriptit eivät koskaan luo SDCard -oliota suoraan – ne vain lukevat ja kirjoittavat automaattisesti liitetyn polun kautta. Luo olio käsin vain silloin, kun tarvitset oletuksesta poikkeavan liitospisteen tai raakaa lohkotason käyttöä metodien readblocks() / writeblocks() / ioctl() kautta.
OpenMV Cam M7 / H7 / H7 Plus / Pure Thermal / N6 -malleissa korttipaikkaa ohjaa STM32:n sisäinen SDMMC-ohjain 4-bittisessä SD-tilassa. OpenMV Cam RT1062 -mallissa korttipaikkaa ohjaa i.MX RT:n USDHC-ohjain, myös 4-bittisessä SD-tilassa. Nykyisissä OpenMV-korteissa ei tarvita pin-mux-argumentteja – ajuri tuntee kortin johdotuksen.
Ei käytettävissä OpenMV Cam AE3 -mallissa (alif-portti).
Rakentajat¶
- class machine.SDCard(id: int = 1) SDCard¶
Palauttaa
SDCard-singletonin SD-paikalle, joka tunnistetaan parametrillaid.idhyväksytään porttien välisen yhteensopivuuden vuoksi, mutta OpenMV:n tukemissa porteissa on käytössä vain yksi paikka; anna arvoksi1tai jätä se pois.STM32:ssa rakentaja ei ota lainkaan argumentteja; mimxrt:ssä
id-argumentti hyväksytään, mutta vain1on kelvollinen.Metodit¶
- present() bool¶
Palauttaa
True, jos paikassa on tällä hetkellä tunnistettu kortti, muutenFalse.Korteissa, joihin on johdotettu kortintunnistussignaali, metodi heijastaa kyseistä signaalia reaaliajassa, joten sitä voidaan kysellä
SDCard-olion luomisen jälkeen reagoidakseen kortin lisäämiseen / poistamiseen käytön aikana. Korteissa, joissa ei ole kortintunnistussignaalia, arvo lukitaan rakentamisvaiheessa – se kertoo tuloksen alkuperäisestä CMD0-tutkinnasta, jonka ajuri teki olion luonnin yhteydessä, eikä sen jälkeen lisättyä korttia havaita ennen kuin olio rakennetaan uudelleen (tai mimxrt:ssä kutsutaaninit()).
- info() tuple[int, int, int]¶
Palauttaa 3-tuplen, joka kuvaa tällä hetkellä asetettua korttia:
[0]num_blocks– kokonaiskapasiteetti 512-tavuisina lohkoina. Kerro 512:lla saadaksesi raakatavukapasiteetin.[1]block_size– aina512SD-korteille. Sisällytetty, jotta kutsujat voivat laskeanum_blocks * block_sizesiirrettävästi.[2]card_type– kortin tyyppi, jonka SD-väylä ilmoittaa CMD8 / OCR -alustuskättelyn aikana. Tyypillisiä arvoja ovat0(SDSC – vakiokapasiteetti),0x40(SDHC / SDXC – suuri / laajennettu kapasiteetti) ja0x80(MMC).
Hyödyllinen tarkistettaessa, että kortti tunnistettiin, tai näytettäessä vapaan tilan lukuja suhteessa kokonaiskapasiteettiin.
- power(state: bool, /) None¶
Kytke korttipaikan virtakisko päälle tai pois. STM32-laiteohjelmisto tarjoaa metodin, mutta mikään nykyinen OpenMV Cam ei katkaise SD:n virransyöttöä, joten kutsu on käytännössä tyhjä operaatio. Säilytetty yhteensopivuuden vuoksi koodille, joka kirjoitettiin alun perin ylävirran MicroPython STM32 -referenssikorteille. Vain STM32-portti.
- read(block_num: int, /) bytes¶
Lukee yhden 512-tavuisen lohkon kortilta ja palauttaa sen uutena varatulla
bytes-oliona.Tämä on STM32-portin mukana tuleva vanhentunut yhden lohkon luku. Uuden koodin tulisi käyttää sen sijaan metodia
readblocks()– se toimii jokaisessa OpenMV-portissa, voi lukea minkä tahansa määrän peräkkäisiä lohkoja yhdellä siirrolla ja välttää kutsukohtaisen varauksen kirjoittamalla kutsujan antamaan puskuriin. Vain STM32-portti.
- write(block_num: int, data: bytes, /) None¶
Kirjoittaa yhden 512-tavuisen lohkon kortille.
data-arvon on oltava täsmälleen 512 tavua pitkä.Tämä on STM32-portin mukana tuleva vanhentunut yhden lohkon kirjoitus; uuden koodin tulisi käyttää sen sijaan metodia
writeblocks(), joka toimii jokaisessa OpenMV-portissa ja voi kirjoittaa minkä tahansa määrän peräkkäisiä lohkoja kutsua kohti. Vain STM32-portti.
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Lukee raakaa lohkokohdistettua dataa kortilta puskuriin
buf. Vakiomuotoinenvfs.AbstractBlockDev-lohkolaitteen sisäänkäynti, jota tiedostojärjestelmäkerros käyttää.Yksinkertainen muoto (
readblocks(block_num, buf)): lukee kokonaisia lohkoja alkaen lohkoindeksistäblock_num.len(buf)-arvon on oltava SD-lohkokoon (512 tavua) monikerta.Laajennettu muoto (
readblocks(block_num, buf, offset)): lukeelen(buf)tavua – ei välttämättä kokonaista lohkomäärää – alkaen tavustaoffsetlohkonblock_numsisällä. Käyttävät littlefs ja muut tavuosoitettavat tiedostojärjestelmät.
- writeblocks(block_num: int, buf: bytes | bytearray) None¶
- writeblocks(block_num: int, buf: bytes | bytearray, offset: int) None
Kirjoittaa raakaa lohkokohdistettua dataa puskurista
bufkortille. Vakiomuotoinenvfs.AbstractBlockDev-lohkolaitteen sisäänkäynti, jota tiedostojärjestelmäkerros käyttää.Yksinkertainen muoto (
writeblocks(block_num, buf)): kirjoittaa kokonaisia lohkoja alkaen lohkoindeksistäblock_num.len(buf)-arvon on oltava SD-lohkokoon (512 tavua) monikerta. Jokainen kohdelohko ylikirjoitetaan kokonaan.Laajennettu muoto (
writeblocks(block_num, buf, offset)): kirjoittaalen(buf)tavua – ei välttämättä kokonaista lohkomäärää – alkaen tavustaoffsetlohkonblock_numsisällä. Käyttävät littlefs ja muut tavuosoitettavat tiedostojärjestelmät.
- ioctl(cmd: int, arg: int) int | None¶
Vakiomuotoinen
vfs.AbstractBlockDev-ohjauksen sisäänkäynti. Tiedostojärjestelmäkerros kutsuu sitä liitos-/irrotusvaiheessa ja jokaisella synkronoinnilla. Tunnistetutcmd-arvot ovat:1– alustus. Palauttaa0onnistuessaan.2– alustuksen purku. Palauttaa0onnistuessaan.3– synkronoi kaikki vireillä olevat kirjoitukset. Palauttaa0(SDMMC-ajuri kirjoittaa synkronisesti, ei mitään tyhjennettävää).4– palauttaa laitteen lohkojen määrän.5– palauttaa yhden lohkon koon (aina 512).6– tyhjentää lohkon (tyhjä operaatio SD:llä, säilytettyvfs.AbstractBlockDev-sopimuksen vuoksi).7– palauttaa, tukeeko laite lohkon tyhjentämistä (0 SD:llä).
Suorat kutsujat eivät yleensä käytä tätä metodia – tiedostojärjestelmäajuri lähettää kaikki vakiokoodit automaattisesti, kun
SDCardon liitetty.
- init(*args, **kwargs) None¶
Alustaa SD-rajapinnan uudelleen alusta alkaen. Hyväksyy samat argumentit kuin rakentaja. Hyödyllinen kortin uudelleentunnistamiseen käytön aikana lisätyllä kortilla korteissa, joissa ei ole kortintunnistussignaalia, koska
present()on muuten lukittu rakentamisvaiheessa. Vain mimxrt-portti.
- deinit() None¶
Purkaa SD-rajapinnan alustuksen vapauttaen SDMMC/USDHC-ohjaimen ja sen varaamat IO-nastat.
SDCard-oliosta tulee käyttökelvoton, kunnesinit()kutsutaan uudelleen. Käytä sitä ennen kortin uudelleenflashausta toisesta rajapinnasta tai katkaistaksesi virran paikasta akkukäyttöisessä sovelluksessa. Vain mimxrt-portti.