Sida 1 av 1

SD-flash

Postat: 1 december 2006, 10:17:28
av JJ
Jag skall göra ett projekt med SD-flashkort anslutet till uC. Jag vill kunna läsa/skriva kortet i en PC också.

Är det någon som har tips om filsystem eller vad som nu behövs?

Postat: 1 december 2006, 12:37:26
av Earendil
Jag håller på med samma sak, har implementerat FAT16 (för läsning). Har du några konkreta frågor än så länge?

Postat: 1 december 2006, 12:43:55
av Stinrew
Kolla in den här killens sida för FAT-filsystem:

http://elm-chan.org/fsw/ff/00index_e.html

Postat: 1 december 2006, 15:16:21
av oJsan
Att du vill kunna läsa/skriva kortet i en PC behöver inte nödvändigtvis betyda att kortet måste ha ett filsystem. Beroende på vad du vill använda prylen till så kan du läsa och skriva rådata, vilket förenklar väldigt mycket.
Vill du däremot kunna läsa och skriva _filer_ med enligt något existerande filsystem så kräver det mer programvara och då kan det vara tveksamt att en uC räcker till (om den dessutom ska göra något vettigt vid sidan om).
Om du begränsar dig till enbart läsning eller skrivning så blir det också enklare. Likaså om du nöjer dig med FAT16 eller FAT32 (skillnaderna är dock mycket små, det krävs lite kod-overhead för att klara båda alltså...)

Har som exjobb skrivit kod för att spela in/upp .wav-filer till/från ett SD-kort med FAT32. Rapporten finns att läsa här: http://jojjas.mine.nu/exjobb/

Postat: 1 december 2006, 17:18:54
av JJ
Tack för förslag och tips!

oJsan: Jag skall förtydliga mig: Jag vill kunna läsa/skriva på PCn utan att behöva installera någre extra program. Då behöver jag väl ett filsystem på flashet? (Jag utgår från att man kan läsa på flashfilsystem om man har en SD-läsare på sin dator...något jag inte har så jag kan ju ha missat hur det funkar.)

Postat: 1 december 2006, 17:38:02
av vfr
Jovisst, det stämmer bra så! FAT16 (och/eller FAT32) är nog det enklaste sättet.

Postat: 3 december 2006, 16:03:31
av Earendil
Att leta upp en fil i rotkatalogen och läsa dess data i FAT16 kräver inte många hundra instruktioner i en PIC. Detta är precis vad mitt bygge för just nu. FAT32 kräver lite fler 32-bitars operationer som ju är jobbiga i en stackars 8-bitars PIC, men det är egentligen inte särskilt svårt.

Ska du däremot göra skrivning blir det lite mer pill, då du måste hålla reda på lediga kluster, uppdatera FAT-tabellen och skriva hela sektorer i SD-kortet på en gång. Du behöver sannolikt kunna hålla en hel SD-kortssektor (512 bytes) i minnet på en gång i PIC:en (fast man kanske kan lura sig undan det).

Jag har byggt med en PIC 16F688 där det får plats 4096 instruktioner varav jag använt knappt 1000. Av de 256 bytesen minne har jag använt ca 64. Vill du kunna skriva till SD-kortet också så föreslår jag att du går upp till PIC18-serien, t.ex. 18F25J10 som jag kör med nu. Den går dessutom utmärkt på 3.3 volt även vid programmering av kod, vilket gör interfacening till SD-kortet mycket enklare. Dessutom kör den i 40 MHz med en 10 MHz kristall vid 3.3 volt. Den har också intruktioner för 8 bitars multiplikation vilket kan vara trevligt vid hantering av FAT-filsystem.

Vilka resurser och begränsningar har du i ditt projekt?

Postat: 3 december 2006, 17:20:22
av TERdON
JJ skrev:oJsan: Jag skall förtydliga mig: Jag vill kunna läsa/skriva på PCn utan att behöva installera någre extra program. Då behöver jag väl ett filsystem på flashet?
Använder du Windows behöver du ett filsystem, ja.

Använder du Linux kan du välja mellan att läsa rådata (möjligen krävs då att du är root) eller att hacka ihop ditt eget filsystem istället. :P