日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32F103驅(qū)動(dòng)AD9959模塊 DDS信號(hào)發(fā)生器輸出正弦波可編程信號(hào)

jf_88434166 ? 來源:jf_88434166 ? 作者:jf_88434166 ? 2026-05-06 10:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、AD9959模塊簡介

AD9959可以執(zhí)行高達(dá)16階的頻率、相位或幅度調(diào)制(FSK、PSK、 ASK)通過將數(shù)據(jù)施加到模式引腳,可執(zhí)行調(diào)制。此外,AD9959 還支持線性頻率、幅度或相位掃描,適合雷達(dá)、儀器儀表等應(yīng)用。 AD9959的串行I/0端口可支持多種配置,提供了極大的靈活性。與 ADI公司以往DDS產(chǎn)品中提供的SPI工作模式類似,串行I/O端C提 供SPI兼容工作模式,四個(gè)數(shù)據(jù)引腳(SDIO_0/SDIO_1/SDIO.2/ SDIO_3)對(duì)應(yīng)串行/0的四種可編程模式,從而提供了靈活性。

性能參數(shù)

  • 供電電壓/電流DC 5V 320mA(max)
  • 通訊協(xié)議:SPI串行
  • 系統(tǒng)主頻:500MHz
  • DCA分辨率位數(shù):10位
  • 相位累加器位數(shù):32位
  • 輸出信號(hào):正弦波(帶200MHz低通濾波器
  • 輸出通道:4通道(每個(gè)通道都可以獨(dú)立調(diào)節(jié)頻率,幅度,相位)
  • 信號(hào)特點(diǎn):耦合輸出(模塊通電容耦合輸出,極低頻率輸出幅度較小,可以直接使用示波器測(cè)量)
  • 最高主頻輸出正弦波:1Hz-200MHz
  • 輸出幅度:正弦波530mVpp(max),正弦波隨著頻率增加幅度減少
  • 輸出高阻:高阻

模塊應(yīng)用

  • 多通道信號(hào)源,頻率信號(hào)發(fā)生器,正弦波信號(hào)發(fā)生器,傳感器激勵(lì)

二、AD9959接口圖和功能框圖


每個(gè)DDS通道內(nèi)部結(jié)構(gòu):頻率控制字FTW + 相位累加器 + 相位偏移 + SIN查找表 + 幅度控制 + DAC
DDS核心模塊作用:

  1. 相位累加器:每個(gè)時(shí)鐘周期執(zhí)行:Phase = Phase + FTW,F(xiàn)TW越大,相位增長越快,輸出頻率越高。
  2. 正弦查找表:將相位值轉(zhuǎn)換為:sin(phase)得到數(shù)字正弦信號(hào)。
  3. 幅度控制:控制輸出信號(hào)振幅。
  4. DAC:DAC將數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào)輸出。AD9959每個(gè)通道都有 獨(dú)立DAC。

三、AD9959串行通訊

AD9959 的串行操作是在寄存器級(jí)別進(jìn)行的,而不是字節(jié)級(jí)別;也就是說,控制器期望訪問寄存器地址中包含的所有字節(jié)??梢允褂?SYNC_I/O 函數(shù)中止 I/O 操作,從而允許訪問部分字節(jié)。此功能可用于僅對(duì)尋址寄存器的一部分進(jìn)行編程。請(qǐng)注意,只有已完成的字節(jié)才會(huì)受到影響。

串行通信周期分為兩個(gè)階段。階段 1 是指令周期,它將指令字節(jié)寫入 AD9959。指令字節(jié)的每一位都在 SCLK 的每個(gè)相應(yīng)上升沿被寫入。指令字節(jié)定義了即將進(jìn)行的數(shù)據(jù)傳輸是寫入操作還是讀取操作。指令字節(jié)包含地址寄存器的串行地址。

I/O 周期的階段 2 包括串行端口控制器和串行端口緩沖區(qū)之間的實(shí)際數(shù)據(jù)傳輸(寫入/讀?。?。在此通信周期階段傳輸?shù)淖止?jié)數(shù)取決于所訪問的寄存器。數(shù)據(jù)傳輸和指令字節(jié)所需的額外 SCLK 上升沿的實(shí)際數(shù)量取決于寄存器中的字節(jié)數(shù)和串行 I/O 操作模式。

例如,訪問寬度為 3 字節(jié)的功能寄存器 1 (FR1) 時(shí),I/O 周期的第二階段需要傳輸 3 個(gè)字節(jié)。在傳輸完每個(gè)指令字節(jié)的所有數(shù)據(jù)字節(jié)后,該寄存器的通信周期即告完成。通信周期完成后,AD9959 串行端口控制器期望下一組 SCLK 上升沿作為下一個(gè)通信周期的指令字節(jié)。所有寫入 AD9959 的數(shù)據(jù)都在 SCLK 上升沿時(shí)被讀取。數(shù)據(jù)在 SCLK 下降沿時(shí)被讀?。▍⒁妶D 43 至圖 49)。圖 41 和圖 42 的時(shí)序規(guī)格在表 25 中描述。

