STM32F4 discovery kulaklık çıkışından ses alma örnekleri

Başlatan z, 30 Aralık 2012, 15:44:39

z

STM32F4 discovery kulaklık çıkışından ses alma örnekleri yapan varsa kod örnekleri verebilirmi?

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

pisayisi

St nin firmware paketinde, audio_playback alt dizininde, usb portlardan birine bağlanan flash disk üzerinde fatfs ile wav dosyaları 1024 byte lık diziler halinde dma dahili sram ve i2s audio arabirimini kullanarak kulaklıktan çalan örnekler mevcut. Mikrofon girişi ile wav kayıt yapma imkanı da var...

http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f4discovery_fw.zip

[IMG]http://imageshack.us/a/img826/315/stm32wav.jpg[/img]
Murat

Firzen

Bence bir MikroC for ARM ın içindeki Sound kütühanesine bakmanı öneririm denemedim ama sana o kütphanenin yapmış olduğu örneği gönderiyorum.

void Tone1() {  Sound_Play(659, 250);   // Frequency = 659Hz, duration = 250ms}
void Tone2() {  Sound_Play(698, 250);   // Frequency = 698Hz, duration = 250ms}
void Tone3() {  Sound_Play(784, 250);   // Frequency = 784Hz, duration = 250ms}
void Melody() {           // Plays the melody "Yellow house"
  Tone1(); Tone2(); Tone3(); Tone3();  Tone1(); Tone2(); Tone3(); Tone3();
  Tone1(); Tone2(); Tone3();  Tone1(); Tone2(); Tone3(); Tone3();
  Tone1(); Tone2(); Tone3();  Tone3(); Tone3(); Tone2(); Tone2(); Tone1();}
void ToneA() {  Sound_Play( 880, 50);}void ToneC() {  Sound_Play(1046, 50);}
void ToneE() {  Sound_Play(1318, 50);}void Melody2() {  unsigned short i;
  for (i = 9; i > 0; i--) {    ToneA(); ToneC(); ToneE();  }}void main() {
  GPIO_Config(&GPIO_PORTJ_DATA, 0b11111000, _GPIO_DIR_INPUT, _GPIO_CFG_DIGITAL_ENABLE, 0);
  Sound_Init(&GPIO_PORTA_DATA, 6);
  Sound_Play(880, 1000);            // Play sound at 880Hz for 1 second
  while (1) {
    if (Button(&GPIO_PORTJ_DATA,7,1,1))       // GPIO_PORTJ.B7 plays Tone1
      Tone1();
    while (GPIO_PORTJ_DATA7_bit);                // Wait for button to be released
    if (Button(&GPIO_PORTJ_DATA,6,1,1))       // GPIO_PORTJ.B6 plays Tone2
      Tone2();
    while (GPIO_PORTJ_DATA6_bit);                // Wait for button to be released
    if (Button(&GPIO_PORTJ_DATA,5,1,1))       // GPIO_PORTJ.B5 plays Tone3
      Tone3();
    while (GPIO_PORTJ_DATA5_bit);                // Wait for button to be released
    if (Button(&GPIO_PORTJ_DATA,4,1,1))       // GPIO_PORTJ.B4 plays Melody2
      Melody2();
    while (GPIO_PORTJ_DATA4_bit);                // Wait for button to be released
    if (Button(&GPIO_PORTJ_DATA,3,1,1))       // GPIO_PORTJ.B3 plays Melody
      Melody();
    while (GPIO_PORTJ_DATA3_bit);                // Wait for button to be released
  }}


eğer yapınca bana da haber verirsen sevinirim finallerim olduğu için bu aralar ara verdim onlara bakmaya.
Kararsız...

Deli_Nedym

//   DAC1 kullanacagiz
 
     GPIOA->MODER=0xA8000200;        // GPIOA4 Analog inp yapildi
     RCC->APB1ENR|=1<<29;            // Artislik olsun (0x20000000 ile OR yap demek)
     DAC->CR=0x00000003;             // DAC1 ve Bufferi aktif edelim
 
//   Timer 7 ile calisalim
 
     RCC->APB1ENR|=0x00000020;       // Timer7 CLK'u aktif edelim (84 Mhz)
     TIM7->CR1=0x0080;               // Otomatik Reload
     TIM7->PSC =0;                   // Prescaler cikis frekansimiz 84Mhz
     TIM7->ARR =84000000/SampleRate; // Counter, Decimal 1 olunca basa donsun. 
     TIM7->DIER=0x0001;              // Update Int enable
     NVIC->ISER[1] = 0X00800000;     // NVIC de Timer 7 interrupta izin verelim
     TIM7->CR1|=0x0001;              // Counter Enable
} 
 
void TIM7_IRQHandler()
{
static int Indx=0;
 
    TIM7->SR=0;                       // Timer Int Flagini silelim
    if (Indx<NumOfData)
      {
        DAC->DHR12R1=Wav[Indx]<<4;
        Indx++;
      }
    GPIOD->ODR^=0xF000;
} 
 
int main()
{
    while(1);
}


wav.c proje klasöründe ve kodun en üstünde #include ile tanımlı. Kod derlenince bir hata vermiyor ancak pa4 pininden herhangi bir ses çıkışı alamadım. Farklı wav.c dosyaları oluşturup onlarla da denedim fakat sonuç hep aynı