久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于STM32F407的AD9834驅動程序源碼
[打印本頁]
作者:
Crushen
時間:
2018-7-12 17:26
標題:
基于STM32F407的AD9834驅動程序源碼
寫得不是很好,拿出來分享一下,希望大家能夠提點建議!
/* 注:使用時先調用初始化函數初始化IO配置,然后調用AD9834_Select_Wave()選擇波形,最后選擇頻率值即可輸出。 */
stm32源碼如下:
//================AD9834.h======================//
/*-----------------------------------------------------
AD9834驅動程序
STM32固件函數庫V2.0
2011.3.29
-------------------------------------------------------*/
#ifndef __AD9834_H
#define __AD9834_H
#include "stm32f10x_lib.h"
#define Triangle_Wave 0x2002
#define Sine_Wave 0x2028
/* AD9834晶振頻率 */
#define AD9834_SYSTEM_COLCK 50000000UL
/* AD9834 控制引腳 */
#define AD9834_Control_Port GPIOC
#define AD9834_FSYNC GPIO_Pin_6
#define AD9834_SCLK GPIO_Pin_7
#define AD9834_SDATA GPIO_Pin_8
#define AD9834_RESET GPIO_Pin_9
#define AD9834_FSYNC_SET GPIO_SetBits(AD9834_Control_Port ,AD9834_FSYNC)
#define AD9834_FSYNC_CLR GPIO_ResetBits(AD9834_Control_Port ,AD9834_FSYNC)
#define AD9834_SCLK_SET GPIO_SetBits(AD9834_Control_Port ,AD9834_SCLK)
#define AD9834_SCLK_CLR GPIO_ResetBits(AD9834_Control_Port ,AD9834_SCLK)
#define AD9834_SDATA_SET GPIO_SetBits(AD9834_Control_Port ,AD9834_SDATA)
#define AD9834_SDATA_CLR GPIO_ResetBits(AD9834_Control_Port ,AD9834_SDATA)
#define AD9834_RESET_SET GPIO_SetBits(AD9834_Control_Port ,AD9834_RESET)
#define AD9834_RESET_CLR GPIO_ResetBits(AD9834_Control_Port ,AD9834_RESET)
#define FREQ_0 0
#define FREQ_1 1
#define DB15 0
#define DB14 0
#define DB13 B28
#define DB12 HLB
#define DB11 FSEL
#define DB10 PSEL
#define DB9 PIN_SW
#define DB8 RESET
#define DB7 SLEEP1
#define DB6 SLEEP12
#define DB5 OPBITEN
#define DB4 SIGN_PIB
#define DB3 DIV2
#define DB2 0
#define DB1 MODE
#define DB0 0
#define CONTROL_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函數聲明 */
extern void AD9834_Write_16Bits(unsigned int data) ; //寫一個字到AD9834
extern void AD9834_Select_Wave(unsigned int initdata) ; //選擇輸出波形
extern void Init_AD9834() ;//初始化配置
extern void AD9834_Set_Freq(unsigned char freq_number, unsigned long freq) ;//選擇輸出寄存器和輸出頻率值
#endif /* AD9834_H */
//================================================================//
//====================AD9834.c====================================//
#include "stm32f10x_lib.h"
#include "AD9834.h"
/****************************************************************
函數名稱: AD9834_Write_16Bits
功 能: 向AD9834寫入16為數據
參 數: data -- 要寫入的16位數據
返回值 : 無
*****************************************************************/
void AD9834_Write_16Bits(unsigned int data)
{
unsigned char i = 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 -- 要輸入的命令
返回值 :無
************************************************************************************/
void AD9834_Select_Wave(unsigned int initdata)
{
AD9834_FSYNC_SET;
AD9834_SCLK_SET;
AD9834_RESET_SET;
AD9834_RESET_SET;
AD9834_RESET_CLR;
AD9834_Write_16Bits(initdata);
}
/****************************************************************
函數名稱: Init_AD9834
功 能: 初始化AD9834控制引腳
參 數: 無
返回值 : 無
*****************************************************************/
void Init_AD9834()
{
GPIO_InitTypeDef GPIO_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)
返回值 : 無
*****************************************************************/
void AD9834_Set_Freq(unsigned char freq_number, unsigned long freq)
{
unsigned long FREQREG = (unsigned long)(268435456.0/AD9834_SYSTEM_COLCK*freq);
unsigned int FREQREG_LSB_14BIT = (unsigned int)FREQREG;
unsigned int FREQREG_MSB_14BIT = (unsigned int)(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_MSB_14BIT |= 1U<<15;
}
AD9834_Write_16Bits(FREQREG_LSB_14BIT);
AD9834_Write_16Bits(FREQREG_MSB_14BIT);
}
//============================================================//
復制代碼
完整的Word格式文檔51黑下載地址:
基于STM32的-AD9834-驅動程序.doc
(37 KB, 下載次數: 101)
2018-7-12 17:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
藍小丘
時間:
2019-7-27 09:37
感覺在選擇波形的寄存器配置好像有點問題?
作者:
luokuipeng
時間:
2020-2-1 14:47
下載下來學習一下,用407感覺有點浪費啊
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中日韩欧美一级片
|
国产福利视频导航
|
亚洲男人天堂网
|
国产精品久久久久久影视
|
黄色片网站国产
|
欧美不卡在线
|
999久久久
|
国产精品久久久久久久久免费高清
|
在线观看的av
|
国产欧美一区二区三区日本久久久
|
欧美日韩亚洲三区
|
九九热视频这里只有精品
|
免费在线观看成年人视频
|
欧美日韩专区
|
国产精品久久久久久二区
|
奇米久久久
|
亚洲欧美日韩精品久久亚洲区
|
欧美成人自拍视频
|
国产综合久久
|
h片在线免费观看
|
欧美韩一区二区
|
男人天堂免费在线
|
免费观看一区二区三区毛片
|
成年人在线视频
|
欧美在线亚洲
|
91.色
|
欧美a级网站
|
亚洲手机视频在线
|
成人精品视频99在线观看免费
|
中文字幕在线观看
|
欧美综合自拍
|
中文字幕第一页在线
|
av片在线观看网站
|
蜜桃久久
|
国产精品99久久久久久久久
|
午夜精品一区二区三区在线视频
|
av在线免费观看网站
|
国产精品久久久久久久久久免费看
|
精品国产一区二区三区四区在线
|
免费激情
|
午夜欧美
|