前言
Si5351 是一款 I2C 可配置時(shí)鐘發(fā)生器,非常適合在成本敏感型應(yīng)用中替代晶體、晶體振蕩器、壓控晶體振蕩器 (VCXO)、鎖相環(huán) (PLL) 和扇出緩沖器。Si5351 基于 PLL/VCXO + 高分辨率 MultiSynth 小數(shù)分頻器架構(gòu),可在每路輸出上產(chǎn)生高達(dá) 200 MHz 的任意頻率。Si5351 提供三種版本,以滿(mǎn)足各種應(yīng)用需求。Si5351A 使用內(nèi)部振蕩器生成多達(dá) 8 個(gè)自由運(yùn)行時(shí)鐘,可替代晶體和晶體振蕩器。Si5351B 增加了一個(gè)內(nèi)部 VCXO,可靈活地替代自由運(yùn)行時(shí)鐘和同步時(shí)鐘。它無(wú)需使用成本更高的定制可調(diào)晶體,同時(shí)在較寬的調(diào)諧范圍內(nèi)提供可靠的運(yùn)行。Si5351C 具有相同的靈活性,但與外部參考時(shí)鐘 (CLKIN) 同步。
一、SI5351發(fā)生器簡(jiǎn)介
SI5351A是一款I(lǐng)2C 接口、低功耗、高集成度的多輸出時(shí)鐘發(fā)生器,由一個(gè)固定的晶振25MHz輸入,生成最多 3 路獨(dú)立頻率輸出(CLK0/CLK1/CLK2),頻率范圍從8 kHz 到 160MHz(典型為 100MHz)。
主要特性
- 輸入時(shí)鐘源:25MHz 或 27MHz 晶振
- 輸出端口:CLK0、CLK1、CLK2(最多三路)
- 輸出頻率范圍:8kHz ~ 160MHz(典型使用不高于 100MHz)
- 內(nèi)部結(jié)構(gòu):內(nèi)部 PLL x2、MSynth x3、分頻器、R-divider
- 通訊接口:I2C,支持 400kHz 標(biāo)準(zhǔn)通信速率,器件地址:1100000+讀寫(xiě)位
- 輸出類(lèi)型:CMOS 方波輸出
- 電源電壓:3.3 ~ 5VDC
- 工作溫度:-40℃ ~ 85℃

二、功能框圖

