si5351使用记录

目录

前言

一、si5351简介

二、si5351如何使用

1.官方参考资料配置

1.1.si5351-B

1.2.AN619

1.3AN554

1.4.ClockBuilderPro

2.代码配置

2.1工具生成配置参数

 2.2.参数写入

3.代码配置寄存器

三、画PCB验证板

四、实测输出波形

4.1.10MHz

4.2.50MHz

4.3.100MHz

4.4.150MHz

4.5.200MHz

总结


前言

最近工作中用到si531这款时钟芯片,使用过程中参考了很多网络资源,最终能够基本应用,对于不熟悉的人而言,用起来还是有点困难的。在此记录一下分享给有需要的朋友。

一、si5351简介

  1. si5351是一款时钟分频芯片。它将输入时钟分频或者倍频输出,最多8通道输出,输出频率在2.5KHz~200MHz,可以小数位分频。根据输入参考不同,输出通道数量不同等,分了很多具体型号,本次所使用的是QFN20封装si5351A.
  2. 下图是包含所有型号的内部功能架构图,具体型号产品只有其中部分架构,图片摘自官方芯片数据手册。如图所示,芯片输入参考有3种方式,CLKIN、XTAL、VC,并非所有型号都同时具备3种。输出最多支持8路,最低3路。分频设置需要分3步,PPL、MultiSynth、R。
  3. 驱动芯片用IIC通信,实测支持100KHz和400KH速率,100KHz更稳定。

二、si5351如何使用

1.官方参考资料配置

1.1.si5351-B

       这本手册是数据手册,主要是整体介绍芯片电气特性、功能、驱动方式、配置步骤、引脚介绍、封装介绍等。

1.2.AN619

       这本手册是详讲ssop10和QFN20封装的芯片内部寄存器的,总计255个寄存器,配置的时候只需要用其中几十个,具体看用的通道数量。

1.3AN554

      这本手册是指导画PCB板的,因为芯片输出最多达到200MHz,是高频信号,随意画板会有问题。

1.4.ClockBuilderPro

       这是一款图形化配置寄存器的软件工具,可以快速生成一个.h文件,里面包含一个结构体数组,是根据配置自动生成的寄存器值,包含寄存器地址和要写入的值。

2.代码配置

2.1工具生成配置参数

创建新的配置工程

 选择时钟生成

选择具体型号,然后一直next,直到出现选择封装。

 选择封装

选择IIC从机地址,没有搞过就直接默认

 选择外部晶振、内部电容、扩频参数,扩频可以不配,勾选25或者27M就行了,其它默认

通道使能及频率配置,之后全部默认,一直点NEXT。

 配置完成,现在导出生成的配置头文件

 

 

 2.2.参数写入

一个写寄存器函数

 

2.3代码配置寄存器

       CSDN里面已有其他博主写的挺好,基本上都是正点原子示例版本的,这里不再搬用。关于寄存器,这里简单讲讲。15-23很重要,配置通道时钟源、输出使能、输出分频、输出电流的。26-41配置PLLA和PLLB的,输入时钟经过这里配置会得到600-900MHz的锁相环输出。42-91用于配置通道时钟分频,这里的时钟源是从PLL来的。149-161是设置扩频功能的,这个功能我不清楚,没用起来。以上是很重要的寄存器,还有少量的这里不一一列举。

三、画PCB验证板

        如图,画了一个5*5cm的板。电源部分用一个3.3V的稳压芯片加简单的滤波,板背面靠近芯片VDD引脚上接贴片电容。信号引脚用差分弧线,让同一组信号线尽量对称,串电阻可以匹配50Ω阻抗,IIC接2排排针方便逻辑分析仪接线,地排针方便示波器夹地.

 四、实测输出波形

4.1.10MHz

 4.2.50MHz

4.3.100MHz

 

4.4.150MHz

4.5.200MHz

 

总结

1.自动生成配置文件的方式可以快速应用,但是想灵活改变参数还是需要代码配置寄存器,各有各的好。

2.示波器的问题,当频率高于80MHz,波形就开始变正弦波,最后类似三角波。