階段 1:
每個(gè)通信周期不需要發(fā)出 I/O 更新指令。I/O 更新指令將數(shù)據(jù)從 I/O 端口緩沖區(qū)傳輸?shù)接行Ъ拇嫫鳌/O 更新指令可以在每個(gè)通信周期發(fā)送,也可以在所有串行操作完成后發(fā)送。但是,數(shù)據(jù)只有在發(fā)送 I/O 更新指令后才會(huì)生效,通道選擇寄存器 (CSR) 中的通道使??能位除外。這些通道使能位不需要 I/O 更新指令即可啟用。

指令字節(jié)描述
指令字節(jié)包含以下信息:

指令字節(jié)(讀/寫)的 D7 位決定指令字節(jié)寫入后是進(jìn)行讀取還是寫入數(shù)據(jù)傳輸。邏輯高電平表示讀取操作,邏輯低電平表示寫入操作。指令字節(jié)的 D4 位到 D0 位決定在通信周期的數(shù)據(jù)傳輸階段訪問哪個(gè)寄存器。內(nèi)部字節(jié)地址由 AD9959 生成。

階段 2:
串行 I/O 操作模式
串行 I/O 端口有四種可編程操作模式:

  • 單比特串行 2 線模式(默認(rèn)模式)
  • 單比特串行 3 線模式
  • 2 比特串行模式
  • 4 比特串行模式(SYNC_I/O 不可用)

表 26 顯示了所有六個(gè)串行 I/O 接口引腳的功能,具體取決于所編程的串行 I/O 操作模式。

通道選擇寄存器 CSR[2:1] 中的兩位設(shè)置串行 I/O 操作模式,定義見表 27。

單比特串行(2線和3線)模式

單比特串行模式接口允許對(duì)配置AD9959的所有寄存器進(jìn)行讀/寫訪問。支持MSB優(yōu)先或LSB優(yōu)先的傳輸格式。此外,單比特串行模式接口端口可以配置為單引腳I/O(支持2線接口),也可以配置為兩個(gè)單向輸入/輸出引腳(支持3線接口)。單比特模式允許使用SYNC_I/O函數(shù)。

在單比特串行模式的2線接口操作中,SDIO_0引腳是單路串行數(shù)據(jù)I/O引腳。在單比特串行模式的3線接口操作中,SDIO_0引腳是串行數(shù)據(jù)輸入引腳,SDIO_2引腳是輸出數(shù)據(jù)引腳。無論接口中使用的導(dǎo)線數(shù)量如何,SDIO_3 引腳均配置為輸入,并在單比特串行模式和雙比特串行模式下作為 SYNC_I/O 引腳工作。在此模式下,SDIO_1 引腳未使用(參見表 26)。

雙比特串行模式

雙比特串行模式下的 SPI 端口操作與單比特串行模式下的 SPI 端口操作相同,區(qū)別在于 SCLK 的每個(gè)上升沿會(huì)記錄兩位數(shù)據(jù)。因此,傳輸八位信息僅需四個(gè)時(shí)鐘周期。SDIO_0 引腳包含偶數(shù)位數(shù)據(jù),表示為 D[7:0],SDIO_1 引腳包含奇數(shù)位數(shù)據(jù)。這種奇偶位引腳/數(shù)據(jù)對(duì)齊方式在 MSB 優(yōu)先和 LSB 優(yōu)先兩種格式中均有效(參見圖 44)。

4 位串行模式

4 位串行模式下的 SPI 端口與 1 位串行模式下的 SPI 端口相同,區(qū)別在于 SCLK 的每個(gè)上升沿會(huì)寫入 4 位數(shù)據(jù)。因此,傳輸 8 位信息僅需兩個(gè)時(shí)鐘周期。SDIO_0 和 SDIO_2 引腳包含偶數(shù)位數(shù)據(jù),表示為 D[7:0],其中 SDIO_0 引腳包含半字節(jié)的最低有效位 (LSB)。SDIO_1 和 SDIO_3 引腳包含奇數(shù)位數(shù)據(jù),其中 SDIO_1 引腳包含要訪問的半字節(jié)的最低有效位 (LSB)。

請(qǐng)注意,在將設(shè)備編程為 4 位串行模式時(shí),務(wù)必將 SDIO_3 引腳保持為邏輯 0,直到設(shè)備從 1 位串行模式編程出來為止。否則,可能會(huì)導(dǎo)致串行 I/O 端口控制器亂序。

圖 43 至圖 45 分別展示了各種串行 I/O 模式的寫入時(shí)序圖。圖中同時(shí)顯示了 MSB 優(yōu)先和 LSB 優(yōu)先兩種模式。LSB 優(yōu)先位以括號(hào)標(biāo)出。圖中所示的時(shí)鐘停頓低/高電平特性并非必需,其作用在于表明數(shù)據(jù)(SDIO)的建立時(shí)間必須相對(duì)于 SCLK 的上升沿正確。

