Sida 2 av 4

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 29 december 2011, 15:09:53
av AndLi
Jag donade lite med SD kort och en ATmega, enklaste sättet att få allt att funka var med exempelkoden från FatFs.

SDHC kort har jag kört utan problem, vissa minnen ska visst inte klara SPI, men de flesta verkar göra det.

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 29 december 2011, 21:06:05
av blueint
För standard SD-kort så behöver man sätta blocklängden till 1024 för 2 GB kort. Och 2048 för 4 GB kort.

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 29 december 2011, 21:56:31
av jesper
Blocklängden som sätts med SET_BLOCKLEN, ska alltid vara 512 (eller man låter bli sätta den, 512 är default). Och det är denna blocklängd som är intressant i transferna.

MAXIMUM blocklängd är en annan sak. Där är det lite speciellt för 2GB kort.

Från Specen, ver 3.01 Final:
4.3.2 2 GByte Card
To make 2GByte card, the Maximum Block Length (READ_BL_LEN=WRITE_BL_LEN) shall be set to
1024 bytes. However, the Block Length, set by CMD16, shall be up to 512 bytes to keep consistency
with 512 bytes Maximum Block Length cards (Less than and equal 2GByte cards).
Edit: Ska förtydliga att READ_BL_LEN och WRITE_BL_LEN är inget man sätter, det är kortspecifik data man läser från CSD registren.

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 30 december 2011, 11:15:35
av Marta
Tackar alla så mycket. Då är frågan besvarad och allt tycks ha förutsättningar att fungera.

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 2 januari 2012, 12:27:18
av Pajn
Glenn skrev:Ja, tycker man dryga 100MB/sec är långsamt så.. fast de flesta tycker nog det är väldigt snabbt.
Lite OT men du får ta och dra bort en nolla även för snabbare kort. De absolut vanligaste SD korten är Class 4 som klarar skriv och läs i just 4 MB/s. Det finns även 2, 6 och 10. 10 är inte speciellt vanlig och är lite dyrare. Visst finns det snabbare kort utanför Class skalan men de är ovanliga och ofta väldigt dyra.

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 2 januari 2012, 22:06:32
av Glenn
pajn: du får nog uppdatera din information lite, till att börja med är class10 mycket vanligt idag, jag köpte ett 8GB SDHC class10-kort för under hundra spänn för bara nån vecka sen till min digitalkamera, så det är varken dyrt eller ovanligt längre. (Står i manualen att kameran ska dra nytta av det dessutom, men jag har inte orkat testa om det blev nån skillnad mot mitt gamla class4-kort)

Men som du säger och som jag syftade på så finns det MYCKET snabbare SD-kort, så kallade UHS-kort, mest avsaedda för videoinspelning, poängen är ju att Tomas brukar drar upp ovanliga "superduper"snabba CF-kort när han kommer med sina jämförelser, kort som är tokdyra och som nästan ingen har, ska man jämföra med sådana kort så ska man ju givetvis jämföra med dom snabbaste SD-korten också, och dom gör drygt 100MB/sec, 104 om jag minns rätt. Det finns även en ännu snabbare klass definerad (UHS-II) , men då existerar det ju inga kort (än, Eller om det har släppts nu, fanns inga i somras iaf.)

Oavsett så stod det citat "SD är väl rätt långsamma", vilket ju var felaktigt, och det var det jag påpekade.

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 2 januari 2012, 22:33:30
av blueint
Det finns ett 4-bit I/O läge för SD-kort. Vilket lär behövas för dom snabba hastigheterna. Dessvärre är det gömt bakom "red tape", NDA, advokater osv..

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 2 januari 2012, 22:47:25
av jesper
Inte alls.
De flesta mikroer som har MCI interface kan köra detta. Det är bara att sätta en bit i rätt register.
Inget hemligt alls.

Här är f.ö. bushastigheterna från specen (Simplified, version 3.01, 100518, sidan 3) :

Kod: Markera allt