PLL:兩個(gè)(PLLA、PLLB),由 XTAL 倍頻得到高頻時(shí)鐘(600-900MHz)
MSynth:三組,分別控制 CLK0/1/2,通過(guò)分頻得到最終輸出
R-0/1/2:在 MSynth 后,還可進(jìn)一步進(jìn)行 1~128 的 2?次分頻(影響輸出頻率)
三、主要寄存器
地址3:配置輸出使能控制,地址15-23:配置外部時(shí)鐘輸入分頻,每路輸出開(kāi)關(guān),通道時(shí)鐘源等
地址2641:配置PLLA/B(設(shè)置VCO頻率),P1, P2, P3 構(gòu)成 PLL 分?jǐn)?shù)乘法器,使得 PLL freq 在 600 ~ 900 MHz 之間。91:配置Multisynth 分頻器(設(shè)置輸出),也是 P1/P2/P3 三段式分頻,要求 R_DIV 分頻值在 4~900 且必須為偶數(shù)
地址42
四、輸出頻率的計(jì)算和配置說(shuō)明
由上面的功能框圖可知,SI5351A包括PLL+MultiSynth(多合成分頻器)+輸出R分頻器,每個(gè)通道都有一個(gè)獨(dú)立的多合成分頻器和R分頻器。此外,還內(nèi)置了一個(gè)工作頻率為 25 MHz 或 27 MHz 的普通振蕩器電路,但它需要一個(gè)外部晶體。PLL由三個(gè)主要電子電路組成:相位比較器、VCO 和反饋分頻器(FMD)。對(duì)于 FMD 的每個(gè)不同編程設(shè)置,VCO 將產(chǎn)生不同的頻率。
為了提高頻率分辨率(從寬步長(zhǎng)到更細(xì)的步長(zhǎng)),Si5351A 的PLL后接了一個(gè)分頻器電路,Skyworks 將其命名為多合成分頻器 (OMD)。在 Si5351A 中,Skyworks 增加了第二個(gè)分頻器級(jí)(稱(chēng)為 R),可以進(jìn)一步劃分合成器產(chǎn)生的頻率。
輸出分頻器的缺點(diǎn)是輸出頻率 (fout) 將低于 VCO 頻率 (fvco)。在 Si5351A 中,最小分頻為 4。這意味著 VCO 頻率總是比輸出頻率高至少四倍。但是,頻率步進(jìn)可以小得多,例如 1 Hz,而不是很寬的頻率步進(jìn),例如 25 kHz。這完全取決于如何設(shè)置 FMD 和 OMD 比例。
如何根據(jù)參考頻率 (fref) 生成所需的輸出頻率 (fout)。輸出頻率由下面的公式表示
f_{out}=frac{f_{ref}·FMD}/{OMD·R}=f_{vco}/{OMD·R}
其中FMD和OMD的比率也可以表示為 FMD=a+b/c,OMD=d+e/f,即基準(zhǔn)頻率和輸出頻率完整關(guān)系為:
f_{out}={f_{ref}·(a+b/c)}/{R·(d+e/f)}
根據(jù)上述公式,除了**f_{out}和f_{ref}**的數(shù)值已知,有七個(gè)未知變量,**f_{ref}**為輸入時(shí)鐘源25M或27M,**f_{out}**為輸出的頻率。看手冊(cè)可知FMD和OMD的比率是有范圍限制的,F(xiàn)MD比率可以從15 + 0/1048575到90 + 0/1048575,OMD比率可以是4,也可以是8+1/1048575~2400,根據(jù)這個(gè)范圍可以得到a=15到90,b=0,c=1048575,注意分母不能為0。R分頻器只能為1,2,4,8,16,32,64,128。輸出低于500KHz,則需使用R分頻。