圖 46 至圖 49 分別展示了各種串行 I/O 模式的讀取時(shí)序圖。圖中同時(shí)顯示了 MSB 優(yōu)先和 LSB 優(yōu)先兩種模式。LSB 優(yōu)先位以括號(hào)標(biāo)出。圖中所示的時(shí)鐘停頓低/高電平特性并非必需,其作用在于表明數(shù)據(jù)(SDIO)的建立時(shí)間必須相對(duì)于 SCLK 的上升沿正確,以確保指令字節(jié)和緊隨 SCLK 下降沿之后的讀取數(shù)據(jù)的建立時(shí)間。

四、AD9959主要寄存器說明

  1. 通道選擇寄存器 (CSR) — 地址 0x00:CSR 通過四個(gè)通道使能位的狀態(tài)來決定通道的啟用或禁用狀態(tài)。默認(rèn)情況下,所有四個(gè)通道均啟用。CSR 還決定選擇哪種串行操作模式。此外,CSR 還提供 MSB 優(yōu)先或 LSB 優(yōu)先兩種數(shù)據(jù)格式選擇。
  2. 功能寄存器 1 (FR1)—地址 0x01:FR1 用于控制芯片的工作模式。
  3. 通道功能寄存器 (CFR)—地址 0x03
  4. 信道頻率調(diào)諧字 0 (CFTW0)—地址 0x04 / 通道相位偏移字 0 (CPOW0)—地址 0x05
  5. 幅度控制寄存器(ACR)—地址0x06

五、AD9959頻率、幅度、相位的轉(zhuǎn)換

計(jì)算增量頻率、增量相位或增量幅度的 RDW 或 FDW 步長的公式如下:

根據(jù) RSRR 或 FSRR 計(jì)算增量時(shí)間的公式為:t = (RSRR) × 1 / SYNC_CLK。
在 500 MSPS 操作(SYNC_CLK = 125 MHz)下,步長之間的最大時(shí)間間隔為 1/125 MHz × 256 = 2.048 μs。最小時(shí)間間隔為 (1/125 MHz) × 1 = 8.0 ns。

六、STM32F103驅(qū)動(dòng)AD9959模塊

準(zhǔn)備工作

STM32F103C8T6開發(fā)板,AD9959模塊,OLED顯示屏,導(dǎo)線若干。

接線說明

STM32F103C8T6AD9959
PA0P0
PA1P1
PA2P2
PA3P3
PA4SD0
PA5SD1
PA6SD2
PA7SD3
PB0CS
PB1SCK
PB10UP
PB5RST
PB6PDC
PB8OLED->SCL
PB9OLED->SDA

代碼示例

AD9959.c

#include "AD9959.H"
//#include "task_manage.h"

u8 CSR_DATA0[1] = {0x10};     // 開 CH0
u8 CSR_DATA1[1] = {0x20};      // 開 CH1
u8 CSR_DATA2[1] = {0x40};      // 開 CH2
u8 CSR_DATA3[1] = {0x80};      // 開 CH3		
																	
 
u8 FR2_DATA[2] = {0x20,0x00};//default Value = 0x0000
u8 CFR_DATA[3] = {0x00,0x03,0x02};//default Value = 0x000302	   
																	
u8 CPOW0_DATA[2] = {0x00,0x00};//default Value = 0x0000   @ = POW/2^14*360
																	


u8 LSRR_DATA[2] = {0x00,0x00};//default Value = 0x----
																	
u8 RDW_DATA[4] = {0x00,0x00,0x00,0x00};//default Value = 0x--------
																	
u8 FDW_DATA[4] = {0x00,0x00,0x00,0x00};//default Value = 0x--------

