高级会员

- 积分
- 921
- 金钱
- 921
- 注册时间
- 2016-4-20
- 在线时间
- 169 小时
|
5金钱
我使能了两条iis总线,目的是接收两路iis音频信号。现在总线时钟已经发出来了。我用逻辑分析仪看了没有问题,数据总线上也有数据。这两路iis总线两路收发共4路DMA通道使能。
我的两路发送中断没有执行任何操作。
两路接收中断接收dsp发过来的iis数据,但是只有dma1中断接收到数据并且能顺利进入中断。另一路iis通道一直没有进入中断。我看了dma缓存的buf,buf里面一直有数据过来的。
我期望第一路、第二路接收中断能不能响应中断,但是检查中断的时候发现第二路的发送中断居然会一直有中断,我检查了dma初始化,没有发现具体问题。@正点原子
/************************第一路发送中断*************************************/
void DMA1_Stream4_IRQHandler(void)
{
if(DMA_GetITStatus(DMA1_Stream4,DMA_IT_TCIF4)==SET)
{
DMA_ClearITPendingBit(DMA1_Stream4,DMA_IT_TCIF4);
}
}
/************************第一路接收中断*************************************/ 这里中断响应正常
void DMA1_Stream3_IRQHandler(void)
{
if(DMA_GetITStatus(DMA1_Stream3,DMA_IT_TCIF3)==SET)
{
DMA_ClearITPendingBit(DMA1_Stream3,DMA_IT_TCIF3);
i2s_rx_callback();
}
}
/************************第二路发送中断*************************************/ 这里会一直有中断
void DMA1_Stream5_IRQHandler(void)
{
if(DMA_GetITStatus(DMA1_Stream5,DMA_IT_TCIF5)==SET)
{
DMA_ClearITPendingBit(DMA1_Stream5,DMA_IT_TCIF5);
}
}
/************************第二路接收中断*************************************/ 第二路接收没有响应一个中断
void DMA1_Stream0_IRQHandler(void)
{
if(DMA_GetITStatus(DMA1_Stream0,DMA_IT_TCIF0)==SET)
{
DMA_ClearITPendingBit(DMA1_Stream0,DMA_IT_TCIF0);
i2s3_rx_callback();
}
}
|
最佳答案
查看完整内容[请看2#楼]
I2S3ext_RX_DMA_Init函数中
DMA_DoubleBufferModeConfig(DMA1_Stream0,(u32)buf1,DMA_Memory_0);//双缓冲模式配置
DMA_DoubleBufferModeCmd(DMA1_Stream0,ENABLE);//双缓冲模式开启
DMA_ITConfig(DMA1_Stream3,DMA_IT_TC,ENABLE);//开启传输完成中断
你开启的是DMA1_Stream3的传输完成中断,所以DMA1_Stream0_IRQHandler无法进入
|