TI中文支持网
TI专业的中文技术问题搜集分享网站

项目中需要使用dma+timer实现低成本pwm语音播放,CC2640可否实现

项目中需要使用dma+timer实现低成本pwm语音播放,CC2640可否实现

目前我做了一些尝试,没有达到预期效果:

GPT0B触发DMA向GPT0B匹配寄存器搬移音频数据,GPT0A为周期定时器频率为8k,DMA为ping-pong模式 16位数据模式,GPT0B为pwm输出频率187500hz。

我利用了两个buffer存储数据,先递增后递减。

CC2640工程为带TI-RTOS版本,debug断点发现中断中pingpong切换主辅配置都能进入

问题:抓取pwm波形发现递增的波形基本符合预期,递减的波形很乱,不是一次递减,另外还有有一段段长时间低电平,频率也不是187500了,低于这个数值,在62k左右。总体波形时间基本符合8k规律,即连续的增波形和杂乱的递减波形交替时,两端波形时间基本符合,也按8k频率进行变化。

反复尝试许多次都没有太大改进,请问是芯片不支持这种用法还是我哪边寄存器没配置好。

Viki Shi:

请参考CC26XX的PWM文档: software-dl.ti.com/…/_p_w_m_timer_c_c26_x_x_8h.html

注意limitation:
The PWM output can currently not be synchronized with other PWM outputsThe PWM driver does not support updating duty and period using DMA.When changing duty cycle there will be a period where the high level is either too short or too high since the timer match value is updated.

user3852962:

回复 Viki Shi:

你好,这个文档我看到了,他说的是固件库不支持这种方式.

我这边需要有这种应用,前面说的相关操作我是通过直接操作寄存器来实现的.

逻辑分析仪导出数据:

pingpong pwm.zip

逻辑分析仪截图:

图中时间间隔基本符合:8k定时器触发dma搬移128数据,连续那部分是搬移逐渐增大占空比数据(正常),另一段ping-pong是搬移占空比减小数据,出现杂乱波形.

请帮忙看一下,谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » 项目中需要使用dma+timer实现低成本pwm语音播放,CC2640可否实现
分享到: 更多 (0)