[RISC-V MCU 应用开发]借助ClockBuilder Pro生成配置,在ESP32-C3上使用Si5351

ClockBuilder Pro是一款用于配置和生成时钟信号的软件工具,而Si5351是一款常用的时钟发生器芯片。使用ClockBuilder Pro可以方便地配置和生成适合Si5351芯片的时钟信号。以下是使用ClockBuilder Pro配置Si5351的一般步骤:

1、下载和安装ClockBuilder Pro软件:您可以从搜索引擎找到官方网站下载并安装ClockBuilder Pro软件。

图1


2、连接硬件:将Si5351芯片连接到您的开发板或电路中。确保硬件连接正确,并且Si5351的电源和通信接口正常工作。
本次实验采用的是ESP32-C3,可以使用Arduino来完成测试工作,这里我采用的是Arduino默认的ESP32-C3的默认I2C接口,你也可以在程序里指定使用哪些IO作为I2C。
默认接口配置文件在以下目录可以找到
C:\Users\Mint\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.9\variants\esp32c3\pins_arduino.h
其中关于定义I2C的地址为

static const uint8_t SDA = 8;
static const uint8_t SCL = 9;

下图是我使用的SI5351模块,该模块为SI5351A 10PIN的,支持3路生成时钟输出:CLK0、CLK1、CLK2。

图2


3、打开ClockBuilder Pro:启动ClockBuilder Pro软件,并选择与Si5351芯片兼容的设备和芯片型号。如果您的芯片型号不在列表中,您可能需要手动添加或选择类似型号进行配置。具体步骤如下:
(1)、启动软件后,如图1,选择Create New Project,创建新的工程
(2)、单击Clock Generators,选择时钟发生器

图3
(3)、然后会弹出一个元件选择列表,选择我们这次使用的SI5351A,然后单击下一步

图4

图5

继续下一步

图6

(4)、此处你可以输入一些设计笔记,如果没有什么要写的,可以直接下一步跳过。

图7

(5)、选择我们使用的封装型号,这里选择3输出的10PIN封装,然后单击下一步

图8

(6)、如图8所示,这时候我们可以看到默认的I2C地址,以及I2C的通信原理图。请记住该地址,或者在芯片手册查看该地址:0x60。

图9

(7)、如图9所示,这一步选择时钟源,即你使用的晶振是多大的,这里默认有两种选择27MHz,25MHz,我这里使用的是25MHz的。其他按照默认即可。继续下一步

图10

(8)、这一步,是设置输出使能以及配置输出的频率为多少,共3个输出通道可供配置,可以配置的范围是2.5KHz~200MHz。如图10所示。完成配置后单击下一步。

图11

(9)、图11为输出斜率设置,这里如果不需要可以默认,如果不知道什么意思可以在三个通道设置为相同的输出频率,然后在此处设置为不同的输出斜率,观察结果,以确认该参数的意义。单击下一步。

图12

(10)、如图12所示,该步骤为设置输出驱动能力配置,如果不清楚请查看该页面右半边的介绍。默认配置即可。然后下一步,完成了配置。

图13

(11)、接下来可以导出配置了,如图13,单击Export,进入导出菜单,我们选择选项卡Register File,寄存器配置文件。

 

图14

单击下边的Save to File,保存生成的配置头文件,如图14所示。完成时钟配置后,您可以使用ClockBuilder Pro生成一个配置文件,该文件包含了所有的时钟配置信息。将该文件保存到您的计算机上。

4、接下来使用生成的头文件,将配置信息通过I2C写入到Si5351A

(1)、新建一个Arduino项目,并选择所用的主控芯片为ESP32-C3,选择芯片模块对应的烧录串口。设置如下图所示

图15

将wire.h与生成的Si5351A配置头文件都包含进来

完整代码如下所示

#include <Wire.h>
#include "Si5351A-RevB-Registers.h"
/*
  利用 Clock Builder Pro生成时钟芯片Si5351A的配置后,生成的文件默认位地址是16BIT,数据为8BIT。
  如果直接使用需要注意这一点,因为Arduino的write(uint8_t),参数为8bit变量,注意转换。
*/
#define SI5351A_ADDRESS            0x60


void setup() 
{
  // put your setup code here, to run once:
  Serial.begin(115200);
  Wire.begin();

  for(unsigned char i=0;i<255;i++)
  {
    SI5351_WR_Byte(0,i) ;
  }


  for(int i=0;i<SI5351A_REVB_REG_CONFIG_NUM_REGS;i++)
  {
    SI5351_WR_Byte(si5351a_revb_registers[i].value, si5351a_revb_registers[i].address) ;
  }

}

void loop() 
{
  // put your main code here, to run repeatedly:

}

void SI5351_WR_Byte(unsigned char dat, unsigned char reg_addr) 
{
  Wire.beginTransmission(SI5351A_ADDRESS);  // 开始I2C传输,并指定设备地址为SI5351A_ADDRESS
  Wire.write((unsigned char)reg_addr);      // 发送地址字节,注意有效位为低8位,自动生成的地址为16BIT的。
  Wire.write(dat);              // 发送数据字节
  Wire.endTransmission();       // 结束传输
}

我没观察一下生成的头文件的主要内容

图16

可以看到配置代码放在一个结构体变量里,可以方便的访问到内存地址与对应的配置参数。另外主意到该生成的配置结构体种的地址为16BIT的,注意我们使用的I2C写入函数的操作参数为8BIT,这里应做强制转换,保证传入的参数与定义的参数类似是一致的。

完成代码后我们下载代码到芯片。并用示波器观察三路时钟信号。

---------------------
作者:gaoyang9992006
链接:https://bbs.21ic.com/icview-3306594-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
适用于家庭无线电设备,例如超外差接收机,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输入所使用的引脚。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值