探索者开发板的音乐播放器的实验

2019-07-20 06:30发布

本帖最后由 luojue10330 于 2017-4-19 15:03 编辑

第一个问题:
GPIO_PinAFConfig(GPIOB,GPIO_PinSource12,GPIO_AF_SPI2); //PB12,AF5  I2S_LRCK
GPIO_PinAFConfig(GPIOB,GPIO_PinSource13,GPIO_AF_SPI2); //PB13,AF5  I2S_SCLK
GPIO_PinAFConfig(GPIOC,GPIO_PinSource3,GPIO_AF_SPI2); //PC3 ,AF5  I2S_DACDATA
GPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF_SPI2); //PC6 ,AF5  I2S_MCK
GPIO_PinAFConfig(GPIOC,GPIO_PinSource2,GPIO_AF6_SPI2); //PC2 ,AF6  I2S_ADCDATA  I2S2ext_SD是AF6!
前四行复用是AF5,为什么可以直接写成GPIO_AF_SPI2?

第二个问题:
如果只实现音乐播放功能,不要录音机的功能,是不是可以不接I2S_SDOUT(ADCDAT)这根线,即I2S不工作在全双工模式,而是单工模式?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
luojue10330
2019-07-20 19:57
void I2S2_Init(u16 I2S_Standard,u16 I2S_Mode,u16 I2S_Clock_Polarity,u16 I2S_DataFormat)
{
    I2S_InitTypeDef I2S_InitStructure;
       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);//使能SPI3时钟
       
        RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2,ENABLE); //复位SPI3
        RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2,DISABLE);//结束复位
  
        I2S_InitStructure.I2S_Mode=I2S_Mode;//IIS模式
        I2S_InitStructure.I2S_Standard=I2S_Standard;//IIS标准
        I2S_InitStructure.I2S_DataFormat=I2S_DataFormat;//IIS数据长度
        I2S_InitStructure.I2S_MCLKOutput=I2S_MCLKOutput_Disable;//主时钟输出禁止
        I2S_InitStructure.I2S_AudioFreq=I2S_AudioFreq_Default;//IIS频率设置
        I2S_InitStructure.I2S_CPOL=I2S_Clock_Polarity;//空闲状态时钟电平
        I2S_Init(SPI2,&I2S_InitStructure);//初始化IIS

        SPI_I2S_DMACmd(SPI2,SPI_I2S_DMAReq_Tx,ENABLE);//SPI2 TX DMA请求使能.
    I2S_Cmd(SPI2,ENABLE);//SPI2 I2S EN使能.       
}
函数中为什么要先复位SPI3再停止复位??好多程序里都是这样。。有什么作用呢?

一周热门 更多>