PIC ile SD kart Okuma ve Yazma
Gömülü Sistemlerde SD kartların okunması ve yazılması için
FAT 32 dosya sistemi kullanılarak oluşturulmuş projedir.
SD kartlara fiziksel bağlantı SPI Portu üzerinden yapılır.
Hem SD kart Sürücüsü hem FAT32 Mevcuttur.
SD kart içerisindeki bir WAV dosyasını pwm çıkış üzerinden çalıştıran örnek uygulama mevcuttur.
Proje PIC 18F452 ile denenmiş ve çalıştırılmıştır.
Download: https://teknoltan.com/files/pic_sd_kard.zip
Zip Pass : teknoltan.com
FAT32 Bilgleri
FAT 1 Alanı
– 4 byte Clustur bilgileri 32 bit in 28 bitlik kısmı kullanılır.
– 00 00 00 00 Boş Cluster
– 00 00 00 01 Rezerve Cluster
– 0F FF FF F0 Rezerve Cluster
– 0F FF FF F6 Rezerve Cluster
– 0F FF FF F7 Bad Sector
– 0F FF FF F8 Dosya Sonu
– 0F FF FF FF Dosya Sonu
Veri Alanı Root Directory Dizin Girdileri
0 ıncı byte E5 ise veri silinmiştir.
00 ise boştur. Dosya ve Dizin Girdisi Yapılabilir.
Dizin girdileri 32 bit olarak oluşturulur.
bit 0 – 10 Dosya veya dizin adı
Bit 11 Attribute Attribute 0x10 ise dizin 0x20 ise dosya 0x0F ise uzun dizin veya dosya girdisi
Bit 20 – 21 MSB İlk Cluster Adresi
Bit 26 – 27 LSB İlk Cluster Adresi
Bit 28 – 31 Dosya Boyutu
11 Bbyte 0F ise 20-21 ve 26-27 byte 00 ise Uzun Dizin girdisi anlamına gelir.
Uzun Girdilerde son girdi kısa isim 11 karakterli halinde kaydedilir ve cluster numarası buradadır.
Uzun girdilerin ofset bilgileri aşağıdaki gibidir.
0 – Uzun Girdi numarası 1 byte
1 – 5 Adet UTF16 10 byte
11- Attrib Uzun dosyada 0F 1 Byte
12- Rezerve Hep 0 1 Byte
13- Dos Adı Kontrol Checksum 1 Byte
14- 6 Adet UTF16 12 byte
26- Sub Cluster Her zaman 0 2 byte
28- 2 Adet UTF 4 Byte
-Dosya ismi 00 00 ile tamamlanıp FF FF ile biter.
-uzun girdiler dosya ismi uzunluğu ile doğru orantılı olarak artar
-Uzun girdi bitişi ise uzun girdi numarası son girdi 0X40 ile orlanarak yapılır. örn(0x04 – 0x04|0x40
ALT Dizin Girdileri Cluster Organizasyonu
-İlk girdi her zaman Root directory den başlar. Kök dizin
– Oluşturulan bir alt dizin e ait bilgiler alt dizinin oluşturulduğu dizin içerisinde tanımlanır 32 byte lık girdi ile
– Attrib 11 numaralı byte 0x10 yani decimal 16 olarak yazılır. Alt dizin olduğunu belirtmek için
– ilk cluster numarası dosyada olduğu gibi 20-21 26-27 byte lara yazılır.
– 28-31 bytelar boyut bilgisidir alt dizinde her zaman 0 dır.
– Alt Dizin oluşturulduğunda Alt Dizin için bir cluster tanımlanır ve iöerisi 00 yazılır.
– Bu cluster a dosya ve dizin girdileri yazılmaya başlar.
– Oluşturulan Alt dizin için başlangıç cluster verileri aşağıdaki gibidir
a- Önce . sonra .. isimli iki tane dosya girdisi yapılır.
b- . girdisi oluşturulan dizin ile aynı bilgileri içerir sadece ismi . olur.
c- .. dosyasının farkı ise cluster numarası olarak kendisinden bir üstteki dizinin cluster numarası yazılır.
d- dizin içeriği büyüdükçe fat bölgesindeki cluster zincirine eklenir.
Merhaba
Android telefonumdan yanlışlıkla sd kart okuma dosyasını sildim telefonum sd kart okumuyor sorunu nasıl çözerim