适用于家庭无线电设备,例如超外差接收机,SDR,HAM QRP收发器或RF发生器。 硬件部件: 面包板(通用) × 1个 Arduino Nano R3 × 1个 带按钮的旋转编码器 × 1个 Adafruit SSD1306 128X64 OLED显示屏× 1个 Adafruit SI5351时钟发电模块× 1个 拨动开关,SPDT × 2个 松下RCA插孔,用于RF输出设置× 2个 电容100 nF × 3 电容器10 µF × 1个 电容10 nF × 2个 电阻1k欧姆 × 1个 电感100 uH × 1个 软件应用程序和在线服务 Arduino IDE 这是VFO(变频振荡器)的项目,可用于自制设备,例如超外差接收器,DCR,SDR或Ham QRP收发器。它还具有用于信号强度(S-Meter)和20 Band预设的条形图指示器。也可以用作RF /时钟发生器。这是新版本(V.2),我更新了以前的项目,它包含新功能。 特征: 工作范围为10kHz至225MHz。 1Hz,10Hz,1kHz,5kHz,10kHz和1MHz的调谐步长。 中频(IF)偏移(+或-)可调。 BCB和HAM频率的20个频段预设(快捷方式)。 发电机功能模式。 RX / TX模式选择器,用于Homebrew QRP收发器。 通过模拟输入(ADC)的信号表的条形图。 用作Homebrew无线电接收器(如超外差,SDR,直接转换和Homebrew QRP收发器)上的本地振荡器。 用作简单的RF /时钟发生器,用于校准参考或时钟生成。 可与Arduino Uno,Nano和Pro Mini一起使用使用通用的128x64 I2C OLED SSD1306显示器和Si5351模块。 I2C数据传输,仅需2条线即可连接显示器/ Si5351和arduino。 频率生成的高稳定性和精度。 简单但非常有效且免费。 设置: 原理图/接线: 演示视频: 指示: 在Arduino IDE上打开scketch,安装所有必需的库。 选择首选项(请参阅注释)并编译草图,然后将其加载到Arduino Nano,Uno或Pro Mini。 按照示意图连接Arduino,Display,Si5351模块,旋转编码器等。 打开Arduino的电源。 旋转旋转编码器以调高或调低频率。 按下按钮1更改频率步进调谐。可用的步进为1Hz,10Hz,1kHz,5kHz,10kHz和1MHz。 按下按钮2浏览(选择)20个频段预设或进入发生器模式。 打开/关闭开关SW 2,以从RX模式更改为TX模式。RX模式= SW 2开路,TX模式= SW 2接地。在TX模式下,不会从RF输出中添加/减去IF值。这是在Homebrew QRP收发器中使用的理想选择。 将无线电的S-Meter输出信号连接到X2连接器(S-Meter输入)。该输入具有可调的灵敏度,必须在Sketch中调整增益,以接受500mV至5V(最大)的信号。 关于用户首选项的注意事项: -可以更改原理图上的以下项目: #define IF 455 //输入您的IF频率,例如:455 = 455kHz,10700 = 10.7MHz,0 =直接转换接收器或RF发生器,+将加和-将减去ffset。 #define BAND_INIT 7 //在启动时输入初始频段(1-21),例如:1 =频率发生器,2 = 800kHz(MW),7 = 7.2MHz(40m),11 = 14.1MHz(20m)。 #define XT_CAL_F 33000 // Si5351校准系数,调整为可得10MHz。增加该值将降低频率,反之亦然。 #define S_GAIN 303 //调整信号仪表A / D输入的灵敏度:101 = 500mv;202 = 1v;303 = 1.5v;404 = 2v;505 = 2.5v;1010 = 5v(最大)。 #define tunestep A0 //调谐步骤按钮使用的引脚。 #define band A1 //波段选择器按钮使用的引脚。 #define rx_tx A2 // RX / TX选择器开关使用的引脚,RX =开关断开,TX =开关闭合至GND。在TX中时,不考虑IF。 #define adc A3 //信号表A / D输入所使用的引脚。
/******************************************** 主控芯片:STM32F405RGT6主频168Mhz 晶体频率:HSE=8Mhz SYSCLK=168Mhz 模块型号:SI5351A 通讯方式: 函数功能:Si5351时钟芯片 作者:苏夏雨 授权:未经作者允许,禁止转载 ********************************************/ #ifndef _si5351a_h #define _si5351a_h #include "system.h" //Si5351寄存器声明 #define SI_CLK0_CONTROL 16 // Register definitions #define SI_CLK1_CONTROL 17 #define SI_CLK2_CONTROL 18 #define SI_SYNTH_PLL_A 26 #define SI_SYNTH_PLL_B 34 #define SI_SYNTH_MS_0 42 #define SI_SYNTH_MS_1 50 #define SI_SYNTH_MS_2 58 #define SI_PLL_RESET 177 #define SI_R_DIV_1 0x00 // R-division ratio definitions #define SI_R_DIV_2 0b00010000 #define SI_R_DIV_4 0b00100000 #define SI_R_DIV_8 0b00110000 #define SI_R_DIV_16 0b01000000 #define SI_R_DIV_32 0b01010000 #define SI_R_DIV_64 0b01100000 #define SI_R_DIV_128 0b01110000 #define SI_CLK_SRC_PLL_A 0x00 #define SI_CLK_SRC_PLL_B 0b00100000 #define XTAL_FREQ 25000000 // Crystal frequency //IIC总线引脚配置 #define SDA(n) {n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_RESET);} #define CLK(n) {n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_11,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB,GPIO_PIN_11,GPIO_PIN_RESET);} //相关函数声明 void Si5351Init(void);//初始化Si5351的GPIO void SetPLLClk(uint8_t pll, uint8_t mult, uint32_t num, uint32_t denom);//设置PPL时钟 void SetFrequency(uint32_t frequency);//时钟Si5351时钟频率 void SetMultisynth(uint8_t synth,uint32_t divider,uint8_t rDiv);//设置多synth #endif
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值