I2S 的接收中断有问题,已初始化就自己进去了,这是什么情况?

2019-07-14 18:12发布

我想寻求一些帮助 我现在在调试 I2S的接受中断 以下是我的 I2S的基本配置

/* CODEC_I2S pins configuration: WS, SCK -----------------------------*/
  GPIO_InitStructure.GPIO_Pin = CODEC_I2S_WS_PIN | CODEC_I2S_SCK_PIN ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOB, &GPIO_InitStructure);     
  /* Connect pins to I2S peripheral  */  
  GPIO_PinAFConfig(GPIOB, CODEC_I2S_WS_PINSRC, CODEC_I2S_GPIO_AF);  
  GPIO_PinAFConfig(GPIOB, CODEC_I2S_SCK_PINSRC, CODEC_I2S_GPIO_AF);
                /* CODEC_I2S pins configuration: SDIN -----------------------------*/         
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_3;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;         
  GPIO_Init(GPIOC, &GPIO_InitStructure);
        GPIO_PinAFConfig(GPIOC, CODEC_I2S_SDOUT_PINSRC, CODEC_I2S_GPIO_AF);         
        /* CODEC_I2S pins configuration: MCK pin */
  GPIO_InitStructure.GPIO_Pin = CODEC_I2S_MCK_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);         
        GPIO_PinAFConfig(GPIOC, CODEC_I2S_MCK_PINSRC, CODEC_I2S_GPIO_AF);
        
        SPI_I2S_DeInit(CODEC_I2S);
        I2S_StructInit(&I2S_InitStructure);
  I2S_InitStructure.I2S_AudioFreq = I2S_AudioFreq_48k;
        //I2S_Standard_PCMShort
  I2S_InitStructure.I2S_Standard =I2S_Standard_Phillips; //I2S_Standard_Phillips
  I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_16b;
  I2S_InitStructure.I2S_CPOL = I2S_CPOL_Low;
        //I2S_Mode_MasterRx;
  I2S_InitStructure.I2S_Mode = I2S_Mode_MasterRx;
        I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_Enable;
  I2S_Init(CODEC_I2S, &I2S_InitStructure);



        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
        NVIC_InitStructure.NVIC_IRQChannel = SPI2_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);

I2S_Cmd(CODEC_I2S,  ENABLE);
SPI_I2S_ITConfig(SPI2,SPI2,SPI_I2S_IT_RXNE  ,ENABLE);

就是这样配置的 但是 I2S一使能 就直接跳到 接收中断里去了 但是 我什么数据也没有 输入啊?



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
梅子74
1楼-- · 2019-07-14 20:20
我感觉没什么这样配置没有什么错误啊?到底是什么情况呢?
梅子74
2楼-- · 2019-07-15 02:09
 精彩回答 2  元偷偷看……
TOPCB
3楼-- · 2019-07-15 05:15
进入中断以后,看一下寄存器到底是发生了什么中断。
梅子74
4楼-- · 2019-07-15 05:23
进入中断后 寄存器发生的是接收中断
TOPCB
5楼-- · 2019-07-15 10:59
把配置顺序改一下。先配饰I2S,最后再开启中断。可能是开启I2S的时候,导致产生的空中断。

一周热门 更多>