|
楼主 |
发表于 2013-1-24 18:03:14
|
显示全部楼层
dreamc 发表于 2013-1-24 17:20
从模式时当然是帧时钟是8K啊,主时钟应该是256X8K才对啊。我觉得你还是用主模式。你可以贴你的程序出来看 ...
FM1188 运行靠无源晶振。 没有主时钟引脚, 只有帧时钟、位时钟
FM1188工作于从模式、PCM数据格式、16Bit位宽- //采集音频数据端
- void IIS3_config(void)
- {
- GPIO_InitTypeDef GPIOInitStruct;
- I2S_InitTypeDef I2S_InitStruct;
- NVIC_InitTypeDef NVIC_InitStruct;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3,ENABLE); //使能IIS3时钟
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE); //使能GPIPB、GPIPB、AFIO输出口时钟
- SPI_I2S_DeInit(SPI3); //SPI2复位
- GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); //关闭JTAG调试功能
- GPIOInitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIOInitStruct.GPIO_Speed = GPIO_Speed_50MHz;
- GPIOInitStruct.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_5;
- GPIO_Init(GPIOB,&GPIOInitStruct);
- GPIOInitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIOInitStruct.GPIO_Speed = GPIO_Speed_50MHz;
- GPIOInitStruct.GPIO_Pin = GPIO_Pin_15;
- GPIO_Init(GPIOA,&GPIOInitStruct);
- I2S_InitStruct.I2S_AudioFreq = I2S_AudioFreq_8k; // Audio sllect frequery 16K
- I2S_InitStruct.I2S_CPOL = I2S_CPOL_High; // clock of steady is hight
- I2S_InitStruct.I2S_DataFormat = I2S_DataFormat_16b; // data format of 16 Bit
- I2S_InitStruct.I2S_MCLKOutput = I2S_MCLKOutput_Disable; //Disenable MCLK output
- I2S_InitStruct.I2S_Mode = I2S_Mode_MasterRx;
- I2S_InitStruct.I2S_Standard = I2S_Standard_PCMShort; //PCM format
-
- I2S_Init(SPI3,&I2S_InitStruct);
- SPI3->I2SCFGR |= (2 << 1); //frame lenght 32bit
- SPI_I2S_DMACmd(SPI3,SPI_I2S_DMAReq_Rx,ENABLE); //Enable IIS2 transfer DMA
- I2S_Cmd(SPI3,ENABLE);
- NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000);
- NVIC_InitStruct.NVIC_IRQChannel = SPI3_IRQChannel;
- NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
- NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;
- NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
- NVIC_Init(&NVIC_InitStruct);
- }
复制代码 |
|