ChaN’ın SD/MMC uygulaması hakkında?

Başlatan papylon, 23 Ekim 2010, 10:58:47

papylon

RGB LCD ile biraz ilgilenmeye başlayınca SD/MMC kartlar ile de ilgilenmem gerektiğini anladım ama aynı zamanda pek bir şeyde anlamadım.  ???

Bende bu yüzden görsel ve uygulamalı olarak daha iyi kavrayabileceğimi düşünerek, ChaN'ın AVR (ATmega64) için yapmış olduğu uygulama devresini ATmega128 ile birlikte, birde LCD ekleyerek hazırlamaya karar verdim.

Fakat bu noktada daha işin başında kafama takılan bir iki husus var.

Birincisi, RS232 arabirimi 3v3 ile uyumlumudur? Birkaç farklı 232'nin incelediğim Datasheet'lerinden anladığım kadarıyla min. 4v5 ile çalışıyorlar, elimde SMD malzeme olarak MAX213 ve SI232 var, herhangi birini kullanabilir miyim?

İkincisi, SD/MMC kartın besleme gerilimini MCU üzerinden anahtarlamak için MOS-FET kullanılmış, bunun yerine hızlı sayılabilecek herhangi bir BJT kullansam sorun olur mu?

Üçüncüsü, DS1338-33 emin değilim ama piyasada yok sanırım, incelediğim kadarıyla DS1307, 5V olmasının haricinde DS1338-33 ile bire bir uyumlu, gerilim bölücüyle falan hiç uğraşmadan bunu da kullanabilir miyim?


fatihinanc

Merhaba
Diğer sorular hakkında pek bir bilgim yok ama rs232 3v3 ile çalışabilmekte. Zaten rs232 çıkışları 12-14 v gibi bir gerilime sahip. Bunu bir converter ile 3v3 a düşürebilirsiniz. Max3232 veya max 3222 bu işi görür sanırım.
Kolay gelsin.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Elektroemre

Selamlar,

Hocam asıl amaç, FAT32 sistemini SDMMC protokolünü iyice tanımak mı, yoksa ilk etapta *.bmp *.txt vs. dosyaları açmak mı?
Sadece dosya okuyacaksanız ince ayrıntılarla fazla uğraşmamak için ChaN'ın FatFs kütüphanesinin header'ından tarihle igili kısım devre dışı bırakılabilir yada tarih okuma yazma fonksiyonları hep sabit değer gönderecek şekilde ayarlanabilir.

Ayrıca TFT ile yaptığınız devrelerde yeterli hafıza ve SPI ile ilgili pinler boş ise direkt olarak oraya SD kart adapte edipte çalışabilirsiniz, daha pratik olur yeni board kullanmaya gerek kalmaz diye düşünüyorum.

İyi çalışmalar...

papylon

Aslında maksadım protokolü olabildiğince tanımak fakat sadece kâğıt üzerinde okuyarak pek bir şey anlayamadım açıkçası, onun için elle tutulur gözle görülür bir şey olsun dedim.

Bunun içinde önce hazır çalışan şeyi göreyim ondan sonra yavaş yavaş pekiştirip üzerinde oynamaya başlarım diye düşündüm ama yukarıdaki sorular kafama takılınca biraz duraksadım.

@fatihinanc, RS232'nin 3v3 ile çalışabildiğini yazmış, sizde RTC için sabit değer fikrini verince problemin çoğu çözüldü. Aslında RS232 bağlantısına bile gerek yok beklide.

Hocam hatırladığım kadarıyla sizde SD/MMC ile ilgili çalışmanız olmuştu. Tecrübelerinizden istifade etmek isterim.
Yani beynimin içinde sürekli didişip kavga eden, söz dinlemeyen, yalnız kalmış bu iki tane hücreye (isimleri Hamdi abi ve Şerafettin  :D ) en kolay yoldan nasıl anlatırım? Nasıl bir yol izlesem daha doğru olur?

Elektroemre

Selamlar,

Açıkçası tüm protokolü ilk etapta öğrenmek kolay değil. Fat32 ve SD protokolünü ayrı ayrı bilmek gerekiyor. Barış hocamızın http://www.barissamanci.net/ SD ve FAT32 ile ilgili yazıları eşsiz Türkçe kaynaklar.ChaN amcamız/ablamız zaten kütüphanesini yılların birikimiyle geliştirmiş bize sunmuş. Sitesinde çeşitli projelerle kullanmış, fonksiyonlarıda tek tek açıklamış ancak ilk okuyuşta yeterli gelmiyor gerçekten. Birkaç fiziksel denemeyle daha rahat anlaşıyor. Petit FatFs ve FatFs kütüphanelerinin ikisinide kullandım. Güzel kütüphaneler, şimdiye kadar karşılaştığım tek sorun FatFs'de uzun dosya ismi okumada oldu. MCU kafasına göre aynı dosyada bazen okuyor bazen okuyamıyor yada yanlış okuyor uzun dosya ismini. 

İlk başta MCU'ya göre SPI rutinlerini içeren fonksiyonları ve Header dosyasından gerekli konfigürasyonları düzenlememiz gerekiyor. Sonra dosya açmak ve okumak çocuk oyuncağı ChaN'in kütüphane sayesinde;

    
	BYTE res;
	FATFS fs;			/* File system object */
	DIR dir;			/* Directory object */
	FILINFO fno;		/* File information */

f_mount(0,&fs) ; 
    while(1){
       if (f_opendir(&dir, "/")) break;            // root açılıyor

       while (!f_readdir(&dir, &fno) && fno.fname[0]) {  //roottaki dosyalara bakılıyor
          if( strstr(fno.fname, ".WAV") ){         // WAV file  // dosya wav uzantılı ise çalma rutinine gönderiliyor.
  
            play_wave_file(fno.fname);

          }


       }
    }


Önerim şuan TFT'nizin lehimli olduğu kartta SPI pinleri boşta ise hemen bir SD kart soketi bağlayıp başlayın denemelere vakit kaybetmeyin :D
Bu arada SD'nin DataOut'undaki pull-up'a dikkat 3 ayıma mallomuştu :))

İyi çalışmalar...

papylon

@Elektroemre, hocam ayrıntılar ve öneriler için teşekkürler.
Kart çizmekten şimdilik vazgeçtim, Dediğiniz gibi yapıp Bread Board üzerinde bir iki gün içerisinde deneme yapacağım ve gelişmeleri buradan tekrar sizlerle paylaşırım. Bakalım neler olacak...

asi-dex

#6
   BYTE res;
   FATFS fs;         /* File system object */
   DIR dir;         /* Directory object */
   FILINFO fno;      /* File information */

f_mount(0,&fs) ;
    while(1){
       if (f_opendir(&dir, "/")) break;            // root açılıyor

       while (!f_readdir(&dir, &fno) && fno.fname[0]) {  //roottaki dosyalara bakılıyor
          if( strstr(fno.fname, ".WAV") ){         // WAV file  // dosya wav uzantılı ise çalma rutinine gönderiliyor.
 
            play_wave_file(fno.fname);

          }


       }
    }
merhaba ;
yukarıdaki bölümde; klasör içerisindeki wav uzantılı dosya yolu nasıl gösterilir yardımcı olabilir misiniz.?
aşağıdaki gibi denedim olmadı.
if (f_opendir(&dir, "/SOUND")) break;            // root açılıyor
veya
if( strstr(fno.fname, "SOUND/.WAV")