用DSP定时器实现方波输出的方法

[复制链接]
2426|20
 楼主| qaz098xsw 发表于 2017-8-5 11:02 | 显示全部楼层 |阅读模式
用DSP定时器实现方波输出的方法

在DSP的电机控制中,经常要用到方波输出,就是常说的PWM,PTO。一般的控制方式采用的是使用2812的EV单元去产生对称波形。但是在现代的一些控制领域,特别是位置控制领域,经常要实现开环控制脉冲个数,并产生多种频率的脉冲输出。EV是很难实现的。
   
我提供一种新的实现方法,可以实现上面的功能:使用定时器中断来反向GPIO口实现脉冲输出的。

比如,我使用CPUTIMER2来实现波形输出:
      
1.初始化定时器值为半个周期值。
ConfigCpuTimer(&CpuTimer2, 100, 10);
StartCpuTimer2();
      
2.中断程序如下:
interrupt void CpuTim2Int(void)
{
Uint32 i;

if (State==1)   //电平反向state为电平值
      State=0;
     else {
State=1;
xxx++;                                //xxx为脉冲个数,发300000个脉冲就停止
if (xxx==300000) {
xxx=0;
StopCpuTimer2();
}
CpuTimer2Regs.PRD.all=i/2;                    //i为脉冲周期值
GpioDataRegs.GPATOGGLE.bit.GPIOA0=1;//pto2

}

这样可以实现随时对应一个GPIO口对应一个脉冲频率,而且可很方便的精确计数。因为波形是自己软件制造,因而能很好的软件计数。

zhangmangui 发表于 2017-8-9 20:47 来自手机 | 显示全部楼层
也是一种方法 但不建议这么做。太耗CPU资源了
zhangmangui 发表于 2017-8-9 20:48 来自手机 | 显示全部楼层
最好的方法是用PWM波输出
kkzz 发表于 2017-8-9 21:56 | 显示全部楼层
怎么不使用PWM呢
hudi008 发表于 2017-8-9 21:56 | 显示全部楼层
定时器产生方波信号频率不高。
lzmm 发表于 2017-8-9 21:57 | 显示全部楼层
这个可以使用DDS的方波信号。
minzisc 发表于 2017-8-9 21:57 | 显示全部楼层
F28027有8路PWM(四个模块)
selongli 发表于 2017-8-9 21:58 | 显示全部楼层
编写PWM输出程序
fentianyou 发表于 2017-8-9 21:58 | 显示全部楼层
sdlls 发表于 2017-8-9 21:59 | 显示全部楼层
dsp2812 pwm配置
febgxu 发表于 2017-8-9 21:59 | 显示全部楼层
sdlls 发表于 2017-8-9 21:59 | 显示全部楼层
需要产生多大的方波信号?
kkzz 发表于 2017-8-9 22:00 | 显示全部楼层
参考的TI提供的代码可以直接使用。
hudi008 发表于 2017-8-9 22:00 | 显示全部楼层
这个还需要取决于定时器的中单次数。
lzmm 发表于 2017-8-9 22:00 | 显示全部楼层
TI也有DDS的芯片直接使用。
minzisc 发表于 2017-8-9 22:00 | 显示全部楼层
可以提供设计高精度的信号源。
selongli 发表于 2017-8-9 22:00 | 显示全部楼层
这个网上有很多的方案可以参考选择。
fentianyou 发表于 2017-8-9 22:00 | 显示全部楼层
DSP---PWM波形源码
xiaoyaodz 发表于 2017-8-9 22:00 | 显示全部楼层
产生PWM信号(默认是200KHZ)
febgxu 发表于 2017-8-9 22:00 | 显示全部楼层
基于DSP的PWM波这个可以作为参考。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

632

主题

842

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部