STM32的AD9834驱动程序(C语言)-2_第1页
STM32的AD9834驱动程序(C语言)-2_第2页
STM32的AD9834驱动程序(C语言)-2_第3页
STM32的AD9834驱动程序(C语言)-2_第4页
STM32的AD9834驱动程序(C语言)-2_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

这个是自己调试成功的代码,希望给大家带来方便//=========AD9834.h======================///*------------------------------------------------------------------------------------

***********************AD9834驱动程序********************************

***********************STM32固件函数库V2.0*************************

***********************2011.3.29****************************************

------------------------------------------------------------------------------------*/#ifndef__AD9834_H

#define__AD9834_H#include"stm32f10x_lib.h"#defineTriangle_Wave

0x2002

#defineSine_Wave

0x2028/*AD9834晶振频率*/

#defineAD9834_SYSTEM_COLCK

50000000UL/*AD9834控制引脚*/

#defineAD9834_Control_Port

GPIOC

#defineAD9834_FSYNC

GPIO_Pin_6

#defineAD9834_SCLK

GPIO_Pin_7

#defineAD9834_SDATA

GPIO_Pin_8

#defineAD9834_RESET

GPIO_Pin_9#defineAD9834_FSYNC_SET

GPIO_SetBits(AD9834_Control_Port,AD9834_FSYNC)

#defineAD9834_FSYNC_CLR

GPIO_ResetBits(AD9834_Control_Port,AD9834_FSYNC)

#defineAD9834_SCLK_SET

GPIO_SetBits(AD9834_Control_Port,AD9834_SCLK)

#defineAD9834_SCLK_CLR

GPIO_ResetBits(AD9834_Control_Port,AD9834_SCLK)

#defineAD9834_SDATA_SET

GPIO_SetBits(AD9834_Control_Port,AD9834_SDATA)

#defineAD9834_SDATA_CLR

GPIO_ResetBits(AD9834_Control_Port,AD9834_SDATA)

#defineAD9834_RESET_SET

GPIO_SetBits(AD9834_Control_Port,AD9834_RESET)

#defineAD9834_RESET_CLR

GPIO_ResetBits(AD9834_Control_Port,AD9834_RESET)

#defineFREQ_0

0

#defineFREQ_1

1

#defineDB15

0

#defineDB14

0

#defineDB13

B28

#defineDB12

HLB

#defineDB11

FSEL

#defineDB10

PSEL

#defineDB9

PIN_SW

#defineDB8

RESET

#defineDB7

SLEEP1

#defineDB6

SLEEP12

#defineDB5

OPBITEN

#defineDB4

SIGN_PIB

#defineDB3

DIV2

#defineDB2

0

#defineDB1

MODE

#defineDB0

0#defineCONTROL_REGISTER

(DB15<<15)|(DB14<<14)|(DB13<<13)|(DB12<<12)|(DB11<<11)|(DB10<<10)\

|(DB9<<9)|(DB8<<8)|(DB7<<7)|(DB6<<6)|(DB5<<5)|(DB4<<4)|(DB3<<3)|(DB2<<2)|(DB1<<1)|(DB0<<0)/*AD9834函数声明*/

externvoidAD9834_Write_16Bits(unsignedintdata);

//写一个字到AD9834

externvoidAD9834_Select_Wave(unsignedintinitdata);//选择输出波形

externvoidInit_AD9834();//初始化配置

externvoidAD9834_Set_Freq(unsignedcharfreq_number,unsignedlongfreq);//选择输出寄存器和输出频率值#endif/*AD9834_H*///================================================================////====================AD9834.c======================//#include"stm32f10x_lib.h"

#include"AD9834.h"

/****************************************************************

函数名称:AD9834_Write_16Bits

能:向AD9834写入16为数据

数:data--

要写入的16位数据

返回值

:无

*****************************************************************/

voidAD9834_Write_16Bits(unsignedintdata)

{

unsignedchari=0;

AD9834_SCLK_SET;

AD9834_FSYNC_CLR;

for(i=0;i<16;i++)

{

if(data&0x8000)

AD9834_SDATA_SET;

else

AD9834_SDATA_CLR;

AD9834_SCLK_CLR;

data<<=1;

AD9834_SCLK_SET;

}

AD9834_FSYNC_SET;

}/***********************************************************************************

函数名称:AD9834_Select_Wave

能:软件为控制,

--------------------------------------------------

IOUT正弦波,SIGNBITOUT方波,写FREQREG0,写PHASE0

ad9834_write_16bit(0x2028)

一次性写FREQREG0

ad9834_write_16bit(0x0038)

单独改写FREQREG0的LSB

ad9834_write_16bit(0x1038)

单独改写FREQREG0的MSB

--------------------------------------------------

IOUT三角波,写PHASE0

ad9834_write_16bit(0x2002)

一次性写FREQREG0

ad9834_write_16bit(0x0002)

单独改写FREQREG0的LSB

ad9834_write_16bit(0x1008)

单独改写FREQREG0的MSB

数:initdata--要输入的命令

返回值

:无

************************************************************************************/

voidAD9834_Select_Wave(unsignedintinitdata)

{

AD9834_FSYNC_SET;

AD9834_SCLK_SET;

AD9834_RESET_SET;

AD9834_RESET_SET;

AD9834_RESET_CLR;

AD9834_Write_16Bits(initdata);

}/****************************************************************

函数名称:Init_AD9834

能:初始化AD9834控制引脚

数:无

返回值

:无

*****************************************************************/

voidInit_AD9834()

{

GPIO_InitTypeDefGPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=AD9834_FSYNC|AD9834_SCLK|AD9834_SDATA|AD9834_RESET;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Init(AD9834_Control_Port,&GPIO_InitStructure);

}/****************************************************************

函数名称:AD9834_Set_Freq

能:设置频率值

数:freq_number--要写入的平率寄存器(FREQ_0或FREQ_1)

freq--频率值(Freq_value(value)=Freq_data(data)*FCLK/2^28)

返回值

:无

*****************************************************************/

voidAD9834_Set_Freq(unsignedcharfreq_number,unsignedlongfreq)

{

unsignedlongFREQREG=(unsignedlong)(268435456.0/AD9834_SYSTEM_COLCK*freq);

unsignedintFREQREG_LSB_14BIT=(unsignedint)FREQREG;

unsignedintFREQREG_MSB_14BIT=(unsignedint)(FREQREG>>14);

if(freq_number==FREQ_0)

{

FREQREG_LSB_14BIT&=~(1U<<15);

FREQREG_LSB_14BIT|=1<<14;

FREQREG_MSB_14BIT&=~(1U<<15);

FREQREG_MSB_14BIT|=1<<14;

}

else

{

FREQREG_LSB_14BIT&=~(1<<14);

FREQREG_LSB_14BIT|=1U<<15;

FREQREG_MSB_14BIT&=~(1<<14);

FREQREG

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论