https://github.com/micropython/micropython/blob/master/drivers/sdcard/sdcard.py
https://github.com/pycom/pycom-micropython-sigfox/blob/master/drivers/sdcard/sdcard.py
トラ技スペシャルより、SPIは1系統で、CSはGPIO5なので以下を指定
import machine, sdcard, os sd = sdcard.SDCard(machine.SPI(1), machine.Pin(5))しっかり怒られた。
>>> sd = sdcard.SDCard(machine.SPI(1), machine.Pin(5)) Traceback (most recent call last): File "本ではもう少しオプションが付いていて、その通りに打ち込んだ。", line 1, in File "sdcard.py", line 54, in __init__ File "sdcard.py", line 82, in init_card OSError: no SD card
spi = machine.SPI(1,baudrate=32000000,polarity=1,phase=0,sck=machine.Pin(18),mosi=machine.Pin(23),miso=machine.Pin(19))すると、下記のように、動いているように思える。
>>> sdcard.SDCard(spi,machine.Pin(5)) [0;32mI (1471856) gpio: GPIO[23]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 [0m [0;32mI (1471856) gpio: GPIO[19]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 [0m [0;32mI (1471866) gpio: GPIO[18]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 [0m [0;32mI (1472166) gpio: GPIO[23]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 [0m [0;32mI (1472166) gpio: GPIO[19]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 [0m [0;32mI (1472176) gpio: GPIO[18]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 [0m>>>
osライブラリのコマンドを使ってマウントが必要 https://dfram.hatenablog.jp/entry/2017/11/27/215940
>>> os.listdir() ['boot.py', 'blink.py', 'sdcard.py', 'sd'] >>> os.listdir('/sd') [] >>> >>> os.mount(sd,'/sd') Traceback (most recent call last): File "", line 1, in OSError: [Errno 19] ENODEV
フォーラム等を見てみる。。
https://forum.pycom.io/category/21/micropython
https://forum.micropython.org/
https://github.com/micropython/micropython/issues/3816#issuecomment-392512522
上記コメントによると、0セクタを読んだ時にバッファの最後は0x55aa でないといけないとある。ためしてみると。。以下の通り、SDのセクタ読み込みのレベルでは正しく動作しているようである。
buffer=bytearray(512) sd.readblocks(0,buffer) >>> "{:x}".format(buffer[510]) '55' >>> "{:x}".format(buffer[511]) 'aa'
試しに、BeagleBoneの起動SDならマウントできた(一体どのようなフォーマットだったのか)。よって、読めるかどうかは、マウントさせようとしているSDのファイルフォーマットによると思われる。
ラズパイ用の起動SDだとエラーになった。
>>> uos.mount(sd,'/sd') Traceback (most recent call last): File "", line 1, in OSError: [Errno 1] EPERM memo https://github.com/loboris/MicroPython_ESP32_psRAM_LoBo 読める、読めないの違いは、SDカードのMBR(Master Boot Record)の扱いの差と思っているのですが、 そもそもたまたま読めるBeagleBone用のSDがどういう素性なのかわかっておらず。 https://jp.easeus.com/partition-manager/how-to-format-sd-card.html https://qiita.com/mt08/items/c684d72345b591f4a27f
No comments:
Post a Comment