sd karttan wav dosyasını stm32f407 ile çalma

Başlatan emre salman, 30 Mart 2014, 18:27:58

emre salman

herkese  iyi günler mikroc pro for arm derleyicindeki mmc kütüphanesi ile  mmc karttan wav dosyası okutup çaldırmaya çalışıyorum wav dosyam 8bit mono
ama hala bu işi başarmış değilim daha önce mikroc ile arm programlama kitabında anlatıldıgı gibi flasha wav dosyasının hex kodlarını gömüp çaldırmıştım şimdi sd kart kullanıp çaldırıyım dedim ama başarılı olamadım :S
kodlar aşağıdaki gibidir muhtemelen çok büyük bir yanlışım var daha yeniyim bu konularda yanlısım neredeyse bana gösterebilir misiniz


sbit Mmc_Chip_Select at GPIOE_ODR.B3;
int i=0;
int cnt=0;
unsigned long z=0;
unsigned short datam;
unsigned long zz;
unsigned long zx;
unsigned long size;
unsigned short duty1;
unsigned long sectorNo;
unsigned short veri[512];


void kurulum()
{
RCC_APB1ENR.TIM7EN = 1;
TIM7_CR1.CEN = 0;
TIM7_PSC = 0;
TIM7_ARR = 10499;
NVIC_IntEnable(IVT_INT_TIM7);
TIM7_DIER.UIE = 1;
TIM7_CR1.CEN = 1;
RCC_APB1ENR.DACEN=1;

GPIO_Analog_Input(&GPIOA_BASE,_GPIO_PINMASK_4);
DAC_CR=1;
Mmc_Fat_Init();
Mmc_Fat_Assign("DENEME1.WAV",0x01);
Mmc_Fat_Reset(&size);
}
void mmc(){
Mmc_Fat_Read(&datam);
}



void main() {
kurulum();
mmc();

}

void Timer7_interrupt()iv IVT_INT_TIM7
{
 TIM7_SR.UIF = 0;
 DAC_DHR12R1=(datam);
 i++;
 if(i==512)i=0;
}

LukeSkywalker


tntgonzales

dostum bende bu uygulamayı yaptım ama sesi çok kısıktı senin hoparlörden gelen ses nasıldı ?

emre salman

#3
evet hocam onu sonradan bende fark ettim şimdi onunla uğraşıyorum ama sonuç alamadım
yeni kodlarım böyle

sbit Mmc_Chip_Select at GPIOE_ODR.B3;
int i=0;
int cnt=0;
unsigned long z=0;
unsigned short datam;
unsigned long zz;
unsigned long zx;
unsigned long size;
unsigned short duty1;
unsigned long sectorNo;
unsigned short veri[512];


void kurulum()
{
RCC_APB1ENR.TIM7EN = 1;
TIM7_CR1.CEN = 0;
TIM7_PSC = 0;
TIM7_ARR = 10499;
NVIC_IntEnable(IVT_INT_TIM7);
TIM7_DIER.UIE = 1;
TIM7_CR1.CEN = 1;
RCC_APB1ENR.DACEN=1;
SPI3_Init();             //hocam bu şekilde kullanabilir miyim acaba böyle yaptım ses alamadım yine
Mmc_Fat_Init();
Mmc_Fat_Assign("DENEME1.WAV",0x01);
Mmc_Fat_Reset(&size);
}
void mmc(){
Mmc_Fat_Read(&datam);
}



void main() {
kurulum();
mmc();
while(1){}

}

void Timer7_interrupt()iv IVT_INT_TIM7
{
 TIM7_SR.UIF = 0;
 DAC_DHR12R1=(datam);
 i++;
 if(i==512)i=0;
}


mesaj birleştirme:: 30 Mart 2014, 19:01:37

hocam ben henüz ses çıkartamadım ki
bir ses çıkartabilsem kısıkta olsa bir aşama atlamış olacam acaba siz nasıl yaptınız benim hatam nerde siz kodlarınızı paylaşabilir misiniz burda

tntgonzales

ben sd karttan okutmadım dostum. kitaptaki uygulamayı yaptım.orada da ses kısık geldi. sen de o kitaptaki uygulamayı yaptım dediğin için merak ettim nasıl yüksek ses aldığını sorudm

LukeSkywalker