//AD9959初始化
void Init_AD9959(void)  
{ 
	GPIO_InitTypeDef  GPIO_InitStructure;       
 	u8 FR1_DATA[3] = {0xD0,0x00,0x00};//20倍頻 Charge pump control = 75uA FR1< 23 > -- VCO gain control =0時(shí) system clock below 160 MHz;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);	 //PA,PB,PC端口時(shí)鐘使能
	
	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;//初始化管腳PA2.3.4.5.6.7.8.9.10
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽輸出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;		 //IO口速度為2MHz
	GPIO_Init(GPIOA, &GPIO_InitStructure);					 //根據(jù)設(shè)定參數(shù)初始化GPIOA
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_10|GPIO_Pin_5|GPIO_Pin_6;//初始化管腳PB0.1.10			
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽輸出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;		 //IO口速度為2MHz
	GPIO_Init(GPIOB, &GPIO_InitStructure);					 //根據(jù)設(shè)定參數(shù)初始化GPIOB

	Intserve();  //IO口初始化
	IntReset();  //AD9959復(fù)位  

	WriteData_AD9959(FR1_ADD,3,FR1_DATA,1);//寫功能寄存器1
	WriteData_AD9959(FR2_ADD,2,FR2_DATA,1);
//  WriteData_AD9959(CFR_ADD,3,CFR_DATA,1);
//  WriteData_AD9959(CPOW0_ADD,2,CPOW0_DATA,0);
//  WriteData_AD9959(ACR_ADD,3,ACR_DATA,0);
//  WriteData_AD9959(LSRR_ADD,2,LSRR_DATA,0);
//  WriteData_AD9959(RDW_ADD,2,RDW_DATA,0);
//  WriteData_AD9959(FDW_ADD,4,FDW_DATA,1);
   //寫入初始頻率
	
} 
//延時(shí)
void delay1 (u32 length)
{
	length = length*12;
   while(length--);
}
//IO口初始化
void Intserve(void)		   
{   
	AD9959_PWR=0;
    CS = 1;
    SCLK = 0;
    UPDATE = 0;
    PS0 = 0;
    PS1 = 0;
    PS2 = 0;
    PS3 = 0;
    SDIO0 = 0;
    SDIO1 = 0;
    SDIO2 = 0;
    SDIO3 = 0;
}
//AD9959復(fù)位
void IntReset(void)	  
{
	Reset = 0;
	delay1(1);
	Reset = 1;
	delay1(30);
	Reset = 0;
}
 //AD9959更新數(shù)據(jù)
