项目情况:硬件采用STM32开发板NUCLEO-L496ZG 1、SAI采用TDM方式采集语音传感器信号,4个数字音频采集传感器; 2、总线上有4个传感器; 3、单个循环采集传感器数据8192个; 4、DMA方式,直接把外设数据搬运到内存中; 问题:配置好四个通道,开始采集数据,理论采集的数据第一个通道数据在4的倍数(0,4,8类推),第二个通道数据在4的倍数加1(1,5,9类推),第三个通道数据在4的倍数加2(2,6,10类推),第四个通道数据在4的倍数加3(3,7,11类推),实际采样存放数据会出现第一通道数据不再4的倍数位置,可能在4的倍数加1,然后整体通道数据就向后移了(2通道数在4的倍数加2,3通道数据在4的倍数加3,4通道数据在4的倍数),第一通道数据也可能在4的倍数加2和4的倍数加3,以此类推。 1、请问为什么存储数据没有按照规律来存放? |
好像应该先配置完成DMA后再配置SAI,同时使用二维数组的数据缓冲区
谢谢您的回复,先使能DMA在使能SAI,这种方式我试过,效果是一样的,您试下您说的二维数字的方法,谢谢你的回复!
刚把接收内存改成二维数组,我这边观察到位置还是会变动,有没有可能SAI采用DMA的方式底层会曾在问题?