[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