void IO_Update(void)  
{
	UPDATE = 0;
	delay1(2);
	UPDATE = 1;
	delay1(4);
	UPDATE = 0;
}
/*--------------------------------------------
函數(shù)功能:控制器通過SPI向AD9959寫數(shù)據(jù)
RegisterAddress: 寄存器地址
NumberofRegisters: 所含字節(jié)數(shù)
*RegisterData: 數(shù)據(jù)起始地址
temp: 是否更新IO寄存器
----------------------------------------------*/
void WriteData_AD9959(u8 RegisterAddress, u8 NumberofRegisters, u8 *RegisterData,u8 temp)
{
	u8	ControlValue = 0;
	u8	ValueToWrite = 0;
	u8	RegisterIndex = 0;
	u8	i = 0;

	ControlValue = RegisterAddress;
//寫入地址
	SCLK = 0;
	CS = 0;	 
	for(i=0; i< 8; i++)
	{
		SCLK = 0;
		if(0x80 == (ControlValue & 0x80))
		SDIO0= 1;	  
		else
		SDIO0= 0;	  
		SCLK = 1;
		ControlValue < <= 1;
	}
	SCLK = 0;
//寫入數(shù)據(jù)
	for (RegisterIndex=0; RegisterIndex< NumberofRegisters; RegisterIndex++)
	{
		ValueToWrite = RegisterData[RegisterIndex];
		for (i=0; i< 8; i++)
		{
			SCLK = 0;
			if(0x80 == (ValueToWrite & 0x80))
			SDIO0= 1;	  
			else
			SDIO0= 0;	  
			SCLK = 1;
			ValueToWrite < <= 1;
		}
		SCLK = 0;		
	}	
	if(temp != 0)
	IO_Update();	
  CS = 1;
} 
/*---------------------------------------
函數(shù)功能:設(shè)置通道輸出頻率
Channel:  輸出通道
Freq:     輸出頻率
---------------------------------------*/
void Write_frequence(u8 Channel,u32 Freq)
{	 
		u8 CFTW0_DATA[4] ={0x00,0x00,0x00,0x00};	//中間變量
	  u32 Temp;            
	  Temp=(u32)Freq*8.589934592;	   //將輸入頻率因子分為四個(gè)字節(jié)  8.589934592=(2^32)/500000000 其中500M=25M*20(倍頻數(shù)可編程)
	  CFTW0_DATA[3]=(u8)Temp;
	  CFTW0_DATA[2]=(u8)(Temp > >8);
	  CFTW0_DATA[1]=(u8)(Temp > >16);
	  CFTW0_DATA[0]=(u8)(Temp > >24);
	  if(Channel==0)	  
	  {
			WriteData_AD9959(CSR_ADD,1,CSR_DATA0,1);//控制寄存器寫入CH0通道
      WriteData_AD9959(CFTW0_ADD,4,CFTW0_DATA,1);//CTW0 address 0x04.輸出CH0設(shè)定頻率
		}
	  else if(Channel==1)	
	  {
			WriteData_AD9959(CSR_ADD,1,CSR_DATA1,1);//控制寄存器寫入CH1通道
      WriteData_AD9959(CFTW0_ADD,4,CFTW0_DATA,1);//CTW0 address 0x04.輸出CH1設(shè)定頻率	
	  }
	  else if(Channel==2)	
	  {
			WriteData_AD9959(CSR_ADD,1,CSR_DATA2,1);//控制寄存器寫入CH2通道
      WriteData_AD9959(CFTW0_ADD,4,CFTW0_DATA,1);//CTW0 address 0x04.輸出CH2設(shè)定頻率	
	  }
	  else if(Channel==3)	
	  {
			WriteData_AD9959(CSR_ADD,1,CSR_DATA3,1);//控制寄存器寫入CH3通道
      WriteData_AD9959(CFTW0_ADD,4,CFTW0_DATA,1);//CTW0 address 0x04.輸出CH3設(shè)定頻率	
	  }																																																																										 
	
} 
/*---------------------------------------
函數(shù)功能:設(shè)置通道輸出幅度
Channel:  輸出通道
Ampli:    輸出幅度
---------------------------------------*/
void Write_Amplitude(u8 Channel, u16 Ampli)
{ 
	u16 A_temp;//=0x23ff;
	u8 ACR_DATA[3] = {0x00,0x00,0x00};//default Value = 0x--0000 Rest = 18.91/Iout 
	
  A_temp=Ampli|0x1000;
	ACR_DATA[2] = (u8)A_temp;  //低位數(shù)據(jù)
  ACR_DATA[1] = (u8)(A_temp > >8); //高位數(shù)據(jù)
  if(Channel==0)
  {
		WriteData_AD9959(CSR_ADD,1,CSR_DATA0,1); 
    WriteData_AD9959(ACR_ADD,3,ACR_DATA,1); 
	}
  else if(Channel==1)
  {
		WriteData_AD9959(CSR_ADD,1,CSR_DATA1,1); 
    WriteData_AD9959(ACR_ADD,3,ACR_DATA,1);
	}
  else if(Channel==2)
  {
	  WriteData_AD9959(CSR_ADD,1,CSR_DATA2,1); 
    WriteData_AD9959(ACR_ADD,3,ACR_DATA,1); 
	}
  else if(Channel==3)
  {
		WriteData_AD9959(CSR_ADD,1,CSR_DATA3,1); 
    WriteData_AD9959(ACR_ADD,3,ACR_DATA,1); 
	}
}
/*---------------------------------------
函數(shù)功能:設(shè)置通道輸出相位
Channel:  輸出通道
Phase:    輸出相位,范圍:0~16383(對(duì)應(yīng)角度:0°~360°)
---------------------------------------*/
void Write_Phase(u8 Channel,u16 Phase)
{
	u16 P_temp=0;
  P_temp=(u16)Phase;
	CPOW0_DATA[1]=(u8)P_temp;
	CPOW0_DATA[0]=(u8)(P_temp > >8);
	if(Channel==0)
  {
		WriteData_AD9959(CSR_ADD,1,CSR_DATA0,1); 
    WriteData_AD9959(CPOW0_ADD,2,CPOW0_DATA,1);
  }
  else if(Channel==1)
  {
		WriteData_AD9959(CSR_ADD,1,CSR_DATA1,1); 
    WriteData_AD9959(CPOW0_ADD,2,CPOW0_DATA,1);
  }
  else if(Channel==2)
  {
		WriteData_AD9959(CSR_ADD,1,CSR_DATA2,1); 
    WriteData_AD9959(CPOW0_ADD,2,CPOW0_DATA,1);
  }
  else if(Channel==3)
  {
		WriteData_AD9959(CSR_ADD,1,CSR_DATA3,1); 
    WriteData_AD9959(CPOW0_ADD,2,CPOW0_DATA,1);
  }
}

main.c

#include "stm32_config.h"
#include "stdio.h"
#include "OLED.h"
#include "AD9959.h"

uint32_t SinFre[5] = {10000,10000,50,50};		//調(diào)頻
uint32_t SinAmp[5] = {1023, 1023, 1023, 1023};	//調(diào)幅,范圍0~1023,對(duì)應(yīng)0~500mVpp左右
uint32_t SinPhr[5] = {0, 4095*2, 4095*3, 4095};	//調(diào)相位,范圍0~16383,對(duì)應(yīng)0~360°

