-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Description
Description of issue:
When attempting to read a sdcard of type 'sdxc', those cards having a capacity between 32G - 2T, a wrong capacity is produced.
I have determined this is because the most-significant-bits of the 22-bit C_SIZE are not being read.
Environment:
- MicroPython Version: v1.24.x, v1.26.1
- board/device: Raspberry Pi Pico 2 W
- package: sdcard, installed version 0.1.0, latest stable verison 0.1.0
- installation method: thonny, tools -> manage packages
Demonstration code:
from machine import Pin, SPI
import os, vfs
import sdcard
SPI_BAUD = 25000000 # 25Mhz
# these just happen to be the pins i have wired up
spi = SPI(1, baudrate=SPI_BAUD, sck = Pin(10), mosi=Pin(11, Pin.OUT, value=1), miso=Pin(8))
cs = Pin(9, mode=Pin.OUT, value=1)
sd = sdcard.SDCard(spi, cs, baudrate = SPI_BAUD)
sectors = sd.ioctl(4, None)
blocksize = sd.ioctl(5, None)
size = sectors * blocksize
print(f"SD: {sd}, Sectors: {sectors}, Blocksize: {blocksize}")
print(f"Card Size: {size}, or {size // 1024}Kb, or {size // (1024*1024)}Mb or {size // (1024*1024*1024)}Gb")
Actual Results:
Card labeled as 64G recognized as:
SD: <SDCard object at 20015940>, Sectors: 55083008, Blocksize: 512
Card Size: 28202500096, or 27541504Kb, or 26896Mb or 26Gb
Card labeled as 128G recognized as:
SD: <SDCard object at 20015940>, Sectors: 42950656, Blocksize: 512
Card Size: 21990735872, or 21475328Kb, or 20972Mb or 20Gb
Expected Results:
Card labeled as 64G recognized as:
SD: <SDCard object at 20015a90>, Sectors: 122191872, Blocksize: 512
Card Size: 62562238464, or 61095936Kb, or 59664Mb or 58Gb
confirmed capacity in windows: "59664 MB"
Card labeled as 128G recognized as:
SD: <SDCard object at 20015a90>, Sectors: 244277248, Blocksize: 512
Card Size: 125069950976, or 122138624Kb, or 119276Mb or 116Gb
confirmed capacity in windows: "119276 MB"
Metadata
Metadata
Assignees
Labels
No labels