Forum: Digitale Signalverarbeitung / DSP / Machine Learning AVR32 AT32 und I2S Mikrofon


von Ed M. (edmu)


Lesenswert?

Guten Tag
ich habe folgendes Projekt:
Ich möchte ein Mikrofon mit einer I2S Schnittstelle an einen AT32UC3A 
anbinden. Das Mikrofon ist Slave und kann nur senden.
Jetzt versuche ich schon seit längerem, die SSC bei dem AT32 zu 
aktivieren.
Zum testen habe ich erst einmal die I2S als Master eingestellt und 
sendet (1 Byte). Dieses habe ich mit einem Oszi auf dem Clock-Ausgang 
erst einmal gemessen und funktioniert.

Hier meine Init-Funktion:
1
//init ssc Sound
2
void init_ssc(void){
3
  
4
  //map gpio pins
5
  static const gpio_map_t SSC_GPIO_MAPPING =
6
  {
7
    {AVR32_SSC_TX_CLOCK_0_PIN, AVR32_SSC_TX_CLOCK_0_FUNCTION },  // TX-Clock.
8
    {AVR32_SSC_TX_DATA_0_PIN, AVR32_SSC_TX_DATA_0_FUNCTION},  // TX-Data.
9
    {AVR32_SSC_TX_FRAME_SYNC_0_PIN, AVR32_SSC_TX_FRAME_SYNC_0_FUNCTION},  // TX-Frame-Sync.
10
    {AVR32_SSC_RX_CLOCK_0_PIN, AVR32_SSC_RX_CLOCK_0_FUNCTION },  // RX-Clock.
11
    {AVR32_SSC_RX_DATA_0_PIN, AVR32_SSC_RX_DATA_0_FUNCTION},  // RX-Data.
12
    {AVR32_SSC_RX_FRAME_SYNC_0_PIN, AVR32_SSC_RX_FRAME_SYNC_0_FUNCTION}  // RX-Frame-Sync.
13
    
14
  };
15
  
16
  // Assign I/Os to SSC
17
  gpio_enable_module(SSC_GPIO_MAPPING, sizeof(SSC_GPIO_MAPPING) / sizeof(SSC_GPIO_MAPPING[0]));
18
19
  //enable the clock for the spi controller
20
  sysclk_enable_pba_module(SYSCLK_SSC);
21
  
22
  
23
  
24
  ssc_i2s_init(SSC_Adr,  //Pointer SSC
25
        11025,    //sample_frequency The sample frequency given in Hz
26
        8,      //data_bit_res Number of significant data bits in an I2S channel frame
27
        8,      //frame_bit_res Total number of bits in an I2S channel frame
28
        SSC_I2S_MODE_STEREO_OUT,  //mode I2S-mode
29
        12000000);        //pba_hz The clock speed of the PBA bus in Hz
30
        
31
        
32
}

In der MAIN-Schleife habe ich folgendes eingearbeitet:
1
    //testen I2S SSC Schnittstelle
2
    ssc_i2s_transfer(SSC_Adr,0x01);
3
    
4
    ssc_status = ssc_i2s_get_status(SSC_Adr);

Der ssc_status liefert ein TXEN zurück, also Senden aktiviert.

So, senden als Master funktioniert und jetzt will ich eigentlich nur 
lesen.
hier die umgeschriebene Quelle:
1
  ssc_i2s_init(SSC_Adr,  //Pointer SSC
2
        22000,    //sample_frequency The sample frequency given in Hz
3
        8,      //data_bit_res Number of significant data bits in an I2S channel frame
4
        8,      //frame_bit_res Total number of bits in an I2S channel frame
5
        SSC_I2S_MODE_STEREO_IN,  //mode I2S-mode
6
        12000000);        //pba_hz The clock speed of the PBA bus in Hz
Ich habe den Mode auf STEREO_IN gesetzt und der Clock wird ausgegeben. 
Aber wie komme ich an das gelesene Byte/Word dran. Es gibt keine 
vorgegebene Funktion in der AtmelStudio Bibliothek.
Wer kann helfen?

mfg edmu

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.