int main(void)
{
	MY_NVIC_PriorityGroup_Config(NVIC_PriorityGroup_2);	//設(shè)置中斷分組
	delay_init(72);	//初始化延時(shí)函數(shù)
	
	OLED_Init();
	Init_AD9959();
	
	delay_ms(100);
	
	OLED_ShowString(0,0,"CH0: ",16,1);
	OLED_ShowString(0,16,"CH1: ",16,1);
	OLED_ShowString(0,32,"CH2: ",16,1);
	OLED_ShowString(0,48,"CH3: ",16,1);
	
	
	while(1)
	{
		Write_frequence(3,SinFre[3]);
		Write_frequence(0,SinFre[0]); 
		Write_frequence(1,SinFre[1]);
		Write_frequence(2,SinFre[2]);

		Write_Phase(3, SinPhr[3]);
		Write_Phase(0, SinPhr[0]);
		Write_Phase(1, SinPhr[1]);
		Write_Phase(2, SinPhr[2]);
		
		Write_Amplitude(3, SinAmp[3]);
		Write_Amplitude(0, SinAmp[0]);
		Write_Amplitude(1, SinAmp[1]);
		Write_Amplitude(2, SinAmp[2]);
		
//		OLED_ShowNum(35, 0, SinFre[0], 9, 16, 1);
//		OLED_ShowNum(35, 16, SinFre[1], 9, 16, 1);
//		OLED_ShowNum(35, 32, SinFre[2], 9, 16, 1);
//		OLED_ShowNum(35, 48, SinFre[3], 9, 16, 1);
//		OLED_ShowString(110,0,"Hz",16,1);
//		OLED_ShowString(110,16,"Hz",16,1);
//		OLED_ShowString(110,32,"Hz",16,1);
//		OLED_ShowString(110,48,"Hz",16,1);
//		
//		OLED_ShowNum(35, 0, SinAmp[0], 4, 16, 1);
//		OLED_ShowNum(35, 16, SinAmp[1], 4, 16, 1);
//		OLED_ShowNum(35, 32, SinAmp[2], 4, 16, 1);
//		OLED_ShowNum(35, 48, SinAmp[3], 4, 16, 1);
//		OLED_ShowString(70,0,"A",16,1);
//		OLED_ShowString(70,16,"A",16,1);
//		OLED_ShowString(70,32,"A",16,1);
//		OLED_ShowString(70,48,"A",16,1);
		
		OLED_ShowNum(35, 0, SinPhr[0], 5, 16, 1);
		OLED_ShowNum(35, 16, SinPhr[1], 5, 16, 1);
		OLED_ShowNum(35, 32, SinPhr[2], 5, 16, 1);
		OLED_ShowNum(35, 48, SinPhr[3], 5, 16, 1);
		OLED_ShowString(80,0,"P",16,1);
		OLED_ShowString(80,16,"P",16,1);
		OLED_ShowString(80,32,"P",16,1);
		OLED_ShowString(80,48,"P",16,1);
	
		OLED_Refresh();
	}
}

效果展示



七、注意事項(xiàng)與常見問題

注意事項(xiàng)
(1) 模塊電流消耗較大,供電電源需要有一定余量,建議使用5V 1A以上供電。
(2)由于模塊是高精度器件,為了避免不必要的干擾,建議使用線性電源供電。
(3)輸出信號(hào)建議使用SMA轉(zhuǎn)BNC的線直接示波器觀測(cè)效果,接觸不良或劣質(zhì)的線材可能導(dǎo)致信號(hào)衰減或者噪聲過大。
(4) 由于功耗發(fā)熱較大,長時(shí)間工作注意通風(fēng)散熱。
(5) 如需簡單測(cè)試模塊功能,建議搭配本店控制板使用,先給 DDS模塊供電,再給控制板供電即可產(chǎn)生波形,長按中間鍵切換功能。
(6) 配送的代碼僅為配套主控板使用,不提供單片機(jī)教程,額外功能需要自行開發(fā)。

常見問題
Q:AD9959模塊的4個(gè)輸出通道可以設(shè)置成不同的頻率輸出嗎?
A:可以,AD9959模塊的4個(gè)輸出通道的頻率、幅度、相位均可獨(dú)立調(diào)節(jié)。

Q:??斓闹黝l是多少?輸出幅度可以調(diào)節(jié)?
A:模塊的主頻是輸入時(shí)鐘和程序一起決定的,模塊可以外部輸入時(shí)鐘,板載默認(rèn)時(shí)鐘為25MHz,程序控制倍頻為20倍,即默認(rèn)主頻為500MHz,可以通過修改輸入時(shí)鐘和倍頻數(shù)改變主頻,輸入時(shí)鐘必須是在20MHz-30MHz之間。輸出幅度可以通過修改10位幅度寄存器控制輸出幅度。需要自行修改程序哦。

Q:模塊可以實(shí)現(xiàn)掃頻么?可以產(chǎn)生方波信號(hào)嗎?
A:模塊可以實(shí)現(xiàn)掃頻,本店提供的代碼可支持掃頻。需要方波的可以搭配本店高速比較器轉(zhuǎn)換為方波。AD9959只能輸出正弦波信號(hào),4通道的頻率幅度相位都是獨(dú)立和可調(diào)的。

Q:為什么每次設(shè)置完通道間的相位差不是預(yù)設(shè)值,每次都不一樣?
A:這個(gè)是寫寄存器的順序?qū)е碌模葘戭l率寄存器,再寫幅度寄存器,最后寫相位寄存器,這樣相位寄存器的值才是預(yù)設(shè)值。

