打印
[技术问答]

029sge, 把time配置成pwm 后,有没有方法通过pdma输入一组数据...

[复制链接]
629|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
flycamelaaa|  楼主 | 2022-5-10 09:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DM, TI, ge, pd, PWM
把time配置成pwm已经完成,但是把buffer 200多个字数据通过pdma输入到TIMER1 -> PWMCMPDAT,总是会卡在while处。类似的程序功能stm32可以实现。本人不确定,029芯片pdma是不是可以这样使用,如果可以请教高人,下面的程序哪里有问题,谢谢。


使用特权

评论回复
沙发
flycamelaaa|  楼主 | 2022-5-10 09:14 | 只看该作者
问题补充 :

029sge程序:不能实现功能,卡在while


        /* Enable PDMA clock source */


        CLK_EnableModuleClock(PDMA_MODULE);


       


        /* Open Channel 2 */


        PDMA_Open(1 << 2);




        /* Transfer count is PDMA_TEST_LENGTH, transfer width is 32 bits(one word) */


        PDMA_SetTransferCnt(2, PDMA_WIDTH_32, buffersize);


       


        /* Set source address is au8SrcArray, destination address is au8DestArray, Source/Destination increment size is 32 bits(one word) */


        PDMA_SetTransferAddr(2, (uint32_t)LED_BYTE_Buffer, PDMA_SAR_INC, (uint32_t)(&(TIMER1 -> PWMCMPDAT)), PDMA_DAR_FIX);




        /* Request source is memory to TMR1 */


        PDMA_SetTransferMode(2, PDMA_TMR1, FALSE, 0);


       


        /* Transfer type is burst transfer and burst size is 1 */


        PDMA_SetBurstType(2, PDMA_REQ_BURST, PDMA_BURST_1);




  TPWM_CLEAR_COUNTER(TIMER1);


       


        /* Start Timer PWM counter */


        TPWM_START_COUNTER(TIMER1);


       


        /* Generate a software request to trigger transfer with PDMA channel 2  */


        PDMA_Trigger(2);


       


        while(!(PDMA_GET_TD_STS() & PDMA_TDSTS_TDIF2_Msk));




        TPWM_STOP_COUNTER(TIMER1);


       


        /* Clear transfer done flag of channel 2 */


        PDMA_CLR_TD_FLAG(PDMA_TDSTS_TDIF2_Msk);


使用特权

评论回复
板凳
flycamelaaa|  楼主 | 2022-5-10 09:17 | 只看该作者
问题补充 :

stm32程序,可以实现想要的功能


        DMA_SetCurrDataCounter(DMA1_Channel7, buffersize);                        


        TIM_SetCounter(TIM2,0x0000);


        TIM_Cmd(TIM2, ENABLE);                                                 // enable Timer 2


        DMA_Cmd(DMA1_Channel7, ENABLE);


        while(!DMA_GetFlagStatus(DMA1_FLAG_TC7));         // wait until transfer complete


        TIM_Cmd(TIM2, DISABLE);                         // disable Timer 2


        TIM_ClearFlag(TIM2,TIM_FLAG_CC2);


        DMA_Cmd(DMA1_Channel7, DISABLE);                         // disable DMA channel 7


        DMA_ClearFlag(DMA1_FLAG_TC7);                                 // clear DMA1 Channel 7 transfer complete flag


使用特权

评论回复
地板
flycamelaaa|  楼主 | 2022-5-10 09:18 | 只看该作者
  • 问题补充 :

    简单讲我想实现的功能就是类似stm32芯片的  PWM+DMA控制灯带,DMA输出占空比值,PWM输出不同的波形,控制灯的颜色亮度。

    有没有前辈能回复快一点,不胜感激。。

  • 问题补充 :

    PWM频率是800K



使用特权

评论回复
5
tpgf| | 2022-6-6 16:13 | 只看该作者
目前没有做过这样的工作

使用特权

评论回复
6
keaibukelian| | 2022-6-6 16:32 | 只看该作者
需要实时修改占空比吗

使用特权

评论回复
7
renzheshengui| | 2022-6-6 16:42 | 只看该作者
这个速度高不高呢

使用特权

评论回复
8
labasi| | 2022-6-6 16:52 | 只看该作者
输入数据的目的是什么呢

使用特权

评论回复
9
paotangsan| | 2022-6-6 17:22 | 只看该作者
多长时间可以生效啊

使用特权

评论回复
10
wakayi| | 2022-6-6 17:52 | 只看该作者
请问什么是pdma啊

使用特权

评论回复
11
andygirl| | 2022-6-10 22:32 | 只看该作者
直接白话吧,专业缩写不太懂

使用特权

评论回复
12
foxsbig| | 2022-6-12 09:57 | 只看该作者
试试啊,哪里不通

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

645

主题

2670

帖子

0

粉丝