STM32F103RE控制AD9854ASQ程序 问题

2019-07-21 00:49发布

输出是类似晶振的信号,不是正弦波啊,频率也不对。
#include "sys.h"
#include "delay.h"

#define AD9854_DATA  GPIOB->ODR//PB高八位
#define AD9854_ADDR  GPIOA->ODR//PA低八位
#define ad9854_reset  PCout(0)
#define ad9854_osk    PCout(1)//OSK触发信号
#define ad9854_fbh    PCout(2)//FSK触发信号
#define ad9854_updata PCout(3)
#define ad9854_wr     PCout(4)
#define ad9854_rd     PCout(5)

unsigned char ControlRegister[]={0x04,0x00,0x00,0x60};   //AD9854 特殊功能寄存器地址 无倍频,Mode 0
unsigned char FTW[]={0xf1,0xd2,0x4d,0x62,0x10,0x00};               //Frequency Tuning Word1 20M  5KHZ的FTW
unsigned char PAR[]={0x00,0x00};                         //Phase Adjust Register 1
unsigned char OSK[]={0x0a,0xff};                         //Output shaped keying multiplier,  650mv

void single_wave(unsigned long int fre);
void Init_AD9854(void);
void AD9854_Set_Mode0(void);
void AD9852_Send(unsigned char addr,unsigned char data);
void change_frequency(unsigned long int fre_temp);

void Init_Port(void);

int main( void )
{
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
xuande
1楼-- · 2019-07-23 05:24

既然没有读的事,15L你为什么要提?有关吗?



wel2016
2楼-- · 2019-07-23 07:15
xuande 发表于 2016-4-16 14:31
既然没有读的事,15L你为什么要提?有关吗?

应该是有读,不然怎么写,看:
void GPIO_Write_u8Data(GPIO_TypeDef* GPIOx,u8 PortVal,u8 Low_OR_Hight)
{
        u16 Data_Temp;
    Data_Temp = GPIO_ReadOutputData(GPIOx);
        if(Low_OR_Hight != 1)  
        {
                Data_Temp &= 0xff00;        //清零低八位数据
                Data_Temp |= PortVal;
        }else
        {
                Data_Temp &= 0x00ff;        //清零高八位数据
                Data_Temp |= PortVal<<8;
        }
        GPIO_Write(GPIOx, Data_Temp);
}

/***************************************************************************
* 函数名称: GPIO_ReadOutput_u8Data(GPIO_TypeDef* GPIOx,u8 Low_OR_Hight)
* 函数描述: 八位并行数据读取
* 参数列表: GPIOx:数据口选择
*                           PortVal:要写的八位数据
*         Low_OR_Hight:高低八位的选择?
*         0:低八位  1:高八位
* 返回结果:读到的八位IO口数据
*************************************************************************************/
u8 GPIO_ReadOutput_u8Data(GPIO_TypeDef* GPIOx,u8 Low_OR_Hight)
{
        u8 Data_Temp;
        if(Low_OR_Hight != 1)  
        {
                Data_Temp = GPIO_ReadOutputData(GPIOx);
                Data_Temp &= 0x00ff;        //读取低八位数据
        }else
        {
                Data_Temp = (GPIO_ReadOutputData(GPIOx) >> 8);
                Data_Temp &= 0xff00;        //读取高八位数据
        }
        return Data_Temp;
}
wel2016
3楼-- · 2019-07-23 13:06
 精彩回答 2  元偷偷看……
wel2016
4楼-- · 2019-07-23 17:55
wel2016 发表于 2016-4-16 14:38
应该是有读,不然怎么写,看:
void GPIO_Write_u8Data(GPIO_TypeDef* GPIOx,u8 PortVal,u8 Low_OR_High ...

库函数版
wel2016
5楼-- · 2019-07-23 21:24
小大尖 发表于 2016-4-20 09:46
https://ezchina.analog.com/search.jspa?q=AD9854  可以参考下这里的

表示已看穿
PeterYu
6楼-- · 2019-07-24 03:02
 精彩回答 2  元偷偷看……

一周热门 更多>