同時(shí)你還需要了解小數(shù)分頻模式 與 整數(shù)分頻模式,兩者的區(qū)別是對(duì)相位噪聲 / 雜散 / 抖動(dòng) 的影響,F(xiàn)MD和OMD都是可以使用整數(shù)或小數(shù)進(jìn)行分頻,小數(shù)分頻方式允許更靈活地產(chǎn)生任意頻率,F(xiàn)MD 和 OMD 的比率被稱(chēng)為小數(shù)。缺點(diǎn)就是會(huì)引入雜散和相位抖動(dòng)。故如果要求低抖動(dòng)(比如用于 ADC/DAC 時(shí)鐘),應(yīng)盡可能讓分頻系數(shù)為整數(shù),避免小數(shù)。使用什么模式則看你的應(yīng)用,可以都為整數(shù)(只要輸出頻率允許),這樣雜散最低,不過(guò)產(chǎn)生頻率就沒(méi)有那么靈活。如果你只能選擇一個(gè)在小數(shù)模式下工作,那就盡量讓 OMD 是整數(shù)模式,F(xiàn)MD 允許小數(shù),因?yàn)檫@樣輸出頻率的雜散更小。OMD 后面直接連接著你的“輸出引腳”,所以它分頻后的信號(hào)質(zhì)量最直接影響外部設(shè)備。此外,“a”和“d”分別是 輸出頻率公式中的分子/分母,如果能選擇偶數(shù),可以改善調(diào)制器行為,降低雜散。
這里以輸出59.779MHz為例來(lái)分析計(jì)算,通過(guò)反推的技巧,計(jì)算出未知變量的具體值。由手冊(cè)的R分頻說(shuō)明,意味著R=1。VCO頻率范圍要在600M到900MHz內(nèi),使用900MHz進(jìn)行計(jì)算。
R·OMD=OMD=d+e/f}={f_{voc}}/{f_{out}}=900000000/59779000=15.05545425651148
這意味著d=15,又因?yàn)镽=1,所以e / f的比率是0.44133412745682。比率四舍五入,這既不是整數(shù),也不是偶數(shù)。因此將d進(jìn)行四舍五入為偶數(shù)整數(shù),即d=16,然后待回去檢查VCO頻率是否還在600M到900MHz內(nèi)。如果不在,則增大或減少2個(gè)數(shù)值。這里16代入換算是超出VCO頻率范圍的,即d=14。由于希望OMD要在整數(shù)模式下,e / f比值是不重要的。因此可以得到,d=14,e=0,f=1或 ≤ 1048575(最大分辨率)的值都可以。
現(xiàn)在OMD的未知變量知道了,后面繼續(xù)找出FMD的未知變量,即a,b,c。
FMD=a+b/c={R·(d+e/f)·f_{out}}/{f_{ref}}=1·(14+0/1))·59779000/25000000=33.47624
其中33為FMD整數(shù)部分的a,b / c = 0.47624。如何求解余數(shù)部分等式,最直接的方法,就是將c設(shè)為1048575,這樣,b就等于499373.358。
通過(guò)以上的計(jì)算,得到a=33,b=499373.358,c=1048575,d=14,e=0,f=1,R=1。把這些數(shù)值代入驗(yàn)證:
f_{out}={f_{ref}·(a+b/c)}/{R·(d+e/f)}={25000000·(33+499373.358/1048575)}/{1·(14+0/1)}=59779000
輸出頻率沒(méi)有問(wèn)題。如果輸出頻率低于500KHz,就要使用R分頻,重復(fù)上面步驟,變換公式,將有效R值(1,2,4,8,...,128)代入即可。如果想要SI5351A產(chǎn)生最低頻率,邊界頻率就要設(shè)置為2048,R分頻設(shè)置為最大128。
最低輸出f_{out}={VCO}/{OMD·R}={600MHz}/{2048·128}≈ 2.288KHz
通過(guò)上述的分析,輸出頻率的計(jì)算和配置就基本明了了,SI5351A的基本工作原理可以理解為:將時(shí)鐘輸入源送入到兩個(gè)PLL鎖相環(huán)中,然后PLL將將基準(zhǔn)頻率倍頻,輸出一個(gè)高頻的參考時(shí)鐘,高頻范圍要在600M~900MHz內(nèi),再將PLL輸出時(shí)鐘送入到MultiSynth(多合成器模塊),合成器接收到PLL信號(hào),合成器則進(jìn)行可編程分頻,將 PLL 的高頻信號(hào)變成你需要的輸出頻率。如果輸出頻率低于 500 kHz,則需加上R分頻。
最后說(shuō)明下,雖然Si5351A芯片理論上支持最高200MHz,最低2.5kHz。但實(shí)際會(huì)受晶振偏差,帶寬限制,板子電路設(shè)計(jì)等物理限制因素影響。建議輸出頻率要在【160MHz,8KHz】使用。
五、STM32F103驅(qū)動(dòng)SI5351A
準(zhǔn)備工作
STM32F103C8T6最小系統(tǒng)板、SI5351時(shí)鐘信號(hào)發(fā)生器、測(cè)量信號(hào)的示波器、連接線(xiàn)若干。
引腳接線(xiàn)
| STM32F103C8T6 | SI5351時(shí)鐘信號(hào)發(fā)生器 |
|---|---|
| 3.3V | VIN |
| GND | GND |
| PA3 | SCL |
| PA5 | SDA |
代碼示例
SI5351A.c
#include "si5351a.h"
static void I2C_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_3; /* PA3-I2C_SCL、PA
5-I2C_SDA*/
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
///////////IIC初始化//////////////
void IIC_SI5351A_GPIO_Init(void)
{
I2C_GPIO_Config();
}
////////////粗略延時(shí)函數(shù)//////////
void Delay_1us(u16 n)//約1us,1100k
{
unsigned int x=5,i=0;
for(i=0;i< n;i++)
{while(x--);x=5;}
}
void Delay_ms(u8 n)//約0.5ms,2k
{
unsigned int x=5000,i=0;
for(i=0;i< n;i++)
{while(x--);x=5000;}
}
////////IIC啟動(dòng)函數(shù)//////////
void I2C_Start(void)
{
SDA_H;
SCL_H;
Delay_1us(1);
if(!SDA_read) return;//SDA線(xiàn)為低電平則總線(xiàn)忙,退出
SDA_L;
Delay_1us(1);
if(SDA_read) return;//SDA線(xiàn)為高電平則總線(xiàn)出錯(cuò),退出
SDA_L;
Delay_1us(1);
SCL_L;
}
//**************************************
//IIC停止信號(hào)
//**************************************
void I2C_Stop(void)
{
SDA_L;
SCL_L;
Delay_1us(1);
SCL_H;
SDA_H;
Delay_1us(1); //延時(shí)
}
//**************************************
//IIC發(fā)送應(yīng)答信號(hào)
//入口參數(shù):ack (0:ACK 1:NAK)
//**************************************
void I2C_SendACK(u8 i)
{
if(1==i)SDA_H; //寫(xiě)應(yīng)答信號(hào)
else SDA_L;
SCL_H; //拉高時(shí)鐘線(xiàn)
Delay_1us(1); //延時(shí)
SCL_L ; //拉低時(shí)鐘線(xiàn)
Delay_1us(1);
}
//**************************************
//IIC等待應(yīng)答
//返回值:ack (1:ACK 0:NAK)
//**************************************
bool I2C_WaitAck(void) //返回為:=1有ACK,=0無(wú)ACK
{
unsigned int i;
SDA_H;
Delay_1us(1);
SCL_H;
Delay_1us(1);
while(SDA_read){i++;if(i==5000)break;}
if(SDA_read)
{SCL_L;
Delay_1us(1);
return FALSE;}
SCL_L;
Delay_1us(1);
return TRUE;
}
//**************************************
//向IIC總線(xiàn)發(fā)送一個(gè)字節(jié)數(shù)據(jù)
//**************************************
void I2C_SendByte(u8 dat)
{
unsigned int i;
SCL_L;
for (i=0; i< 8; i++) //8位計(jì)數(shù)器
{
if(dat&0x80){SDA_H;} //送數(shù)據(jù)口
else SDA_L;
SCL_H; //拉高時(shí)鐘線(xiàn)
Delay_1us(1); //延時(shí)
SCL_L; //拉低時(shí)鐘線(xiàn)
Delay_1us(1); //延時(shí)
dat < <= 1; //移出數(shù)據(jù)的最高位
}
}
//**************************************
//從IIC總線(xiàn)接收一個(gè)字節(jié)數(shù)據(jù)
//**************************************
u8 I2C_RecvByte()
{
u8 i;
u8 dat = 0;
SDA_H; //使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù),
for (i=0; i< 8; i++) //8位計(jì)數(shù)器
{
dat < <= 1;
SCL_H; //拉高時(shí)鐘線(xiàn)
Delay_1us(1); //延時(shí)
if(SDA_read) //讀數(shù)據(jù)
{
dat |=0x01;
}
SCL_L; //拉低時(shí)鐘線(xiàn)
Delay_1us(1);
}
return dat;
}
//**************************************
//向IIC設(shè)備寫(xiě)入一個(gè)字節(jié)數(shù)據(jù)
//**************************************
bool Single_WriteI2C(u8 Slave_Address,u8 REG_Address,u8 REG_data)
{
I2C_Start(); //起始信號(hào)
I2C_SendByte(Slave_Address); //發(fā)送設(shè)備地址+寫(xiě)信號(hào)
if(!I2C_WaitAck()){I2C_Stop(); return FALSE;}
I2C_SendByte(REG_Address); //內(nèi)部寄存器地址,
if(!I2C_WaitAck()){I2C_Stop(); return FALSE;}
I2C_SendByte(REG_data); //內(nèi)部寄存器數(shù)據(jù),
if(!I2C_WaitAck()){I2C_Stop(); return FALSE;}
I2C_Stop(); //發(fā)送停止信號(hào)
return TRUE;
}
u8 Single_ReadI2C(u8 Slave_Address,u8 REG_Address)
{
u8 REG_data;
I2C_Start(); //起始信號(hào)
I2C_SendByte(Slave_Address); //發(fā)送設(shè)備地址+寫(xiě)信號(hào)
if(!I2C_WaitAck()){I2C_Stop(); return FALSE;}
I2C_SendByte(REG_Address); //發(fā)送存儲(chǔ)單元地址,從0開(kāi)始
if(!I2C_WaitAck()){I2C_Stop(); return FALSE;}
I2C_Start(); //起始信號(hào)
I2C_SendByte(Slave_Address+1); //發(fā)送設(shè)備地址+讀信號(hào)
if(!I2C_WaitAck()){I2C_Stop(); return FALSE;}
REG_data=I2C_RecvByte(); //讀出寄存器數(shù)據(jù)
I2C_SendACK(1); //發(fā)送停止傳輸信號(hào)
I2C_Stop(); //停止信號(hào)
return REG_data;
}
uint8_t i2cSendRegister(uint8_t reg, uint8_t data)
{
I2C_Start(); //起始信號(hào)
I2C_SendByte(0xC0); //發(fā)送設(shè)備地址+寫(xiě)信號(hào)
if(!I2C_WaitAck()){I2C_Stop(); return FALSE;}
I2C_SendByte(reg); //內(nèi)部寄存器地址,
if(!I2C_WaitAck()){I2C_Stop(); return FALSE;}
I2C_SendByte(data); //內(nèi)部寄存器數(shù)據(jù),
if(!I2C_WaitAck()){I2C_Stop(); return FALSE;}
I2C_Stop();
return 0;
}
void setupPLL(uint8_t pll, uint8_t mult, uint32_t num, uint32_t denom)
{
uint32_t P1; // PLL config register P1
uint32_t P2; // PLL config register P2
uint32_t P3; // PLL config register P3
P1 = (uint32_t)(128 * ((float)num / (float)denom));
P1 = (uint32_t)(128 * (uint32_t)(mult) + P1 - 512);
P2 = (uint32_t)(128 * ((float)num / (float)denom));
P2 = (uint32_t)(128 * num - denom * P2);
P3 = denom;
i2cSendRegister(pll + 0, (P3 & 0x0000FF00) > > 8);
i2cSendRegister(pll + 1, (P3 & 0x000000FF));
i2cSendRegister(pll + 2, (P1 & 0x00030000) > > 16);
i2cSendRegister(pll + 3, (P1 & 0x0000FF00) > > 8);
i2cSendRegister(pll + 4, (P1 & 0x000000FF));
i2cSendRegister(pll + 5, ((P3 & 0x000F0000) > > 12) | ((P2 & 0x000F0000) > > 16));
i2cSendRegister(pll + 6, (P2 & 0x0000FF00) > > 8);
i2cSendRegister(pll + 7, (P2 & 0x000000FF));
}
void setupMultisynth(uint8_t synth,uint32_t divider,uint8_t rDiv)
{
uint32_t P1; // Synth config register P1
uint32_t P2; // Synth config register P2
uint32_t P3; // Synth config register P3
P1 = 128 * divider - 512;
P2 = 0; // P2 = 0, P3 = 1 forces an integer value for the divider
P3 = 1;
i2cSendRegister(synth + 0, (P3 & 0x0000FF00) > > 8);
i2cSendRegister(synth + 1, (P3 & 0x000000FF));
i2cSendRegister(synth + 2, ((P1 & 0x00030000) > > 16) | rDiv);
i2cSendRegister(synth + 3, (P1 & 0x0000FF00) > > 8);
i2cSendRegister(synth + 4, (P1 & 0x000000FF));
i2cSendRegister(synth + 5, ((P3 & 0x000F0000) > > 12) | ((P2 & 0x000F0000) > > 16));
i2cSendRegister(synth + 6, (P2 & 0x0000FF00) > > 8);
i2cSendRegister(synth + 7, (P2 & 0x000000FF));
}
void si5351aSetFrequency(uint32_t frequency , u8 Chanal )
{
uint32_t freq_temp;
uint32_t pllFreq;
uint32_t xtalFreq = XTAL_FREQ;// Crystal frequency
uint32_t l;
float f;
uint8_t mult;
uint32_t num;
uint32_t denom;
uint32_t divider;
freq_temp = frequency * 1; //分頻系數(shù)
divider = 900000000 / freq_temp;// Calculate the division ratio. 900,000,000 is the maximum internal
// PLL frequency: 900MHz
if (divider % 2) divider--; // Ensure an even integer division ratio
pllFreq = divider * freq_temp; // Calculate the pllFrequency: the divider * desired output frequency
mult = pllFreq / xtalFreq; // Determine the multiplier to get to the required pllFrequency 36 0 0
l = pllFreq % xtalFreq; // It has three parts:
f = l; // mult is an integer that must be in the range 15..90
f *= 1048575; // num and denom are the fractional parts, the numerator and denominator
f /= xtalFreq; // each is 20 bits (range 0..1048575)
num = f; // the actual multiplier is mult + num / denom
denom = 1048575; // For simplicity we set the denominator to the maximum 1048575
// Set up PLL A with the calculated multiplication ratio
setupPLL(SI_SYNTH_PLL_A, mult, num, denom);
// Set up MultiSynth divider 0, with the calculated divider.
// The final R division stage can divide by a power of two, from 1..128.
// reprented by constants SI_R_DIV1 to SI_R_DIV128 (see si5351a.h header file)
// If you want to output frequencies below 1MHz, you have to use the
// final R division stage
if( Chanal == 0 ){
setupMultisynth(SI_SYNTH_MS_0,divider,SI_R_DIV_1); //設(shè)置分頻后,設(shè)置頻率的系數(shù)也需要更改
// Reset the PLL. This causes a glitch in the output. For small changes to
// the parameters, you don't need to reset the PLL, and there is no glitch
i2cSendRegister(SI_PLL_RESET,0xA0);
// Finally switch on the CLK0 output (0x4F)
// and set the MultiSynth0 input to be PLL A
i2cSendRegister(SI_CLK0_CONTROL, 0x4F|SI_CLK_SRC_PLL_A);
}
else if ( Chanal == 1 ){
setupMultisynth(SI_SYNTH_MS_1,divider,SI_R_DIV_1);
i2cSendRegister(SI_PLL_RESET,0xA0);
i2cSendRegister(SI_CLK1_CONTROL, 0x4F|SI_CLK_SRC_PLL_A);
}
else if ( Chanal == 2 ){
setupMultisynth(SI_SYNTH_MS_2,divider,SI_R_DIV_1);
i2cSendRegister(SI_PLL_RESET,0xA0);
i2cSendRegister(SI_CLK2_CONTROL, 0x4F|SI_CLK_SRC_PLL_A);
}
}
void SI5351_SetFreq_Clk0(uint32_t frequency)
{
uint32_t freq_temp;
uint8_t div_factor, R_diV;
uint32_t pllFreq;
uint32_t xtalFreq = XTAL_FREQ;// Crystal frequency
uint32_t l;
float f;
uint8_t mult;
uint32_t num;
uint32_t denom;
uint32_t divider;
if(frequency < 500000)
{
div_factor = 64;
R_diV = SI_R_DIV_64;
}else{
div_factor = 1;
R_diV = SI_R_DIV_1;
}
freq_temp = frequency * div_factor; //fout * R
divider = 900000000 / freq_temp;// OMD = 900M /(fout * R)
if (divider % 2) divider--; // VCO = 600M - 900M, 取偶,整數(shù)模式
pllFreq = divider * freq_temp; // VCO = OMD * fout * R
mult = pllFreq / xtalFreq; // 取整數(shù)a,VCO = fref * (a + b/c)
l = pllFreq % xtalFreq; // 取小數(shù):b/c
f = l;
f *= 1048575; // b放大
f /= xtalFreq; // 獲取b
num = f;
denom = 1048575;
setupPLL(SI_SYNTH_PLL_A, mult, num, denom);
setupMultisynth(SI_SYNTH_MS_0,divider,R_diV);
i2cSendRegister(SI_PLL_RESET,0xA0);
i2cSendRegister(SI_CLK1_CONTROL, 0x4F|SI_CLK_SRC_PLL_A);
}
main.c
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "si5351a.h"
int main(void)
{
int Fre_1M = 10000;
int fre = 5;
delay_init(); //延時(shí)函數(shù)初始化
IIC_SI5351A_GPIO_Init();
si5351aSetFrequency(112500000 , 0);
si5351aSetFrequency(1000000 , 1);
si5351aSetFrequency(10000 , 2);
while(1)
{
// SI5351_SetFreq_Clk0(fre*Fre_1M);
// delay_ms(50);
// fre += 100;
// if(fre*Fre_1M > 150000000) fre = 5;
}
}
效果展示


