This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

I2S的DMA同步事件

我使用的是I2S2,对应的同步通道是DMA1 的channel 0.对DMA的配置,源地址,目的地址,控制寄存器,同步事件寄存器都配好了,I2S在不使用DMA时,是正常工作的。现在的问题是,在使用DMA同步事件后,由于DMA中断时打开的,可以观测DMA中断是能触发的,但是中断后,观察到DMA没有传输数据,或者是传输的数据为零。看手册上说,DMA是传输完成后触发中断的。但是为啥没有数据传输呢?

  • 先试一下DMA程序能否搬移片上RAM里的数据?如果可以了,再在此基础上做修改。

    另外,I2SINTMASK寄存器里的中断都先disable掉。

  • 我做了个用DMA从DARAM搬移到SARAM的定时器同步事件,在不打开DMA中断的情况下,数据传输正常,是和定时器同步的。但是,打开DMA中断,问啥它不跳到DMA中断函数中去。

    I2SINTMASK中的中断都关了,再打开的情况下,程序就跑飞了。在I2S这个程序中,DMA中断都能进去啊(虽说它没有搬数据)。但是在定时器同步事件中,DMA中断标志都置为1了,但是还不跳到中断去。

    DMA1_CH0_TCRU

    DMAIER

    IER0 = 0x0100

    INTM

    这四个有关中断的都设置了。