DSP的跟踪频率变化的交流有样技术
发布时间:2008/9/1 0:00:00 访问次数:622
在交流采样系统中,通常是一个周波采样64点或128点的电量值,然后对这些数据进行处理。如果电网频率恒定,则采样间隔t=t/n(t为周期,n为采样点),而电网的频率通常有一定的波动,所以要不断调整采样间隔。
在单片机系统中,一般采用过零触发电路和单片机的外部中断来检测电量周波的开始和结束时间,再利用内部定时器计算出周期和采样间隔,在采样间隔定时中断程序中启动一次采亲。这种方案有两个缺点:其一,电路实现复杂;其二,精度不高,因为要考虑中断能否实时响应。过零触发电路产生的中断响应具有不确定性。
我们在使用tms320f240 dsp开发交流采样系统时,巧妙地利用该款dsp的定时器、捕获器和不中屏蔽中断(nmi)实现了跟踪频率变化的交流采样。
1 nmi中断、定时器、捕获器的简单分析
(1)nmi中断
tms320f24x系列有一个不可屏蔽中断(nmi)引脚。当该引脚有跳变信号时(可编程为上升沿或下降沿触发),立即进入中断程序,可以用于紧急事件的处理。本文中用于跟踪被测电量的频率。
(2)定时器介绍
tms320f240有3个通用定时器,每个通用定时器有6种计数方式:①停止/保持模式,模式0;②单增计数模式,模式1;③连续增计数模式,模式2;④定向增/减计数模式,模式3;⑤单增/减计数模式,
模式4;⑥连续增/减计数模式,模式5。
设fc是cpu的时钟频率,则定时时间t=脉冲个数/(fc/分频系数),脉冲个数与定时周期寄存器的值或比较寄存器的值有关。工作过程是:①根据cpu的频率、定时时间确定计数寄存器的初值txnt、周期寄存器的初值txper、比较寄存器的初值txcmp。②启动定时器计数。③计数到比较寄存器的值发生比较匹配中断,同时使txcmp引脚发生跳变。本文中利用t3cpu的跳变去启动一次a/d转换。④计数到周期寄存器的值发生周期匹配中断。
定时器一旦开始工作就不受程序影响,准确性高,保证每隔固定间隔进行采样。
(3)捕获器介绍
捕获单元用于捕获引脚上电平的变化并记录发生的时间,记录事件发生的时间以定时器的计数器作时基。当捕获引脚发生跳变时,捕获单元将该时刻时基的计数寄存器t2cnt的值装入相应的fifo队列中。fifo队列可以装入两个值,第三个装入时会将第一个值挤出。如果将捕获器的跳变输入信号和nmi输入信号并联(见图2),则可以在nmi中断程序中读取跳变时的时基值(读fifox寄存器)。例如:以t2作时基,引脚电平第一次上跳时,t2计数寄存器t2cnt的值为x1,第二次为x2,t2分频系数为d,cpu频率为fc,则变化时间间隔为
t=d/fc×(x2-x1)
2 设计思想
过零触发电路的输出接tms320f240外部不可屏蔽中断引脚nmi,确保了中断的实时响应;同时,过零触发电路的输出还接到捕获器1的输入端cap1,t2定时器作捕获器的时基,捕获器可以捕获两个脉冲间隔的时间(用t2计数器的变化量表示),这样可以计算出周波的周期/频率。
用一个定时器t3完成定时触发采样,每隔一个采样周期t3定时器的比较匹配输出端t3cmp输出一个下降沿脉冲去启动adc进行一次a/d转换,所以t3cmp的启动信号的间隔具有确定性。
下面对频率/周期和采样间隔的计算作出推导。
(1)频率和周期
捕获器用t2作时基,cap1端每出现一个上升沿脉冲表示一个周波开始,同时立刻进入nmi中断程序,在中断程序中读取fifo1寄存器的值赋给t3的周期寄存器。要注意的是:fifo1总是初始化为0,所以fifo1的值是在刚过去的周波内t2计数器的增加值;而t2的分频系数为128,假设dsp的工作频率为20mhz,这样就可以计算出上一个周波的周期t和频率f:
t=(1/20) μs×128×(fifo1)=
(128/20)×10 -6×(fifo1)s
f=1/t=(20×10 6)/[128×(fifo1)]=156250/(fifo1)hz
(2)跟踪频率变化的采样间隔
如果t2工作在定时/计数状态下,给t2的周期寄存器t2per赋初值为fifo1寄存器的值,则t2的周期中断时间即是上一个周波的周期;而在nmi中断程序中将fifo1寄存器的值赋给t3的周期寄存器t3per.注意:t2的分频系数为128,t3的分频系数为1,所以t3的周期中断时间是一个周期的电量的1/128;而采样周期用t3作时基,t3的周期中断
在交流采样系统中,通常是一个周波采样64点或128点的电量值,然后对这些数据进行处理。如果电网频率恒定,则采样间隔t=t/n(t为周期,n为采样点),而电网的频率通常有一定的波动,所以要不断调整采样间隔。
在单片机系统中,一般采用过零触发电路和单片机的外部中断来检测电量周波的开始和结束时间,再利用内部定时器计算出周期和采样间隔,在采样间隔定时中断程序中启动一次采亲。这种方案有两个缺点:其一,电路实现复杂;其二,精度不高,因为要考虑中断能否实时响应。过零触发电路产生的中断响应具有不确定性。
我们在使用tms320f240 dsp开发交流采样系统时,巧妙地利用该款dsp的定时器、捕获器和不中屏蔽中断(nmi)实现了跟踪频率变化的交流采样。
1 nmi中断、定时器、捕获器的简单分析
(1)nmi中断
tms320f24x系列有一个不可屏蔽中断(nmi)引脚。当该引脚有跳变信号时(可编程为上升沿或下降沿触发),立即进入中断程序,可以用于紧急事件的处理。本文中用于跟踪被测电量的频率。
(2)定时器介绍
tms320f240有3个通用定时器,每个通用定时器有6种计数方式:①停止/保持模式,模式0;②单增计数模式,模式1;③连续增计数模式,模式2;④定向增/减计数模式,模式3;⑤单增/减计数模式,
模式4;⑥连续增/减计数模式,模式5。
设fc是cpu的时钟频率,则定时时间t=脉冲个数/(fc/分频系数),脉冲个数与定时周期寄存器的值或比较寄存器的值有关。工作过程是:①根据cpu的频率、定时时间确定计数寄存器的初值txnt、周期寄存器的初值txper、比较寄存器的初值txcmp。②启动定时器计数。③计数到比较寄存器的值发生比较匹配中断,同时使txcmp引脚发生跳变。本文中利用t3cpu的跳变去启动一次a/d转换。④计数到周期寄存器的值发生周期匹配中断。
定时器一旦开始工作就不受程序影响,准确性高,保证每隔固定间隔进行采样。
(3)捕获器介绍
捕获单元用于捕获引脚上电平的变化并记录发生的时间,记录事件发生的时间以定时器的计数器作时基。当捕获引脚发生跳变时,捕获单元将该时刻时基的计数寄存器t2cnt的值装入相应的fifo队列中。fifo队列可以装入两个值,第三个装入时会将第一个值挤出。如果将捕获器的跳变输入信号和nmi输入信号并联(见图2),则可以在nmi中断程序中读取跳变时的时基值(读fifox寄存器)。例如:以t2作时基,引脚电平第一次上跳时,t2计数寄存器t2cnt的值为x1,第二次为x2,t2分频系数为d,cpu频率为fc,则变化时间间隔为
t=d/fc×(x2-x1)
2 设计思想
过零触发电路的输出接tms320f240外部不可屏蔽中断引脚nmi,确保了中断的实时响应;同时,过零触发电路的输出还接到捕获器1的输入端cap1,t2定时器作捕获器的时基,捕获器可以捕获两个脉冲间隔的时间(用t2计数器的变化量表示),这样可以计算出周波的周期/频率。
用一个定时器t3完成定时触发采样,每隔一个采样周期t3定时器的比较匹配输出端t3cmp输出一个下降沿脉冲去启动adc进行一次a/d转换,所以t3cmp的启动信号的间隔具有确定性。
下面对频率/周期和采样间隔的计算作出推导。
(1)频率和周期
捕获器用t2作时基,cap1端每出现一个上升沿脉冲表示一个周波开始,同时立刻进入nmi中断程序,在中断程序中读取fifo1寄存器的值赋给t3的周期寄存器。要注意的是:fifo1总是初始化为0,所以fifo1的值是在刚过去的周波内t2计数器的增加值;而t2的分频系数为128,假设dsp的工作频率为20mhz,这样就可以计算出上一个周波的周期t和频率f:
t=(1/20) μs×128×(fifo1)=
(128/20)×10 -6×(fifo1)s
f=1/t=(20×10 6)/[128×(fifo1)]=156250/(fifo1)hz
(2)跟踪频率变化的采样间隔
如果t2工作在定时/计数状态下,给t2的周期寄存器t2per赋初值为fifo1寄存器的值,则t2的周期中断时间即是上一个周波的周期;而在nmi中断程序中将fifo1寄存器的值赋给t3的周期寄存器t3per.注意:t2的分频系数为128,t3的分频系数为1,所以t3的周期中断时间是一个周期的电量的1/128;而采样周期用t3作时基,t3的周期中断
上一篇:基于嵌入式系统的检测平台硬件设计