注意事項(xiàng)
- PLL 頻率需始終在 600 ~ 900 MHz 范圍
- Multisynth 分頻必須為偶數(shù),4~900
- 輸出小于 500KHz 時(shí),建議使用 R_DIV 分頻
- 3通道不能同時(shí)輸出高于112MHz

-
晶體振蕩器
+關(guān)注
關(guān)注
9文章
749瀏覽量
33237 -
STM32F103
+關(guān)注
關(guān)注
34文章
495瀏覽量
67688 -
頻率信號(hào)
+關(guān)注
關(guān)注
0文章
29瀏覽量
8712 -
時(shí)鐘信號(hào)
+關(guān)注
關(guān)注
4文章
504瀏覽量
29961
發(fā)布評(píng)論請(qǐng)先 登錄
【NUCLEO-F412ZG申請(qǐng)】基于STM32F412的DDS信號(hào)發(fā)生器
國(guó)產(chǎn)時(shí)鐘發(fā)生芯片MS5351,完全兼容SI5351,代理商貨源
使用SI5351和STM32F103制作的矢量天線(xiàn)分析儀
Si5338 業(yè)界首個(gè)任意頻率、任意輸出的時(shí)鐘發(fā)生器
AD9531:3通道時(shí)鐘發(fā)生器,24輸出數(shù)據(jù)表
帶STM32F103C8T6的dds Vfo si5351開(kāi)源
帶Si5351的10kHz至225MHz VFO/RF發(fā)生器
基于Si5351的超外差接收器設(shè)計(jì)
瑞盟三通道時(shí)鐘發(fā)生芯片MS5351,完全兼容SI5351
信號(hào)發(fā)生器怎么輸出調(diào)制信號(hào) 信號(hào)發(fā)生器輸出信號(hào)衰減如何調(diào)整?
信號(hào)發(fā)生器怎么輸出調(diào)制信號(hào)的頻率
基于STM32F103驅(qū)動(dòng)AD9833模塊 DDS信號(hào)發(fā)生器輸出正弦波/三角波/方波可編程信號(hào)
基于STM32F103驅(qū)動(dòng)SI5351 3通道時(shí)鐘信號(hào)發(fā)生器輸出不同頻率信號(hào)
評(píng)論