我使用的是I2S2,对应的同步通道是DMA1 的channel 0.对DMA的配置,源地址,目的地址,控制寄存器,同步事件寄存器都配好了,I2S在不使用DMA时,是正常工作的。现在的问题是,在使用DMA同步事件后,由于DMA中断时打开的,可以观测DMA中断是能触发的,但是中断后,观察到DMA没有传输数据,或者是传输的数据为零。看手册上说,DMA是传输完成后触发中断的。但是为啥没有数据传输呢?
Shine:
先试一下DMA程序能否搬移片上RAM里的数据?如果可以了,再在此基础上做修改。
另外,I2SINTMASK寄存器里的中断都先disable掉。
user5052112:
回复 Shine:
我做了个用DMA从DARAM搬移到SARAM的定时器同步事件,在不打开DMA中断的情况下,数据传输正常,是和定时器同步的。但是,打开DMA中断,问啥它不跳到DMA中断函数中去。
I2SINTMASK中的中断都关了,再打开的情况下,程序就跑飞了。在I2S这个程序中,DMA中断都能进去啊(虽说它没有搬数据)。但是在定时器同步事件中,DMA中断标志都置为1了,但是还不跳到中断去。
DMA1_CH0_TCRU
DMAIER
IER0 = 0x0100
INTM
这四个有关中断的都设置了。