stm32中ad9959的使用例程。编译环境最好是keil。
答案:3 悬赏:0 手机版
解决时间 2021-03-31 14:06
- 提问者网友:两耳就是菩提
- 2021-03-31 02:06
stm32中ad9959的使用例程。编译环境最好是keil。
最佳答案
- 五星知识达人网友:大漠
- 2021-03-31 03:05
#include "ad9959.h"
#include "usart.h"
#define PLL_DIV 10 //倍频系数
#define PLL 16 //外部晶振频率
#define systemp_frequency (PLL*1000000*PLL_DIV) //AD9959 系统频率
static uint16_t Write_DDS_Byte(unsigned char aByte)
{
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI1,aByte);
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
return SPI_I2S_ReceiveData(SPI1);
}
void InitAd9959(void)
{
int i ;
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOC,GPIO_Pin_4) ;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void write_CSR(char w_data)
{
CLR_DDSCS;
Write_DDS_Byte(0x00); //write address 0. CSR's address is 0.
Write_DDS_Byte(w_data);
SET_DDSCS;
}
void write_FR1(char w_data1,char w_data2,char w_data3)
{
CLR_DDSCS;
Write_DDS_Byte(0x01); //write address 1. FR1's address is 0x01
Write_DDS_Byte(w_data1);
Write_DDS_Byte(w_data2);
Write_DDS_Byte(w_data3);
SET_DDSCS;
}
void write_FR2(char w_data1,char w_data2)
{
CLR_DDSCS;
Write_DDS_Byte(0x02); //write address 2
Write_DDS_Byte(w_data1);
Write_DDS_Byte(w_data2);
SET_DDSCS;
}
void write_CFR(char w_data1,char w_data2,char w_data3)
{
CLR_DDSCS;
Write_DDS_Byte(0x03);
Write_DDS_Byte(w_data1);
Write_DDS_Byte(w_data2);
Write_DDS_Byte(w_data3);
SET_DDSCS;
}
void write_CFTW0(long F_word) //Channel Frequency Tuning Word (CTW0)
{
CLR_DDSCS;
Write_DDS_Byte(0x04);
Write_DDS_Byte(((unsigned char *)(&F_word))[3]);
Write_DDS_Byte(((unsigned char *)(&F_word))[2]);
Write_DDS_Byte(((unsigned char *)(&F_word))[1]);
Write_DDS_Byte(((unsigned char *)(&F_word))[0]);
SET_DDSCS;
}
void write_CPW0(int P_word) //Channel Phase1 Offset Word (CPW0) (0x05)
{
CLR_DDSCS;
Write_DDS_Byte(0x05);
Write_DDS_Byte(((unsigned char *)(&P_word))[1]&0x3F);
Write_DDS_Byte((((unsigned char *)(&P_word))[0]));
SET_DDSCS;
}
void write_ACR(long A_word)
{
CLR_DDSCS;
Write_DDS_Byte(0x06);
Write_DDS_Byte(((unsigned char *)(&A_word))[2]);
Write_DDS_Byte(((unsigned char *)(&A_word))[1]);
Write_DDS_Byte(((unsigned char *)(&A_word))[0]);
SET_DDSCS;
}
void write_LSR(char rising,char falling)
{
CLR_DDSCS;
Write_DDS_Byte(0x07);
Write_DDS_Byte(rising);
Write_DDS_Byte(falling);
SET_DDSCS;
}
void write_RDW(long rising)
{
CLR_DDSCS;
Write_DDS_Byte(0x08);
Write_DDS_Byte(((unsigned char *)(&rising))[3]);
Write_DDS_Byte(((unsigned char *)(&rising))[2]);
Write_DDS_Byte(((unsigned char *)(&rising))[1]);
Write_DDS_Byte(((unsigned char *)(&rising))[0]);
SET_DDSCS;
}
void write_FDW(long falling)
{
CLR_DDSCS;
Write_DDS_Byte(0x09);
Write_DDS_Byte(((unsigned char *)(&falling))[3]);
Write_DDS_Byte(((unsigned char *)(&falling))[2]);
Write_DDS_Byte(((unsigned char *)(&falling))[1]);
Write_DDS_Byte(((unsigned char *)(&falling))[0]);
SET_DDSCS;
}
void write_CTWn(char n,long w_data)
{
CLR_DDSCS;
Write_DDS_Byte(n+0x09); //CTWn's address is n+0x09.n>=1 and n<=15.
Write_DDS_Byte(((unsigned char *)(&w_data))[3]);
Write_DDS_Byte(((unsigned char *)(&w_data))[2]);
Write_DDS_Byte(((unsigned char *)(&w_data))[1]);
Write_DDS_Byte(((unsigned char *)(&w_data))[0]);
SET_DDSCS;
}
void set_frequency(u32 f)
{
long temp;
temp=(unsigned long int)f*(0xFFFFFFFF*1.0/(float)systemp_frequency+1.0/systemp_frequency);
write_CFTW0(temp);
}
void SetAd(int FreKhz)
{
int i = 0xff;
//通道2 比通道3 多50 khz
write_CSR(0x80); //通道3
set_frequency((u32)(FreKhz*1000));
write_CSR(0x40); //通道2
set_frequency((u32)((FreKhz+50)*1000));
SET_IOUPDATE;
while (i--);
CLR_IOUPDATE;
}延时没有很精确,仅做参考。
来自:求助得到的回答
全部回答
- 1楼网友:雾月
- 2021-03-31 03:20
了解adc的原理, 看码,看码,看码,一直看到吐,吐过几次之后你就会了
希望能解决您的问题。
希望能解决您的问题。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