微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 本人在做stm32f407控制ad9851产生正弦波,程序如下,调试后不显示波形,求指导

本人在做stm32f407控制ad9851产生正弦波,程序如下,调试后不显示波形,求指导

时间:10-02 整理:3721RD 点击:
#include"stm32f4xx.h"

#define ad9851_rest_l  GPIO_ResetBits(GPIOC,GPIO_Pin_0)   
#define ad9851_rest_h  GPIO_SetBits(GPIOC,GPIO_Pin_0)
#define ad9851_fq_up_l  GPIO_ResetBits(GPIOC,GPIO_Pin_1)
#define ad9851_fq_up_h  GPIO_SetBits(GPIOC,GPIO_Pin_1)
#define ad9851_w_clk_l  GPIO_ResetBits(GPIOC,GPIO_Pin_2)
#define ad9851_w_clk_h  GPIO_SetBits(GPIOC,GPIO_Pin_2)
#define ad9851_data_l GPIO_ResetBits(GPIOC,GPIO_Pin_3)
#define ad9851_data_h GPIO_SetBits(GPIOC,GPIO_Pin_3)

/*
void RCC_HSE_Configuration(void)
{
RCC_DeInit();//将外设RCC寄存器重设为缺省值
RCC_HSEConfig(RCC_HSE_ON);//设置外部高速晶振HSEHSE晶振打开ON

if(RCC_WaitForHSEStartUp()==SUCCESS)//等待HSE起振SUCCESSHSE晶振稳定且就绪
{
  RCC_HCLKConfig(RCC_SYSCLK_Div1);//设置AHB时钟HCLK
//RCC_SYSCLK_Div1--AHB时钟=系统时钟
  RCC_PCLK2Config(RCC_HCLK_Div1);//设置高速AHB时钟PCLK2
//RCC_HCLK_Div1--APB2时钟=HCLK
  RCC_PCLK1Config(RCC_HCLK_Div2);//设置低速AHB时钟PCLK1
//RCC_HCLK_Div2--APB1时钟=HCLK/2

  FLASH_PrefetchBufferCmd(ENABLE);//选 择FLASH预取指缓存的模预取指缓存使能
  FLASH_SetLatency(FLASH_Latency_2);//设置FLASH存储器延时时钟周期数FLASH_LATENCY_2  2延时周期
  RCC_PLLConfig(RCC_PLLSource_HSE,63,192,2,4);//设置PLL时钟源及倍频系数
  RCC_PLLCmd(ENABLE);//PLL使能
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);//检查指定的RCC标志位PLL准备好标志设置与否

  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//设置系统时钟SYSCLK
  while(RCC_GetSYSCLKSource()!= 0x08);//0x08:PLL作为系统时钟
  }
}
*/

void AD9851_GPIOC_Configuration(void)
{  
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;  
GPIO_Init(GPIOC,&GPIO_InitStructure);   
}
void AD9851_GPIOF_Configuration(void)
{
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;  
GPIO_Init(GPIOF,&GPIO_InitStructure);
}

void ad9851_reset_parrel()
{
ad9851_w_clk_l;
ad9851_fq_up_l;
//rest信号
ad9851_rest_l;
ad9851_rest_h;
ad9851_rest_l;
}

//并行输出
void ad9851_wr_parrel(u8 w0,u32 frequence)
{
u8 w;
frequence=frequence*4294967296/180000000;
//写w0数据
w=w0;   
GPIO_Write(GPIOF,w);      //w0
ad9851_w_clk_h;
ad9851_w_clk_l;
//写w1数据
w=(frequence>>24);
GPIO_Write(GPIOF,w);      //w1
ad9851_w_clk_h;
ad9851_w_clk_l;
//写w2数据
w=(frequence>>16);
GPIO_Write(GPIOF,w);      //w2  
ad9851_w_clk_h;
ad9851_w_clk_l;
//写w3数据
w=(frequence>>8);
GPIO_Write(GPIOF,w);      //w3
ad9851_w_clk_h;
ad9851_w_clk_l;
//写w4数据
w=(frequence>>=0);
GPIO_Write(GPIOF,w);      //w4

ad9851_w_clk_h;
ad9851_w_clk_l;
//移入始能
ad9851_fq_up_h;
ad9851_fq_up_l;
}
//
//void ad9851_wr_parrel(u8 w0,u32 frequence)
//{
// u8 i,w;
// frequence=(long int)frequence*4294967296/180000000;
////写w4数据       
// w=(frequence>>=0);
// for(i=0;i<8;i++)
//        { if((w>>i)&0x01)
//                                        ad9851_data_h;
//                else
//                                        ad9851_data_l;
//                ad9851_w_clk_h;
//                ad9851_w_clk_l;
//        }
////写w3数据       
// w=(frequence>>8);
// for(i=0;i<8;i++)
//        { if((w>>i)&0x01)
//                                        ad9851_data_h;
//                else
//                                        ad9851_data_l;
//                ad9851_w_clk_h;
//                ad9851_w_clk_l;
//        }
//       
////写w2数据       
// w=(frequence>>16);
// for(i=0;i<8;i++)
//        { if((w>>i)&0x01)
//                                        ad9851_data_h;
//                else
//                                        ad9851_data_l;
//                ad9851_w_clk_h;
//                ad9851_w_clk_l;
//        }
//       
////写w1数据       
// w=(frequence>>24);
// for(i=0;i<8;i++)
//        { if((w>>i)&0x01)
//                     ad9851_data_h;
//                else
//                           ad9851_data_l;
//                ad9851_w_clk_h;
//                ad9851_w_clk_l;
//        }
////写w0数据       
// w=w0;
// for(i=0;i<8;i++)
//        { if((w>>i)&0x01)
//                     ad9851_data_h;
//                else
//                           ad9851_data_l;
//                ad9851_w_clk_h;
//                ad9851_w_clk_l;
//        }
//  //移入始能
// ad9851_fq_up_h;
// ad9851_fq_up_l;       
//}



int main()
{
//RCC_HSE_Configuration();
AD9851_GPIOC_Configuration();
AD9851_GPIOF_Configuration();
GPIO_Write(GPIOC,0x0000);
GPIO_Write(GPIOF,0x0000);
//串行写1000Hz程序
ad9851_reset_parrel();
ad9851_wr_parrel(0x01,1000000);
while(1);
}



你好,看了你的回复,感觉你这方面应该很强,我也知道是逻辑上出现了问题,我仔细检查了ad9851的时序,觉得是没问题的,能多多指教我下嘛

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top