class SDCard -- driver kartu SD / MMC¶
Kelas SDCard mengendalikan slot kartu SD / MMC pada OpenMV cam yang memilikinya. Driver ini mengimplementasikan antarmuka vfs.AbstractBlockDev sehingga dapat langsung diteruskan ke vfs.mount()
import machine
import vfs
sd = machine.SDCard()
vfs.mount(sd, "/sd")
Catatan
Firmware OpenMV secara otomatis me-mount kartu SD saat boot, sehingga sebagian besar skrip tidak pernah membuat SDCard secara langsung -- mereka hanya membaca dan menulis melalui jalur yang di-mount otomatis. Buat secara manual hanya jika Anda memerlukan titik mount non-default atau akses tingkat blok mentah melalui readblocks() / writeblocks() / ioctl().
Pada OpenMV Cam M7 / H7 / H7 Plus / Pure Thermal / N6, slot dikendalikan oleh kontroler SDMMC on-chip STM32 dalam mode SD 4-bit. Pada OpenMV Cam RT1062, slot dikendalikan oleh kontroler USDHC i.MX RT, juga dalam mode SD 4-bit. Tidak diperlukan argumen pin-mux pada board OpenMV saat ini -- driver mengetahui kabel board.
Tidak tersedia pada OpenMV Cam AE3 (port alif).
Konstruktor¶
- class machine.SDCard(id: int = 1) SDCard¶
Mengembalikan singleton
SDCarduntuk slot SD yang diidentifikasi olehid.idditerima untuk kompatibilitas lintas-port, tetapi port yang didukung OpenMV hanya mengekspos satu slot; berikan1atau abaikan.Pada STM32 konstruktor tidak menerima argumen sama sekali; pada mimxrt argumen
idditerima tetapi hanya1yang valid.Metode¶
- present() bool¶
Mengembalikan
Truejika kartu saat ini terdeteksi di slot,Falsejika tidak.Pada board yang menghubungkan sinyal card-detect, metode ini mencerminkan sinyal tersebut secara real time, sehingga dapat di-polling setelah objek
SDCarddibuat untuk bereaksi terhadap penyisipan / pencabutan panas. Pada board tanpa sinyal card-detect, nilai dikunci pada waktu pembuatan -- metode ini melaporkan hasil probe CMD0 awal yang dilakukan driver saat objek dibuat, dan kartu yang disisipkan panas setelahnya tidak akan terlihat hingga objek dibuat ulang (atauinit()dipanggil pada mimxrt).
- info() tuple[int, int, int]¶
Mengembalikan tuple 3 elemen yang mendeskripsikan kartu yang sedang terpasang:
[0]num_blocks-- total kapasitas dalam blok 512-byte. Kalikan dengan 512 untuk mendapatkan kapasitas byte mentah.[1]block_size-- selalu512untuk kartu SD. Disertakan agar pemanggil dapat melakukannum_blocks * block_sizesecara portabel.[2]card_type-- tipe kartu yang dilaporkan oleh bus SD selama handshake inisialisasi CMD8 / OCR. Nilai umum adalah0(SDSC -- kapasitas standar),0x40(SDHC / SDXC -- kapasitas tinggi / diperluas) dan0x80(MMC).
Berguna untuk memeriksa bahwa kartu telah dikenali, atau untuk menampilkan angka ruang bebas relatif terhadap total kapasitas.
- power(state: bool, /) None¶
Mengaktifkan atau menonaktifkan rel daya slot kartu. Firmware STM32 mengekspos metode ini tetapi tidak ada OpenMV Cam saat ini yang mengendalikan suplai daya SD, sehingga panggilan ini pada dasarnya tidak melakukan apa-apa. Dipertahankan untuk kompatibilitas dengan kode yang awalnya ditulis untuk board referensi STM32 MicroPython upstream. Hanya port STM32.
- read(block_num: int, /) bytes¶
Membaca satu blok 512-byte dari kartu dan mengembalikannya sebagai objek
bytesyang baru dialokasikan.Ini adalah pembacaan blok tunggal lama yang disertakan oleh port STM32. Kode baru sebaiknya menggunakan
readblocks()-- metode tersebut bekerja pada setiap port OpenMV, dapat membaca sejumlah blok yang berurutan dalam satu transfer, dan menghindari alokasi per-panggilan dengan menulis ke buffer yang disediakan pemanggil. Hanya port STM32.
- write(block_num: int, data: bytes, /) None¶
Menulis satu blok 512-byte ke kartu.
dataharus tepat 512 byte.Ini adalah penulisan blok tunggal lama yang disertakan oleh port STM32; kode baru sebaiknya menggunakan
writeblocks(), yang bekerja pada setiap port OpenMV dan dapat menulis sejumlah blok yang berurutan per panggilan. Hanya port STM32.
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Membaca data mentah yang sejajar blok dari kartu ke dalam
buf. Titik masuk perangkat blokvfs.AbstractBlockDevstandar yang digunakan oleh lapisan filesystem.Bentuk sederhana (
readblocks(block_num, buf)): membaca blok penuh mulai dari indeks blokblock_num.len(buf)harus merupakan kelipatan ukuran blok SD (512 byte).Bentuk diperluas (
readblocks(block_num, buf, offset)): membacalen(buf)byte -- tidak harus sejumlah blok penuh -- mulai dari byteoffsetdalam blokblock_num. Digunakan oleh littlefs dan filesystem lain yang dapat dialamatkan per byte.
- writeblocks(block_num: int, buf: bytes | bytearray) None¶
- writeblocks(block_num: int, buf: bytes | bytearray, offset: int) None
Menulis data mentah yang sejajar blok dari
bufke kartu. Titik masuk perangkat blokvfs.AbstractBlockDevstandar yang digunakan oleh lapisan filesystem.Bentuk sederhana (
writeblocks(block_num, buf)): menulis blok penuh mulai dari indeks blokblock_num.len(buf)harus merupakan kelipatan ukuran blok SD (512 byte). Setiap blok yang terpengaruh akan ditimpa sepenuhnya.Bentuk diperluas (
writeblocks(block_num, buf, offset)): menulislen(buf)byte -- tidak harus sejumlah blok penuh -- mulai dari byteoffsetdalam blokblock_num. Digunakan oleh littlefs dan filesystem lain yang dapat dialamatkan per byte.
- ioctl(cmd: int, arg: int) int | None¶
Titik masuk kontrol
vfs.AbstractBlockDevstandar. Dipanggil oleh lapisan filesystem pada waktu mount/unmount dan pada setiap sinkronisasi. Nilaicmdyang dikenali adalah:1-- inisialisasi. Mengembalikan0jika berhasil.2-- deinisialisasi. Mengembalikan0jika berhasil.3-- sinkronkan penulisan yang tertunda. Mengembalikan0(driver SDMMC menulis secara sinkron, tidak ada yang perlu di-flush).4-- mengembalikan jumlah blok pada perangkat.5-- mengembalikan ukuran satu blok (selalu 512).6-- menghapus sebuah blok (no-op pada SD, dipertahankan untuk kontrakvfs.AbstractBlockDev).7-- mengembalikan apakah perangkat mendukung penghapusan blok (0 pada SD).
Pemanggil langsung biasanya tidak menggunakan metode ini -- driver filesystem mengirimkan semua kode standar secara otomatis setelah
SDCarddi-mount.
- init(*args, **kwargs) None¶
Menginisialisasi ulang antarmuka SD dari awal. Menerima argumen yang sama dengan konstruktor. Berguna untuk mendeteksi ulang kartu yang disisipkan panas pada board tanpa sinyal card-detect, karena
present()jika tidak akan dikunci pada waktu pembuatan. Hanya port mimxrt.
- deinit() None¶
Mendeinisialisasi antarmuka SD, melepaskan kontroler SDMMC/USDHC dan pin IO yang diklaim. Objek
SDCardmenjadi tidak dapat digunakan hinggainit()dipanggil kembali. Gunakan sebelum mem-flash ulang kartu dari antarmuka lain, atau untuk memutus daya ke slot dalam aplikasi bertenaga baterai. Hanya port mimxrt.