SPI1_Init_Advanced(_SPI_FPCLK_DIV64, _SPI_MASTER | _SPI_8_BIT |
                     _SPI_CLK_IDLE_LOW | _SPI_FIRST_CLK_EDGE_TRANSITION |
                     _SPI_MSB_FIRST | _SPI_SS_DISABLE | _SPI_SSM_ENABLE | _SPI_SSI_1,
                     &_GPIO_MODULE_SPI1_PB345);                // PB3= SCK, PB4=MISO, PB5=MOSI
Delay_ms(100);
   if (!Mmc_Fat_Init()) {// FAT init edildikten sonra Hız coşturuluyor..
  
    // reinitialize spi at higher speed
    SPI1_Init_Advanced(_SPI_FPCLK_DIV4, _SPI_MASTER | _SPI_8_BIT |
                       _SPI_CLK_IDLE_LOW | _SPI_FIRST_CLK_EDGE_TRANSITION |
                       _SPI_MSB_FIRST | _SPI_SS_DISABLE | _SPI_SSM_ENABLE | _SPI_SSI_1,
                       &_GPIO_MODULE_SPI1_PB345);


Hoparlörü direk PA4'e bağlayamazsınız. Pini veya işlemciyi yakabilirsiniz. Kitapta bunun uyarısını yaptım. Kulaklığa veya herhangi bir ses yükseltecine bağlayın.

emre salman

ses yükseltecine bağladım hocam zaten direk bağlamadım şimdi verdiğiniz spı_initi deneyip size geri dönecem

LukeSkywalker

Sana yazmadım zaten, üstteki arkadaşa yazdım onu...

emre salman

hocam ekledim sizin verdiklerinizide ama hala bir ses alamadım :(

sanırım benım dac sürme şeklimde bir hata var ya sizide çok uğraştırıyorum ama henüz bir ilerleme kaydedemedim hala birde spı1 bağlantıları yazdığınız gibi demi
sbit Mmc_Chip_Select at GPIOE_ODR.B3;
int i=0;
int cnt=0;
unsigned long z=0;
unsigned short datam;
unsigned long zz;
unsigned long zx;
unsigned long size;
unsigned short duty1;
unsigned long sectorNo;
unsigned short veri[512];


void kurulum()
{
RCC_APB1ENR.TIM7EN = 1;
TIM7_CR1.CEN = 0;
TIM7_PSC = 0;
TIM7_ARR = 10499;
NVIC_IntEnable(IVT_INT_TIM7);
TIM7_DIER.UIE = 1;
TIM7_CR1.CEN = 1;
RCC_APB1ENR.DACEN=1;
SPI1_Init_Advanced(_SPI_FPCLK_DIV64, _SPI_MASTER | _SPI_8_BIT |
                     _SPI_CLK_IDLE_LOW | _SPI_FIRST_CLK_EDGE_TRANSITION |
                     _SPI_MSB_FIRST | _SPI_SS_DISABLE | _SPI_SSM_ENABLE | _SPI_SSI_1,
                     &_GPIO_MODULE_SPI1_PB345);                // PB3= SCK, PB4=MISO, PB5=MOSI
Delay_ms(100);
if (!Mmc_Fat_Init()) {// FAT init edildikten sonra Hız coşturuluyor..

    // reinitialize spi at higher speed
    SPI1_Init_Advanced(_SPI_FPCLK_DIV4, _SPI_MASTER | _SPI_8_BIT |
                       _SPI_CLK_IDLE_LOW | _SPI_FIRST_CLK_EDGE_TRANSITION |
                       _SPI_MSB_FIRST | _SPI_SS_DISABLE | _SPI_SSM_ENABLE | _SPI_SSI_1,
                       &_GPIO_MODULE_SPI1_PB345);            //hocam bu şekilde kullanabilir miyim acaba böyle yaptım ses alamadım yine
                       }
Mmc_Fat_Init();
Mmc_Fat_Assign("DENEME1.WAV",0x01);
Mmc_Fat_Reset(&size);
}
void mmc()
{
 Mmc_Fat_Read(&datam);
}

void main() {
kurulum();
mmc();
while(1){}

}

void Timer7_interrupt()iv IVT_INT_TIM7
{
 TIM7_SR.UIF = 0;
 DAC_DHR12R1=(datam);
 i++;
 if(i==512)i=0;
}

LukeSkywalker

#9

sbit Mmc_Chip_Select at GPIOE_ODR.B3;
int i=0;
int cnt=0;
unsigned long z=0;
unsigned short datam;
unsigned long zz;
unsigned long zx;
unsigned long size;
unsigned short duty1;
unsigned long sectorNo;
unsigned short veri[512];


void kurulum()
{
RCC_APB1ENR.TIM7EN = 1;
TIM7_CR1.CEN = 0;
TIM7_PSC = 0;
TIM7_ARR = 10499;
NVIC_IntEnable(IVT_INT_TIM7);
TIM7_DIER.UIE = 1;
TIM7_CR1.CEN = 1;
RCC_APB1ENR.DACEN=1;
SPI1_Init_Advanced(_SPI_FPCLK_DIV64, _SPI_MASTER | _SPI_8_BIT |
                     _SPI_CLK_IDLE_LOW | _SPI_FIRST_CLK_EDGE_TRANSITION |
                     _SPI_MSB_FIRST | _SPI_SS_DISABLE | _SPI_SSM_ENABLE | _SPI_SSI_1,
                     &_GPIO_MODULE_SPI1_PB345);                // PB3= SCK, PB4=MISO, PB5=MOSI
Delay_ms(100);
if (!Mmc_Fat_Init()) {// FAT init edildikten sonra Hız coşturuluyor..

    // reinitialize spi at higher speed
    SPI1_Init_Advanced(_SPI_FPCLK_DIV4, _SPI_MASTER | _SPI_8_BIT |
                       _SPI_CLK_IDLE_LOW | _SPI_FIRST_CLK_EDGE_TRANSITION |
                       _SPI_MSB_FIRST | _SPI_SS_DISABLE | _SPI_SSM_ENABLE | _SPI_SSI_1,
                       &_GPIO_MODULE_SPI1_PB345);            //hocam bu şekilde kullanabilir miyim acaba böyle yaptım ses alamadım yine
                       }
Mmc_Fat_Assign("DENEME1.WAV",0x01);
Mmc_Fat_Reset(&size);
}
void mmc()
{
 Mmc_Fat_Read(&datam);
}

void main() {
kurulum();
while(1){}

}

void Timer7_interrupt()iv IVT_INT_TIM7
{
 TIM7_SR.UIF = 0;
 mmc();
 DAC_DHR12R1=(datam);
 i++;
 if(i==size)i=0;
}



mesaj birleştirme:: 30 Mart 2014, 20:41:10

Böyle dene..

emre salman

hocam yok olmadı ya acaba frekans ayarlarıındamı hata yapıyorum bölüm 3.5 teki gibi yani sayfa 66 daki gibi yapıyorum ayarlarıda

LukeSkywalker

SD kartı fat 16 olarak biçimlendirdin mi? Aynen buradaki gibi üyük harflerle DENEME1.WAV olarak isimlendirdin mi dosyayı?

emre salman

#12
hocam benim attığım wav dosyası 8khz ama 8 bit değilmiş şuan 8 bit yapmaya çalışıyorum ama en düşük 16 bit seçebiliyorum sizin elinizde 8 bit bir wav dosyası varsa onunla deneyeyim

mesaj birleştirme:: 31 Mart 2014, 11:23:12

recall programından ses kaydı yapıp onunla denedim yine hiç bir ses yok bağlantı hatası filanda yok çözemedim bir türlü :(

mesaj birleştirme:: 31 Mart 2014, 11:23:42

küçük harflerle yazmıstım fat16 olarak biçimlendirdim

mesaj birleştirme:: 31 Mart 2014, 11:26:48

hocam fat olarak biçimlendirdim ayırma birimi 16 kilobayt DENEME1.WAV dosya ama ses soluk yok :(

mesaj birleştirme:: 31 Mart 2014, 11:30:58

ayrıca reset tuşuna bastığım andada küçük bir dıt sesi geliyor ama bunun dip ses oldugunu düşünüyorum

mesaj birleştirme:: 30 Mart 2014, 20:53:57

hocam benim dac kullanım şeklim doğrumu DAC_DHR12R1=(datam); bu şekildemi kullanıyorum bence burda bir hata var :S
bunu DAC_DHR12R1=(datam); olarak değiştirdim birde unsigned short datam[512] yaptım yine olmadı


emre salman

#14
hocam hemen yarım saat içinde sizin gönderdiğiniz deniyecem çok teşekkür ederim ilgilendiğiniz için

mesaj birleştirme:: 30 Mart 2014, 21:44:20

Hocam şuan eve gelmek zorunda kaldım bir saate kadar iş yerine geri donecem anca o zaman deneye bilirim acaba siz denediniz mi bu programı onu merak ediyorum