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;
}
SPI init hani?
dostum bende bu uygulamayı yaptım ama sesi çok kısıktı senin hoparlörden gelen ses nasıldı ?
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
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
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.
ses yükseltecine bağladım hocam zaten direk bağlamadım şimdi verdiğiniz spı_initi deneyip size geri dönecem
Sana yazmadım zaten, üstteki arkadaşa yazdım onu...
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;
}
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..
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
SD kartı fat 16 olarak biçimlendirdin mi? Aynen buradaki gibi üyük harflerle DENEME1.WAV olarak isimlendirdin mi dosyayı?
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ı
http://www.dosya.tc/server26/dhfsql/MMCKartWavPlayer.rar.html (http://www.dosya.tc/server26/dhfsql/MMCKartWavPlayer.rar.html)
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
hocam şuan deniyorum ama bunuda çalıştıramadım çok mu beceriksizim anlamadım ki hiç ses alamıyorum ilk başta besleme voltajı geldiğindeki hışırtı hariç
Verdigim ornek calisan ornektir. Cs pinini degistirmistim.
mesaj birleştirme:: 30 Mart 2014, 22:12:36
Bir de hangi ledler yaniyor?
mavi ile kırmızı yanıyor cs pinini pc3e aldım sizin örneği denerken
mesaj birleştirme:: 31 Mart 2014, 13:24:39
şuandada sadece mavi yanıyor reset attıgımda bazen tek basına kırmızı yanıyor bazen mavi ya anlamadım kesinlikle bağlantıda veya mmc kartta hata var ama bağlantı uçları filan kaç kere kontrol ettim doğru
mesaj birleştirme:: 31 Mart 2014, 13:26:18
beslemeyi kapatıp her açtığımda ledlerin durumu değişiyor şuandada hiç led yanmıyor :S
mesaj birleştirme:: 30 Mart 2014, 22:28:46
hocam tamamen silip tekrar verdiğiniz programı yükledim ve çalıştı sorunsuzz elinize saglık çok teşekkür ederim hakkınız vallaha ödenmez bir gün boyunca üşenmediniz benimle uğraştınız ne kadar teşekkür etsem az
Kolay gelsin..
konu başarıya ulaşmıştır @LukeSkywalker hocamın verdiği kodlar sorunsuz bir şekilde çalışmaktadır bu konuda proje yapmak isteyenlere ışık olsun kendisine sonsuz şükranlarımı sunarım
Merhabalar.Ben de sizin gibi STm32f4 kullanarak sd karttan vaw dosyası kullanarak kulaklıktan ses almaya çalışıyoruz.Fakat SD kart ile stm arasındaki bağlantılarda problem yaşadığımızdan dolayı işlemi gerçekleştiremedik.Bağlantının nasıl yapılacağı konusunda yardımcı olabilirseniz çok sevinirim.Şimdiden teşekkürler.
@LukeSkywalker hocamızın verdiği kodlarımı kullandınız ?