Bus Speed Mode (using 4 parallel data lines)
(1) Default Speed mode: 3.3V signaling, Frequency up to 25 MHz, up to 12.5 MB/sec
(2) High Speed mode: 3.3V signaling, Frequency up to 50 MHz, up to 25 MB/sec
(3) SDR12: 1.8V signaling, Frequency up to 25 MHz, up to 12.5MB/sec
(4) SDR25: 1.8V signaling, Frequency up to 50 MHz, up to 25MB/sec
(5) SDR50: 1.8V signaling, Frequency up to 100 MHz, up to 50MB/sec
(6) SDR104: 1.8V signaling, Frequency up to 208 MHz, up to 104MB/sec
(7) DDR50: 1.8V signaling, Frequency up to 50 MHz, sampled on both clock edges, up to 50MB/sec

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 2 januari 2012, 22:54:54
av bearing
Vad är anledningen till gränsen 208 MHz istället för 200 jämnt?

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 2 januari 2012, 23:52:17
av TomasL
För att reda ut saker lite:
När det gäller SD-Kort så är maximal enligt följande:
I 4-bit mode 832 Mbit/s
I SPI-mode 50Mbit/s

Den fulla specifikationen kostar $1000/år
Host-license $1000/år

Hostlicensen gäller enbart om man vill sätta loggan på sin produkt
Den fulla specen är nödvändig om man skall göra nånting annat än SPI.
SD-kort är inte bakåtkompatibla.
Klass 10 kort betyder 10MByte/s
SD kort rymmer upp till 32GB, vill man högre gäller SDXC, med proprietära drivrutiner.

När det gäll CF-kort:
Överföringshastighet upp till 167MByte/s
Max lagringsstorlek 128PetaByte
Specialversionen CFast går upp till 600Mbyte/s i överföringshastighet.
Standarden är helt öppen och inga kostnader är förenat med den, ej heller någon royalty

Generellt gäller att CF-korten, speciellt industrivarianterna har betydligt bättre antiwear algoritmer än SD-kort.

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 3 januari 2012, 00:10:20
av blueint
Standard-SD max 4 GB, byteaddressering.
SDHC, max 32 GB, sektoraddressering (512-byte)
SDXC, max 2 TB, sektoraddressering (512-byte)

Hur man signalerar med 4-bit åt gången är hemligt. Och man får inte använda det läget även utan "logga" vad jag vet.

Finns en del information här: https://en.wikipedia.org/wiki/Secure_Digital#Interface

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 3 januari 2012, 00:37:30
av TomasL
Nja, 4-bit är nog inga konstigheter, man sätter bara rätt mode, så tittar byten ut en nibble i taget på de fyra linorna.

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 3 januari 2012, 01:35:39
av blueint
Att sätta rätt mode till rätt register, veta vilka setup och hålltider som gäller liksom kommando-till-data latens som finns. Och vilka flanker som ger giltiga data osv, är det som är konstigt :vissla:

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 3 januari 2012, 02:09:49
av jesper
Det är inte det minsta konstigt. Det står i processorens datablad eller manual.
Resten läser man från SD specen. Simplified räcker bra för detta.
Har nyligen gjort SD drivisar för ST, Freescale och NXP processorer. Både med SPI och MCI interfacen med och utan DMA. För bare-metal och U-Boot.
Det går alldeles utmärkt med de öppna specar.

Ingen licens krävs för att använda korten, endast för att tillverka kort eller för att göra hårdvaran till en host kontroller.

Däremot finns det vissa delar, bla. om DRM, säkerhet och en del detalj information som endast finns i fullversionen av specifikationen. Men det är inte nödvändigt för oss vanliga dödliga.

Re: SD-kort kompatibilitet med enklare MCU?

Postat: 3 januari 2012, 04:23:19
av blueint
Implementerar du 4-bit bit-bang så är det licensbrott vad jag vet. I synnerhet om det är en FPGA/CPLD som gör jobbet.