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.

关于MSP432控制器DMA速率问题



        本人在一款16通道数据采集系统中采用了MSP432P401R,16通道采用外部ADC,ADC的驱动采用了FPGA,转换为16bits的并行数据,由于432没有外部总线接口,在设计中不得已采用DMA的方式,通过PA口与DMAE0的方式将采集到的16*1024字的数据导入至432。

        设计中,PA口作为16bits的数据总线,控制总线只有1个DMAE0(P7.0),DMAE0由FPGA产生。FPGA在对每个通道(共16个)采集完1个点的数据后读取缓存于16字的缓冲区中,FPGA中的控制器分16次等间隔读取,每读取1个字放置于PA口,然后产生1个DMAE0脉冲请求1次DMA传输。432的时钟采用的48MHz,该时钟通过CS_getMCLK ()确认为48MHz,FPGA控制器的主时钟采用的是24MHz。DMA控制器采用两个DMA6通道乒乓模式接力完成16384字的读取。测试时,为确保FPGA中的控制器正确,直接采用计数器模拟AD采集数据。整个系统都运行正常。但发现了如下问题:

        在DMA的使用手册中,1次DMA请求至DMA完成大致需要8个总线周期就能完成1次DMA传输,但在测试中却发现1次DMA传输至少要16个总线周期才能保证数据读取不出错误。因此初期规划的每通道采样率达到250ksps的目标无法实现,每通道能达到的最快采样间隔为6us。修改工程的代码优化等级对结果无任何影响。请问是我对手册上的DMA周期理解有误吗?

        在使用仿真器测试时,第一次运行数据采集DMA传输时,第一个字会出现错误,但后面的数据及后续的数据采集均正常。导致原因大概是什么?

        采用DMA方式工作时,数据的喂入完全是由FPGA控制器单向实现,FPGA控制器将数据放置PA口,然后产生一次DMA请求后,只能假定在固定的时间段内DMA传输肯定能够完成。请问外部设备是否有办法获取432的DMA控制器的状态?

       本人是MSP432的初次使用者,希望能获得大师与高手的热心指点,谢谢!