初级会员

- 积分
- 68
- 金钱
- 68
- 注册时间
- 2012-12-14
- 在线时间
- 12 小时
|
1金钱
求助下论坛里面的大神们!
最近在设计一个信号发生器。主控芯片stm32f405+AD5791,主要产生0.5-2k频率,0.05mV-2mV的正弦波信号。目前遇到的问题是我定时器技术频率设置为1Mhz,然而频率最高却只能设置为100Hz,再高一点就会出现异常,很是疑惑。DAC实现的方法是:一个周期使用1024查表数据,然后不断得在中断中刷新数据。贴上程序!!!
[mw_shl_code=applescript,true] TIM3_Handl.Instance=TIM3; //通用定时器3
HTIM.Prescaler=42-1; //分频系数
HTIM.Period=2000000/(Fre*Point_Num) - 1; //自动重装载值;
TIM_Base_SetConfig(TIM3,&HTIM);
for(i=0;i<Point_Num;i++)
{
z=(unsigned long int)(((((1.12*AMPL*sin(2*3.1415926*i/1024))/10)+1)*1048576.0)); //负半波
}
[/mw_shl_code]
[mw_shl_code=applescript,true]
//回调函数,定时器中断服务函数调用
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
// HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1);
Send_Flag=1;
// LED0=~LED0;
}[/mw_shl_code]
[mw_shl_code=applescript,true]if(Send_Flag)
{
AD5791Registers[DAC_VALUE] =z[k++] ;
if(k>=Point_Num) k=0;
WriteToAD5791ViaSPI(DAC_VALUE, 1, AD5791Registers, DAC_VALUE);
AD5791HardwareLoad();
Send_Flag=0;
}[/mw_shl_code]
|
|