如何利用PWM触发DMA

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

如何利用PWM触发DMA

1,243 Views
SSFG1992
Contributor I

最近在做一个项目,rt1064和ad7606b并口通信,这样读ad7606b数据相当于是在固定的地址中读取,所以想利用flexpwm触发dma,这样可以周期的利用dma自动读adc数据到固定的内存中。现在卡在不知道rt1064能不能实现以下功能,比如PWM的下降沿触发一次dma,或者PWM计数器到某个值触发一次dma。。。如果可以实现,请问要如何配置?请大神指点一下

0 Kudos
3 Replies

1,238 Views
jeremyzhou
NXP Employee
NXP Employee

Hi,
非常感谢使用NXP产品,很高兴为你提供技术支持!
从你的描述来看,我觉得没有必要使用DMA机制,读取ad7606b是通过读取固定的地址指向的值获得, ADC采样需要消耗一定的时间,不适合DMA连续多次读取,因为这个时间间隔是非常短的,所以只能每次读取一次,如此的话,我觉得采用时钟中断函数读取ADC就满足要求了。
Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos

1,235 Views
SSFG1992
Contributor I

感谢回复,

在没有dma的情况下,比如8k采样率,这要求cpu每秒钟产生8k次中断,并在每次中断时读取一个采样值。如果可以使用dma,则可以实现一次dma中断一次性读取8k个采样值。

我想后者的效率会更高,为cpu处理其他算法或任务腾出更多时间。

AD7606b是可以利用flexpwm来驱动转换,采样率等于pwm的频率,所以我想利用pwm驱动ad采样的同时,也触发一次dma,请问是否有这种方法?

我想目前需要解决的问题有两个:

1.如何利用pwm触发dma事件?

2.如何利用dma做循环传输?比如dma的目标地址区域存满后,再自动从头开始存?

可以否指点一下?是否有可以参考的例程?

0 Kudos

1,233 Views
jeremyzhou
NXP Employee
NXP Employee

Hi,
1) 如何利用pwm触发dma事件?
-- 这是利用DMA硬件触发的特性,我觉得你可以使用QTimer来完成,因为Qtimer使用相对简单。
2) 如何利用dma做循环传输?比如dma的目标地址区域存满后,再自动从头开始存?
-- 可以利用DMA的scatter_gather特性实现Ping-Pong 传输(如下图所示),你可以参考SDK中的ping_pong_transfer工程。

jeremyzhou_0-1624502552695.png

 

Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos