Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => ARM7 Mikrodenetleyici => Konuyu başlatan: Mucit23 - 18 Ekim 2017, 17:04:04

Başlık: STM32F103 FatFS Dosya açma sorunu
Gönderen: Mucit23 - 18 Ekim 2017, 17:04:04
Selamlar

FatFS kütüphanesini STM32F103C8 ile çalıştırmak için uğraşıyorum iki gündür. Öncelikle Keil ortamında STD library ile derlenebilen bir projem var. Bu kısmı hallettim fakat FatFS kütüphanesini doğru düzgün çalıştıramadım.

1GB SD kart ile deniyorum. Sd kartı varsayılan olarak FAT formatıyla biçimlendirdim

SD kartı init edebiliyorum program SD_Init() fonksiyonunu birkaç denemede geçebiliyor. Birkaç deneme diyorum çünkü tek seferde SD kartı init edemiyorum.

SD kartı init edebilirsem eğer SD kartın kapasitesine SD_GetCapacity() fonksiyonu ile bakabiliyorum. Bu fonksiyonda doğru bir şekilde çalışıyor. Fakat Dosya açma ve kapama işlemleri her ne kadar başarılı bir şekilde sonuçlansada gerçekte windows ortamında dosyayı göremiyorum.

Boş bir txt dosyası açmak için aşağıdaki rutinleri kullanıyorum.

    if (f_mount(&FatFs, "", 1) == FR_OK)
    {
if (f_open(&fil, "test.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE) == FR_OK)
{
printf("Dosya Acildi");
f_close(&fil);
}
  f_mount(0, "", 1);
    }
else
{
   printf("SD_Kart Algilanmadi");
}


Projede MMC_SD diye bir dosya var. SD haberleşme rutinleri genel olarak bu dosyada. Bu kodlar çince yazılmış sanırım. Pek birşey anlamak mümkün değil. Sorun ama bu dosyada

Burada bütünüyle proje dosyalarını yükledim
https://yadi.sk/d/IIa4Xu6V3Ns4Qg
Sorun nerde olabilir?

STM32F1 ile kullandığınız çalışan bir proje paylaşmanız mümkünmü? Örnek uygulama bulmakta sıkıntı yaşıyorum.
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: Mucit23 - 18 Ekim 2017, 17:26:39
http://elm-chan.org/fsw/ff/00index_e.html
Buradan kütüphanenin son versiyonunu indirip herhangi bir mikroişlemciye adım adım nasıl port edileceğini anlatabilecek olan varmı? Rehber niteliğinde bir konu olurdu.
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: kantirici - 18 Ekim 2017, 17:39:27
Kütüphanenin çok portluk bir durumu yok aslında. Sadece soft spi için 4 tane IO 1/0 yapmak için tanımlama yapmak yeterli. Bunlarda zaten definlanmış sadece oraya yazmak kalıyor. Netteki örneklerde yeterli. Türkçe kaynakta mevcut.
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: baran123 - 18 Ekim 2017, 19:00:09
@Mucit23 hocam aslında normal FatFs yanına sadece SPI/SDIO katmanını kurmak gerekiyor.
Tilen Majerle'nin örneğini incelerseniz kütüphane içerisinde bulunan fatfs_sd.c size bu konuda fikir verecektir.
Bu dosyanın içine kendi donanım katmanınızın ayarlarını yapacağınız fonksiyonları bu dosyaya düzgün şekilde eklerseniz istediğiniz donanımda çalışabilir.
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: Mucit23 - 19 Ekim 2017, 10:26:23
Peki şuan çalışan ve yürütülen projede dosya açılmamasının sebebi ne olabilir? Bir siteden baya örnek buldum. Onlara bakıyorum ama MMC_SD dosyası hemen hemen aynı gibi.

program f_mount, f_open ve f_close rutinlerini çalıştırıyor
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: baran123 - 19 Ekim 2017, 12:16:09
f_mount yada f_open yaptığınızda geri dönen dönüş değeri nedir ?
Kartı FAT16 olarak biçimlendirdiniz mi ?
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: Mucit23 - 19 Ekim 2017, 14:30:49
Evet Kartı Fat16 olarak biçimlendiriyorum.

Test için aşağıdaki kodları çalıştırıyorum.

   

sd_size=SD_GetCapacity();
printf("SD Card Checked OK \r\n");
printf("SD Card Size:  %d Byte\r\n",sd_size);

if (f_mount(&FatFs, "", 1) == FR_OK)
    {
printf("f_mount=FR_OK\n");
if (f_open(&fil, "test.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE) == FR_OK)
{
printf("Dosya Acildi\n");
f_close(&fil);
}
else
{
printf("Dosya Acma Hatasi");
}
  f_mount(0, "", 1);
    }
else
{
   printf("SD_Kart Algilanmadi");
}


Birkaç defa üst üste bu kodu çalıştırıyorum aldığım cevaplar aşağıdaki gibi

SD Card Checked OK
SD Card Size:  988282880 Byte
f_mount=FR_OK
Dosya Acildi
SD Card Checked OK
SD Card Size:  988282880 Byte
f_mount=FR_OK
Dosya Acildi


Sonuç olarak Tek seferde dosya oluşmuyor ama birkaç defa üst üste yukarıdaki kodları çalıştırırsam dosya açılıyor.

Dosya içerisine birşeyler yazmam lazım ama f_puts fonksiyonu çalıştıramadım.

Test için dosyayı açtıktan sonra aşağıdaki kodu çalıştırdım,
f_puts("Bu bir test Mesajidir",&fil);
fakat keil derlerken aşağıdaki hatayı veriyor.
Alıntı Yap.\Objects\ARM_Software.axf: Error: L6218E: Undefined symbol f_puts (referred from main.o).
Symbol tanımlaması ff.h içerisinde tanımlı halbuki

Bu f_open,f_close, f_mount ve f_puts gibi fonksiyonların hepsi ff.c içerisinde yer alıyor. Fonksiyon başlıkları ise ff.h içerisinde var. sadece f_puts ve f_putc fonksiyonlarını derleyemiyorum. Sorun ne olabilirki?
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: kantirici - 19 Ekim 2017, 17:11:05
ffconfig dosyasında kütüphane ile ilgili ayarlar mevcut. Muhtemelen f_write kapatılmıştır. Bundan dolayı yazım yapamıyor sundur.
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: Mucit23 - 19 Ekim 2017, 17:38:10
Alıntı yapılan: kantirici - 19 Ekim 2017, 17:11:05
ffconfig dosyasında kütüphane ile ilgili ayarlar mevcut. Muhtemelen f_write kapatılmıştır. Bundan dolayı yazım yapamıyor sundur.

Evet f_puts fonksiyonunu kullanılmamasının sebebi oymuş. _USE_STRFUNC parametresini 1 yapınca derlenebildi. Fakat hala txt içerisine birşeyler yazamadım.

Test için aşağıdaki rutinleri kullanıyorum.
while(SD_Init()!=0 && retry-->0)
{
printf("SD Card Failed!\r\n");
delay_ms(500);
printf("Please Check!   \r\n");
delay_ms(500);
}
if(retry==255)SD_Error();

sd_size=SD_GetCapacity();
printf("SD Card Checked OK \r\n");
printf("SD Card Size:  %d Byte\r\n",sd_size);

    if (f_mount(&FatFs, "", 1) == FR_OK)
    {
printf("f_mount=FR_OK\n");
if (f_open(&fil, "test5.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE) == FR_OK)
{
printf("Dosya Acildi\n");
f_puts("Bu bir Test Mesajidir",&fil);
f_close(&fil);
}
else
{
printf("Dosya Acma Hatasi");
}
  f_mount(0, "", 1);
    }
else
{
   printf("SD_Kart Algilanmadi");
}


Hepsinden geçiyor. txt dosyası oluşturuluyor ama f_puts ile yazdıklarım txt nin içerisine yazılmıyor. Acaba parametrelerle ilgili bir sorun olabilirmi? Yani hali hazırda kullandığım kütüphane txt dosyası açabiliyorsa bu dosyanın içine birşeylerde yazabilmesi lazım.
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: baran123 - 19 Ekim 2017, 17:53:52
Çok fark yok ama yazma okuma için şöyle yapıyorum.


typedef enum
{
    SD_Status_Error = 0,
    SD_Status_Ok    = 1
}SD_Status_t;

FATFS FatFs;
FIL fil;

SD_Status_t SD_WriteTextFile(uint8_t* txtName, uint8_t* buf)
{
    SD_Status_t SD_Status = SD_Status_Error;

    if (f_mount(&FatFs, "", 1) == FR_OK)
    {
        if (f_open(&fil, txtName, FA_OPEN_ALWAYS | FA_READ | FA_WRITE) == FR_OK)
        {
            if (f_puts(buf, &fil) > 0)
            {
                SD_Status = SD_Status_Ok;
            }
            f_close(&fil);
        }
        f_mount(0, "", 1);
    }

    return SD_Status;
}

SD_Status_t SD_ReadTextFile(uint8_t* txtName, uint8_t* buf, uint8_t len)
{
    SD_Status_t SD_Status = SD_Status_Error;

    if (f_mount(&FatFs, "", 1) == FR_OK)
    {
        if (f_open(&fil, txtName, FA_OPEN_ALWAYS | FA_READ | FA_WRITE) == FR_OK)
        {
            if (f_gets(buf, len, &fil))
            {
                SD_Status = SD_Status_Ok;
            }
            f_close(&fil);
        }
        f_mount(0, "", 1);
    }

    return SD_Status;
}


Belki ffconf da falan farklılık olabilir benim F4 için kullandığım kütüphane linkte. Karşılaştırma yapabilirsiniz.
http://s6.dosya.tc/server11/q7aazy/FatFs.rar.html
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: Mucit23 - 20 Ekim 2017, 13:11:12
Aynı konfigürasyonları denedim birebir olarak. Ama sonuç değişmedi. Sorunu tekrar etmek gerekirse. Dosya açmada sorun yok sadece txt dosyasına yazamıyorum.

Farklı kütüphane bir kütüphaneye ihtiyacım var.

STM32F103 ve SPI kullanarak haberleşen bir SD kart örneği verebilecek olan var mı?  Bu işi bu sefer çözeceğim. Bazı deney kartları ile örnek uygulamalar gelebiliyor. Elinizde öyle örnek uygulamalar var ise paylaşabilirmisiniz?
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: volkanunal - 20 Ekim 2017, 13:14:51
Alıntı yapılan: Mucit23 - 20 Ekim 2017, 13:11:12
Aynı konfigürasyonları denedim birebir olarak. Ama sonuç değişmedi. Sorunu tekrar etmek gerekirse. Dosya açmada sorun yok sadece txt dosyasına yazamıyorum.

Farklı kütüphane bir kütüphaneye ihtiyacım var.

STM32F103 ve SPI kullanarak haberleşen bir SD kart örneği verebilecek olan var mı?  Bu işi bu sefer çözeceğim. Bazı deney kartları ile örnek uygulamalar gelebiliyor. Elinizde öyle örnek uygulamalar var ise paylaşabilirmisiniz?

burası yardımcı olabilir belki
https://ralimtek.com/Stm32_SPI_SD/
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: Mucit23 - 20 Ekim 2017, 16:15:23
Hal library ile iş daha berbat bir hal aldı açıkçası.

CubeMX ile FATFS projeye ekleyerek sıfırdan bir proje oluşturdum. Normalde CubeMX FatFS kütüphanelerini projeye otomatik ekliyor. Ayrıca user_diskio diye bir dosya oluşturuyor. Kullanıcı bu dosya içerisine gerekli fonksiyonları yazması gerekiyor. Ben sağolsun @baran123 sayesinde bir örnek projeden user_diskio dosyasını ve diğer dosyaları alıp kendi projeme ekledim. Projeyi derleyebildim fakat init aşamasında    disk_initialize(SDFatFs.drv); kodunu çalıştırdığımda işlemci Hard_Fault'a düşüyor. Sebebini anlayamadım. İşin içindende çıkamayında ve HAL ile ilgili örnek bulamayınca tekrar STD library ile uğraşmaya başladım.

Asıl sorun hakkında önerilere ihtiyacım var. FatFS kütüphanesi SD kart içerisine dosya açıyor fakat f_write, f_puts gibi fonkaiyonlarla açtığım dosya içerisine yazma yapamıyorum. Bu sorun neden kaynaklanır?

Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: baran123 - 20 Ekim 2017, 16:50:39
Hocam heap alani kucuk oldunda sd fatfs duzgun calismiyordu. Ozellikle resim dosyasi acarken.
Belki bu problem olabilir.  Startup dosyasindan heap alanini buyutmeyi deneyebilirsniz
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: Mucit23 - 20 Ekim 2017, 23:36:50
Heap degerini 0x400 yaptım değişen yok malesef.


Donanımda birde şöyle bir sıkıntı var. Elimde sd kart yuvası doğrudan yoktu. Arduinonun sd modülü var onu kullanıyorum. Uzerinde level shifter vs var. Acaba bundan kaynaklı bir sorun olabilirmi? Doğrudan mikro sd adaptörüne pin lehimleyip kullanmayı deneyeceğim. Çünkü sd init cok geç olumlu cevap veriyor. Birkac defa sd init işlemini tekrarlamam gerekiyor. Eğer hepsinden olumlu cevap gelirse dosya açılıyor. Fakat dosya içine birşey yazamıyorum.


Birde şunu sorayım. 


Hal kütüphanesi kullanılarak yapılan sd uygulamasında  sd kartı init etmek için disk.initialize fonksiyonunu çağırmak yetiyormu? user_diskio icerisindede benzer bir init fonksiyonu var. Disk.initializeyi çağırınca hard fault oluşuyor. Bilgisi olan varmı bu konuda?
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: baran123 - 21 Ekim 2017, 00:13:43
Hocam ben test için şu modülü kullanıyorum.
https://www.direnc.net/arduino-mini-sd-kart-modulu


Hocam elinizde logic analyzer varsa direk olarak sd kart pininden sinyallere bakın hata var mı yok mu anlarsınız.
O kadar geç cevap vermesi başlı başına bir problem zaten.
İsterseniz size bu modülden göndereyim ?
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: RaMu - 21 Ekim 2017, 12:13:21
Yazılım kısmında bir problem varsa
başka başka kartlarla çözülme ihtimali yüksek,
bir ihtimal daha var onuda söyleyeceğim;
Öncelikle 4GB 8GB kartlar ile deneme yap, çözüm olma ihtimali yüksek.
özellikle 4GB kart tavsiye ederim, birde farklı marka kart varsa onuda dene.


Yazılımsal diğer ihtimal dosya yazma fonksiyonları kapalı olabilir, birde
dosyaya yazma yapmak için OPEN_APPEND gibi bir fonksiyon kullanılıyor olabilir.
Ama Baran'ın çalışan örneğinde başka fonksiyon görünmüyor zaten.




SD kart beslemesinin düzgün olmasında fayda var.


Dönüştürücülü modül var elimde demişsin;
SD kart bütün pinleri ve beslemesi 2.7V~3.6V  yani ideali 3.3V
buna ters düşen bir şey olmasın.



Dönüştürücü yoksa, şu gayet güzel oluyor.
(https://cdn.instructables.com/FHX/CDNZ/FYAJCAIZ/FHXCDNZFYAJCAIZ.MEDIUM.jpg)
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: Mucit23 - 21 Ekim 2017, 12:25:12
Baran bendede aynısından var şuan zaten onunla deneme yapıyorum. O halde modülden kaynaklı bir problem olmaması gerekir.

Ama @RaMu nun resimde gösterdiğini denemeyi düşünüyorum. Her iki donanımda 3.3v ile çalıştığından dolayı araya level shifter gibi ek donanımların girmesine gerek yok.

Bunları deneyip sonucu yazacağım.

Dün ufak bi kaza yaşadım sag el bileğimde ufak bir kırık oluştu. Sağ elim alçılı. Bu yuzden işler biraz yavaşlayacak gibi  :-\
Başlık: Ynt: STM32F103 FatFS Dosya açma sorunu
Gönderen: Mucit23 - 28 Ekim 2017, 22:33:53
Sonunda çalışan bir kütüphane buldum. Herşey düzeldi. Tekrar HAL platformuna gecmem gerekti ama cokda önemli degil. STD library için spi rutinlerini düzenlemem yeterli