[elektro] STM32F4 discovery I2S modul config

Pal Lukacs ekegep at yahoo.com
Thu Jul 18 20:43:29 CEST 2013


Sziasztok !

STM32F4 discoveryn I2S modul konfiggal kapcsolatos segitsegre lenne szuksegem.

ADC van rajta, fs=32kHz, 24bit.
32kHz*2csatorna*32bit orajelnek kellene lenni (bit clock, vagyis CK) es 256*32kHz kellene legyen a system clock (SClK). Ehelyett az SClK 2.6MHz, es a bit clock (CK) 600kHz. 

(elnezest, a nagy l betum nem mukodik)

Idezem az ide tartozo kod reszletet, hatha valakinek van otlete.

...
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
...

I2S_InitTypeDef I2S2_InitStructure;

SPI_I2S_DeInit(SPI2); // ERRATA: deinitialize i2s2 aka. spi2

I2S2_InitStructure.I2S_Standard    = I2S_Standard_Phillips; 

I2S2_InitStructure.I2S_DataFormat  = I2S_DataFormat_24b;  // 
I2S2_InitStructure.I2S_MCLKOutput  = I2S_MCLKOutput_Enable;
I2S2_InitStructure.I2S_AudioFreq   = I2S_AudioFreq_32k;   //  
I2S2_InitStructure.I2S_CPOL        = I2S_CPOL_Low;        // 
I2S2_InitStructure.I2S_Mode        = I2S_Mode_MasterRx; // 
I2S_Init(SPI2, &I2S2_InitStructure);


es a system fileban a pll config :

/******************************************************************************/ 
/*                          I2S clock configuration                           */ 
/******************************************************************************/ 
  /* PLLI2S clock used as I2S clock source */ 
  RCC->CFGR &= ~RCC_CFGR_I2SSRC; 
 
  /* Configure PLLI2S */ 
  RCC->PLLI2SCFGR = (PLLI2S_N << 6) | (PLLI2S_R << 28); 
 
  /* Enable PLLI2S */ 
  RCC->CR |= ((uint32_t)RCC_CR_PLLI2SON); 
 
  /* Wait till PLLI2S is ready */ 
  while((RCC->CR & RCC_CR_PLLI2SRDY) == 0) 
  { 
  }

ahol N, R: 

/* PLLI2S_VCO = (HSE_VALUE Or HSI_VALUE / PLL_M) * PLLI2S_N 
   I2SCLK = PLLI2S_VCO / PLLI2S_R */ 
#define PLLI2S_N   258 
#define PLLI2S_R   3

es  HSE 8 MHz, ezzel az I2SCLK 86 MHz-re adodik. 

A tobbi reszet az I2S_Init(...) szamolja (ez standard periph. library) 



Udv.
Szabi


More information about the Elektro mailing list