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.

F28M35x中DMA通道的开启

Other Parts Discussed in Thread: SYSBIOS

因需对模拟量进行高速AD采样、转换,同时为保证MCU的利用率,将AD转换的结果采用DMA的方式存储到内存中,而且需要将AD转换结果不断的通过DMA方式送到内存,而不影响DSP处理其他任务,不知能否实现,若能实现那如何开启DMA功能呢?谢谢各位!

  • hongyue,

    你应该指的是C28内核吧?

    你可以去看一下F28M35的技术手册中关于DMA的一节。里面关于DMA的触发源可以有下面几种

    Peripheral interrupt trigger sources

     – ADC interrupts 1-4

    – Multichannel buffered serial port transmit and receive

     – XINT1-3

    – CPU Timers 0-2

     – ePWM1-9 ADCSOCA and ADSOCB signals

    – Software

    可搬运的数据源为下面几种:

    Data sources/destinations:

    – L5-L8 32K x 16 SARAM

    – ADC memory bus mapped result registers

    – McBSP transmit and receive buffers

    – ePWM1-8 / HRPWM1-8

    所以你可以使用ADCINT1-4中断信号将ADC结果通过DMA搬运到L5-L8的SRAM中,记得使能ADCINTx中断信号,但是不要在PIE中对ADC使能,这样就不会影响CPU的运行。

    关于ADC中断信号还有一点要注意的是如何清除中断标志位,可以在DMA中断中清除,或是直接设置ADC为连续模式,即ADC中断信号的产生不会受中断标志位是否清零影响。

    所以答案是可行的。

    Eric

  • Eric,

    谢谢您的答复,考虑使用DMA功能是因为CPU要并行处理多种任务,而且要不断地对模拟信号进行采样、转换、处理等操作。正在考虑使用操作系统或是采用MCU的DMA功能哪种方式更好。如果使用sys_bios的话相对来说代码要占用较多的存储空间,使用sys_bios的话应该是对多任务的管理较方面些。

    还有个问题就是假如我要对模拟量采样1000个点,然后让DSP对这些数据进行傅里叶变换,与此同时AD模块继续对模拟信号进行重复的操作,那应该怎样启动DSP对这1000点数据进行变换呢,是否可以使用中断方式?

  • 不好意思Eric,没看到您之前的答复。

    还没有使用过sysbios,在sysbios环境下编程有什么不同呢?最终生成的文件是否仍是.out的呢?

x 出现错误。请重试或与管理员联系。