class SDCard – upravljački program za SD / MMC kartice¶
Klasa SDCard upravlja utorom za SD / MMC karticu na OpenMV kamerama koje ga imaju. Upravljački program implementira sučelje vfs.AbstractBlockDev pa se može izravno proslijediti funkciji vfs.mount()
import machine
import vfs
sd = machine.SDCard()
vfs.mount(sd, "/sd")
Napomena
OpenMV firmware automatski montira SD karticu pri pokretanju, pa većina skripti nikada izravno ne stvara objekt SDCard – one samo čitaju i pišu kroz automatski montiranu putanju. Objekt stvarajte ručno samo kada vam treba nestandardna točka montiranja ili izravan pristup na razini blokova putem readblocks() / writeblocks() / ioctl().
Na OpenMV Cam M7 / H7 / H7 Plus / Pure Thermal / N6 utorom upravlja STM32-ov ugrađeni SDMMC kontroler u 4-bitnom SD načinu rada. Na OpenMV Cam RT1062 utorom upravlja USDHC kontroler i.MX RT-a, također u 4-bitnom SD načinu rada. Na nijednoj trenutnoj OpenMV ploči nisu potrebni argumenti za mapiranje pinova – upravljački program poznaje ožičenje ploče.
Nije dostupno na OpenMV Cam AE3 (alif port).
Konstruktori¶
- class machine.SDCard(id: int = 1) SDCard¶
Vraća jedinstveni (singleton) objekt
SDCardza SD utor identificiran sid.idse prihvaća radi kompatibilnosti između portova, ali OpenMV-podržani portovi izlažu samo jedan utor; proslijedite1ili ga izostavite.Na STM32 konstruktor uopće ne uzima argumente; na mimxrt argument
idse prihvaća, ali valjan je samo1.Metode¶
- present() bool¶
Vraća
Trueako je kartica trenutno otkrivena u utoru, inačeFalse.Na pločama koje ožičuju signal za otkrivanje kartice metoda odražava taj signal u stvarnom vremenu, pa se može ispitivati nakon što je objekt
SDCardstvoren kako bi se reagiralo na umetanje / uklanjanje tijekom rada. Na pločama bez signala za otkrivanje kartice vrijednost se zaključava pri stvaranju objekta – prijavljuje rezultat početne CMD0 provjere koju je upravljački program obavio pri stvaranju objekta, a kartica umetnuta tijekom rada nakon toga neće biti vidljiva dok se objekt ponovno ne stvori (ili dok se na mimxrt ne pozoveinit()).
- info() tuple[int, int, int]¶
Vraća uređenu trojku (3-tuple) koja opisuje trenutno umetnutu karticu:
[0]num_blocks– ukupni kapacitet u blokovima od 512 bajtova. Pomnožite s 512 da dobijete sirovi kapacitet u bajtovima.[1]block_size– uvijek512za SD kartice. Uključeno kako bi pozivatelji mogli prijenosno izračunatinum_blocks * block_size.[2]card_type– tip kartice koji SD sabirnica prijavljuje tijekom CMD8 / OCR inicijalizacijskog rukovanja. Tipične vrijednosti su0(SDSC – standardni kapacitet),0x40(SDHC / SDXC – visoki / prošireni kapacitet) i0x80(MMC).
Korisno za provjeru je li kartica prepoznata ili za prikaz podataka o slobodnom prostoru u odnosu na ukupni kapacitet.
- power(state: bool, /) None¶
Uključuje ili isključuje napajanje utora za karticu. STM32 firmware izlaže metodu, ali nijedna trenutna OpenMV Cam ne kontrolira napajanje SD-a, pa poziv zapravo nema učinka. Zadržano radi kompatibilnosti s kodom izvorno napisanim za referentne STM32 ploče iz izvornog MicroPythona. Samo STM32 port.
- read(block_num: int, /) bytes¶
Čita jedan blok od 512 bajtova s kartice i vraća ga kao novostvoreni objekt
bytes.Ovo je naslijeđeno čitanje jednog bloka koje isporučuje STM32 port. Novi kod umjesto toga treba koristiti
readblocks()– ta metoda radi na svakom OpenMV portu, može pročitati bilo koji broj uzastopnih blokova u jednom prijenosu i izbjegava alokaciju po pozivu pišući u međuspremnik koji isporučuje pozivatelj. Samo STM32 port.
- write(block_num: int, data: bytes, /) None¶
Piše jedan blok od 512 bajtova na karticu.
datamora biti točno 512 bajtova dug.Ovo je naslijeđeno pisanje jednog bloka koje isporučuje STM32 port; novi kod umjesto toga treba koristiti
writeblocks(), koji radi na svakom OpenMV portu i može zapisati bilo koji broj uzastopnih blokova po pozivu. Samo STM32 port.
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Čita sirove podatke poravnate na blokove s kartice u
buf. Standardna ulazna točka blok-uređajavfs.AbstractBlockDevkoju koristi sloj datotečnog sustava.Jednostavan oblik (
readblocks(block_num, buf)): čita cijele blokove počevši od indeksa blokablock_num.len(buf)mora biti višekratnik veličine SD bloka (512 bajtova).Prošireni oblik (
readblocks(block_num, buf, offset)): čitalen(buf)bajtova – ne nužno cijeli broj blokova – počevši od bajtaoffsetunutar blokablock_num. Koristi ga littlefs i drugi bajtno adresabilni datotečni sustavi.
- writeblocks(block_num: int, buf: bytes | bytearray) None¶
- writeblocks(block_num: int, buf: bytes | bytearray, offset: int) None
Piše sirove podatke poravnate na blokove iz
bufna karticu. Standardna ulazna točka blok-uređajavfs.AbstractBlockDevkoju koristi sloj datotečnog sustava.Jednostavan oblik (
writeblocks(block_num, buf)): piše cijele blokove počevši od indeksa blokablock_num.len(buf)mora biti višekratnik veličine SD bloka (512 bajtova). Svaki zahvaćeni blok se u cijelosti prepisuje.Prošireni oblik (
writeblocks(block_num, buf, offset)): pišelen(buf)bajtova – ne nužno cijeli broj blokova – počevši od bajtaoffsetunutar blokablock_num. Koristi ga littlefs i drugi bajtno adresabilni datotečni sustavi.
- ioctl(cmd: int, arg: int) int | None¶
Standardna upravljačka ulazna točka
vfs.AbstractBlockDev. Poziva ju sloj datotečnog sustava pri montiranju/demontiranju i pri svakoj sinkronizaciji. Prepoznatecmdvrijednosti su:1– inicijalizacija. Vraća0u slučaju uspjeha.2– deinicijalizacija. Vraća0u slučaju uspjeha.3– sinkronizira sva pisanja na čekanju. Vraća0(SDMMC upravljački program piše sinkrono, nema ništa za pražnjenje).4– vraća broj blokova na uređaju.5– vraća veličinu jednog bloka (uvijek 512).6– briše blok (bez učinka na SD-u, zadržano radi ugovoravfs.AbstractBlockDev).7– vraća podržava li uređaj brisanje blokova (0 na SD-u).
Izravni pozivatelji obično ne koriste ovu metodu – upravljački program datotečnog sustava automatski raspoređuje sve standardne kodove čim je
SDCardmontiran.
- init(*args, **kwargs) None¶
Ponovno inicijalizira SD sučelje od početka. Prihvaća iste argumente kao konstruktor. Korisno za ponovno otkrivanje kartice umetnute tijekom rada na pločama bez signala za otkrivanje kartice, budući da je
present()inače zaključan pri stvaranju objekta. Samo mimxrt port.
- deinit() None¶
Deinicijalizira SD sučelje, otpuštajući SDMMC/USDHC kontroler i IO pinove koje je zauzeo. Objekt
SDCardpostaje neupotrebljiv dok se ponovno ne pozoveinit(). Koristite ga prije ponovnog upisivanja kartice s drugog sučelja ili za isključivanje napajanja utora u aplikaciji napajanoj baterijom. Samo mimxrt port.