Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

SDIO

Başlatan muhittin_kaplan, 08 Eylül 2013, 15:15:41

muhittin_kaplan

uSD hafıza yı SD hafıza çevirme aparatı ile kullanarak, SDIO üzerinden (Sanırım Bu çevresel ünite bunun için yapılmış) haberleştirmek birşeyler yazmak ve okumak istiyorum, öneriniz tecrübeniz nelerdir ?
(Şu an İçin FAT istemiyorum.)

muhittin_kaplan

#1
Bağlantıyı Yaparken uSD-SD kart Çeviriciye Göre Yapacağız Değil mi ?

mesaj birleştirme:: 08 Eylül 2013, 19:34:48

;D

esensoy

Evet SD kart için olan pin çıkışlarını kullanmak gerekiyor,
En tehlikeli an "zafer" anıdır.

muhittin_kaplan

#3
Hallettim Hocam. Şu An okuyor ve yazıyorum.
Sırada FAT var. (ihtiyacım olurmu aslında)

volkan konak-hem okudum hemde yazdım

mesaj birleştirme:: 08 Eylül 2013, 22:11:54

Elm Cihan ın FAT kütüphanesi SDIO kullanamıyormuş.SPI kullanıyormuş.

ground

⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

ErsinErce

http://www.4shared.com/rar/MrEKneHj/FatFs.html

SDIO ile yapılmışı hocam  :)
#include "diskio.h"
#include "ff.h"
#include "ff_rtc_if.h"
#include "rtc_support.h"
#include "ff_support.h"

void SysTick_Handler(void)
{
	ff_support_timerproc();
	
}


UINT totalbyte;
FATFS surucu;
FIL dosya;
FRESULT res;
disk_initialize(0);
f_mount(0,&surucu);
res = f_open (&dosya,"song.mp3",FA_OPEN_EXISTING | FA_READ);
if(res==FR_OK){
f_read(&dosya,Buffer,1024,&totalbyte);
f_sync(&dosya);
f_close(&dosya);

muhittin_kaplan

Hocalar,
(etkili bir giriş oldu)
SD kartın yapısını bilmediğimden   SD_ReadSingleBlock(inbuf, 3000); fonksiyonunu

void SD_ReadSingleBlock(uint8_t *buf, uint32_t blk) {
  uint32_t ReadAddr;
  uint32_t response;

  //uint32_t response;
  if (SDType==1) {  //High Capacity
    ReadAddr=blk;
  } else if (SDType==0) {//Standard Capacity
    ReadAddr=blk*512;
  }

  //Send CMD17:READ_SINGLE_BLOCK
  SD_Command(CMD17, SHRESP, ReadAddr);
  SD_Response(&response, RESP_R1);

  //Card is now ready to send some data from the Data lines. Start actual data transmission
  SD_StartBlockTransfer(buf, 512, SD2UM);

  //Wait for transmission to end
  SD_WaitTransmissionEnd();
}

ile yapmış. 3000 değeri ile neyi belirliyorum ?
(adreside, neden 512 ile çarpmış )

CLR

çünkü bir sector 512 byte'tan oluşur, x ile 512 yi çarpınca x sector'ünü okumuş (veya yazmış) olursun
Knowledge and Experience are Power

muhittin_kaplan

bu sectörün 512 byte olması sd kart a ait bir özellik mi ?

CLR

yeni kartlarda bu değişebiliyor ama istersen format atarken 512'ye ayarlayabilirsin veya bootsectoru okuyup okuduğun byte değeri ile çarpabilirsin sana kalmış yani
Knowledge and Experience are Power

muhittin_kaplan

Hocam Şu an FAT ile ilgili çalışmıyorum. Formatlı bir durum yok. raw yazıyor ve okuyorum.

CLR

aslında fat'lik bir durum var çünkü sd kart büyük ihtimalle fat16 veya 32 yüklü
sen niye 512 ile çarpılıyor diye sordun bende içindeki sector byte sayısı 512 dedim, bu değerler file systemden geliyor
Knowledge and Experience are Power

muhittin_kaplan

Evet Muhtemel Formatlıdır.
Teşekkür ederim.