Q:怎么實(shí)現(xiàn)幅度,相位的調(diào)節(jié)?
A:本店搭配的主控板可以實(shí)現(xiàn)頻率幅度相位的調(diào)節(jié),長按中間鍵切換到調(diào)節(jié)界面和掃頻界面。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 正弦波
    +關(guān)注

    關(guān)注

    11

    文章

    663

    瀏覽量

    59408
  • 信號(hào)發(fā)生器

    關(guān)注

    28

    文章

    1737

    瀏覽量

    113702
  • STM32F103
    +關(guān)注

    關(guān)注

    34

    文章

    499

    瀏覽量

    68266
  • AD995
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5435
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    AD9959:4 通道 500 MSPS DDS 芯片的詳細(xì)解析

    一款高性能的 DDS 芯片——AD9959。 文件下載: AD9959.pdf 一、AD9959 概述 AD9959 是一款集成了四個(gè)直接數(shù)
    的頭像 發(fā)表于 04-16 10:45 ?154次閱讀

    AD5930可編程頻率掃描與輸出突發(fā)波形發(fā)生器:功能特性與應(yīng)用解析

    AD5930可編程頻率掃描與輸出突發(fā)波形發(fā)生器:功能特性與應(yīng)用解析 一、引言 在電子設(shè)計(jì)領(lǐng)域,波形發(fā)生器是一個(gè)非常重要的組件,它廣泛應(yīng)用于頻率掃描、雷達(dá)、網(wǎng)絡(luò)/阻抗測(cè)量等多個(gè)領(lǐng)域。今天
    的頭像 發(fā)表于 04-14 16:40 ?133次閱讀

    可編程頻率掃描波形發(fā)生器AD5932:特性、應(yīng)用與設(shè)計(jì)指南

    可編程頻率掃描波形發(fā)生器AD5932:特性、應(yīng)用與設(shè)計(jì)指南 在電子設(shè)計(jì)領(lǐng)域,波形發(fā)生器是一種基礎(chǔ)且關(guān)鍵的設(shè)備,它為各種電子系統(tǒng)提供必要的信號(hào)源。今天,我們將深入探討一款名為AD5932
    的頭像 發(fā)表于 04-14 14:35 ?125次閱讀

    AD9833:低功耗可編程波形發(fā)生器的卓越之選

    AD9833:低功耗可編程波形發(fā)生器的卓越之選 在電子設(shè)計(jì)領(lǐng)域,波形發(fā)生器是眾多應(yīng)用中不可或缺的關(guān)鍵組件。今天,我們將深入探討一款性能出色的低功耗、可編程波形
    的頭像 發(fā)表于 03-03 16:10 ?362次閱讀

    可編程的多路脈沖信號(hào)發(fā)生器 高速脈沖信號(hào)發(fā)生器 1hz脈沖信號(hào)發(fā)生器

    信號(hào)發(fā)生器
    知道點(diǎn)啥
    發(fā)布于 :2026年01月30日 10:24:38

    基于STM32F103驅(qū)動(dòng)DAC1220 20位/16位DAC數(shù)模轉(zhuǎn)換模塊輸出可調(diào)±10V基準(zhǔn)和三角信號(hào)

    小等特點(diǎn)。工作電壓5V,20位模式下建立時(shí)間15ms,16位模式僅需2ms。本文將用STM32F103驅(qū)動(dòng)DAC1220,實(shí)現(xiàn)生成三角信號(hào)輸出
    的頭像 發(fā)表于 01-10 10:31 ?4366次閱讀
    基于<b class='flag-5'>STM32F103</b><b class='flag-5'>驅(qū)動(dòng)</b>DAC1220 20位/16位DAC數(shù)模轉(zhuǎn)換<b class='flag-5'>模塊</b><b class='flag-5'>輸出</b>可調(diào)±10V基準(zhǔn)和三角<b class='flag-5'>波</b><b class='flag-5'>信號(hào)</b>

    基于STM32F103驅(qū)動(dòng)AD9833模塊 DDS信號(hào)發(fā)生器輸出正弦波/三角/方波可編程信號(hào)

    AD9833是一款低功耗可編程波形發(fā)生器,能輸出正弦波、三角和方波,頻率范圍為1Hz-9MHz,采用SPI串行通信。具有28位頻率寄存
    的頭像 發(fā)表于 01-10 10:30 ?4037次閱讀
    基于<b class='flag-5'>STM32F103</b><b class='flag-5'>驅(qū)動(dòng)</b>AD9833<b class='flag-5'>模塊</b> <b class='flag-5'>DDS</b><b class='flag-5'>信號(hào)</b><b class='flag-5'>發(fā)生器</b><b class='flag-5'>輸出</b><b class='flag-5'>正弦波</b>/三角<b class='flag-5'>波</b>/方波<b class='flag-5'>可編程</b><b class='flag-5'>信號(hào)</b>

    如何調(diào)節(jié)普源DG5502 Pro信號(hào)發(fā)生器產(chǎn)生正弦波的頻率

    普源DG5502 Pro信號(hào)發(fā)生器是一款功能強(qiáng)大的電子測(cè)試設(shè)備,廣泛應(yīng)用于通信、科研和工業(yè)領(lǐng)域。本文將詳細(xì)介紹如何通過該設(shè)備生成正弦波信號(hào)并精準(zhǔn)調(diào)節(jié)其頻率,幫助用戶掌握基礎(chǔ)操作與高級(jí)調(diào)
    的頭像 發(fā)表于 12-17 16:03 ?498次閱讀
    如何調(diào)節(jié)普源DG5502 Pro<b class='flag-5'>信號(hào)</b><b class='flag-5'>發(fā)生器</b>產(chǎn)生<b class='flag-5'>正弦波</b>的頻率

    基于STM32F103 并行驅(qū)動(dòng)AD9851模塊 DDS函數(shù)信號(hào)發(fā)生器輸出正弦波/方波信號(hào)

    一、AD9851模塊簡介 ??AD9851是一款高度集成的器件,采用先進(jìn)的DDS技術(shù),再加上內(nèi)部高速,高性能的D/A轉(zhuǎn)換和比較,形成一個(gè)數(shù)字可編
    發(fā)表于 11-04 10:31

    普源DG1022Z信號(hào)發(fā)生器正弦波頻率調(diào)節(jié)指南

    普源DG1022Z信號(hào)發(fā)生器作為一款高性能的雙通道波形發(fā)生器,可靈活輸出正弦波、方波、三角等多
    的頭像 發(fā)表于 10-14 16:53 ?1093次閱讀
    普源DG1022Z<b class='flag-5'>信號(hào)</b><b class='flag-5'>發(fā)生器</b><b class='flag-5'>正弦波</b>頻率調(diào)節(jié)指南

    信號(hào)發(fā)生器產(chǎn)生正弦波的頻率精準(zhǔn)調(diào)節(jié)方法

    一、技術(shù)原理與核心方法 正弦波頻率的精準(zhǔn)調(diào)節(jié)依賴于信號(hào)發(fā)生器的內(nèi)部架構(gòu)與算法,常見技術(shù)包括: 1. 直接數(shù)字頻率合成(DDS)技術(shù) 通過數(shù)字信號(hào)
    的頭像 發(fā)表于 08-27 17:49 ?1302次閱讀
    <b class='flag-5'>信號(hào)</b><b class='flag-5'>發(fā)生器</b>產(chǎn)生<b class='flag-5'>正弦波</b>的頻率精準(zhǔn)調(diào)節(jié)方法

    基于STM32F103驅(qū)動(dòng)SI5351 3通道時(shí)鐘信號(hào)發(fā)生器輸出不同頻率信號(hào)

    本文介紹了如何SI5351基本特性原理,如何用STM32單片機(jī)驅(qū)動(dòng)SI5351模塊輸出三路的正弦波信號(hào)
    的頭像 發(fā)表于 08-10 15:02 ?5158次閱讀
    基于<b class='flag-5'>STM32F103</b><b class='flag-5'>驅(qū)動(dòng)</b>SI5351 3通道時(shí)鐘<b class='flag-5'>信號(hào)</b><b class='flag-5'>發(fā)生器</b><b class='flag-5'>輸出</b>不同頻率<b class='flag-5'>信號(hào)</b>

    TI 正弦波發(fā)生器電路

    該文檔介紹了德州儀器的一款正弦波發(fā)生器電路,其設(shè)計(jì)目標(biāo)為實(shí)現(xiàn)8V/V的交流增益、10kHz的振蕩頻率,采用±2.5V電源供電;電路通過四通道運(yùn)放TLV9064緩沖各RC濾波級(jí)以生成低失真正弦波
    的頭像 發(fā)表于 06-23 14:23 ?2699次閱讀
    TI <b class='flag-5'>正弦波</b><b class='flag-5'>發(fā)生器</b>電路

    信號(hào)發(fā)生器用途及功能討論

    和電容C的儲(chǔ)能特性,讓電流在兩者之間來回振蕩,從而產(chǎn)生正弦波信號(hào)。主振級(jí)產(chǎn)生的信號(hào),經(jīng)過電壓放大器放大,達(dá)到所需的電壓輸出幅度,再通過輸出
    發(fā)表于 06-12 16:25
    句容市| 辉南县| 梁山县| 门源| 昆山市| 建平县| 巴彦淖尔市| 竹溪县| 湘乡市| 南通市| 广元市| 砀山县| 勐海县| 东光县| 凯里市| 龙游县| 儋州市| 洛阳市| 兴山县| 长顺县| 卢龙县| 澎湖县| 绥中县| 乌鲁木齐市| 兴山县| 黎川县| 新乐市| 姜堰市| 习水县| 商水县| 辉县市| 峨边| 龙州县| 阜城县| 台前县| 会理县| 浠水县| 台北县| 新民市| 阳谷县| 汝阳县|