首頁(yè) > 評(píng)測(cè) > 借助ClockBuilder Pro生成配置,在ESP32-C3上使用Si5351

借助ClockBuilder Pro生成配置,在ESP32-C3上使用Si5351

  
  • 作者:
  • 來(lái)源:
  • [導(dǎo)讀]
  • 本帖最后由 gaoyang9992006 于 2023-6-5 17:26 編輯 #申請(qǐng)?jiān)瓌?chuàng)# @21小跑堂 ClockBuilder Pro是一款用于配置和生成時(shí)鐘信號(hào)的軟件工具,而Si5351是一款常用的時(shí)鐘發(fā)生器芯片。使用ClockBuilder Pro可以方便地

本帖最后由 gaoyang9992006 于 2023-6-5 17:26 編輯

#申請(qǐng)?jiān)瓌?chuàng)#

@21小跑堂
ClockBuilder Pro是一款用于配置和生成時(shí)鐘信號(hào)的軟件工具,而Si5351是一款常用的時(shí)鐘發(fā)生器芯片。使用ClockBuilder Pro可以方便地配置和生成適合Si5351芯片的時(shí)鐘信號(hào)。以下是使用ClockBuilder Pro配置Si5351的一般步驟:
1、下載和安裝ClockBuilder Pro軟件:您可以從搜索引擎找到官方網(wǎng)站下載并安裝ClockBuilder Pro軟件。

 

圖1


2、連接硬件:將Si5351芯片連接到您的開(kāi)發(fā)板或電路中。確保硬件連接正確,并且Si5351的電源和通信接口正常工作。
本次實(shí)驗(yàn)采用的是ESP32-C3,可以使用Arduino來(lái)完成測(cè)試工作,這里我采用的是Arduino默認(rèn)的ESP32-C3的默認(rèn)I2C接口,你也可以在程序里指定使用哪些IO作為I2C。
默認(rèn)接口配置文件在以下目錄可以找到
C:\Users\Mint\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.9\variants\esp32c3\pins_arduino.h
其中關(guān)于定義I2C的地址為

  1. static const uint8_t SDA = 8;
  2. static const uint8_t SCL = 9;
復(fù)制代碼

下圖是我使用的SI5351模塊,該模塊為SI5351A 10PIN的,支持3路生成時(shí)鐘輸出:CLK0、CLK1、CLK2。

 

圖2


3、打開(kāi)ClockBuilder Pro:?jiǎn)?dòng)ClockBuilder Pro軟件,并選擇與Si5351芯片兼容的設(shè)備和芯片型號(hào)。如果您的芯片型號(hào)不在列表中,您可能需要手動(dòng)添加或選擇類似型號(hào)進(jìn)行配置。具體步驟如下:
(1)、啟動(dòng)軟件后,如圖1,選擇Create New Project,創(chuàng)建新的工程
(2)、單擊Clock Generators,選擇時(shí)鐘發(fā)生器

 

圖3


(3)、然后會(huì)彈出一個(gè)元件選擇列表,選擇我們這次使用的SI5351A,然后單擊下一步

 

圖4

 

 

圖5

 

繼續(xù)下一步

 

 

圖6

 

(4)、此處你可以輸入一些設(shè)計(jì)筆記,如果沒(méi)有什么要寫(xiě)的,可以直接下一步跳過(guò)。

 

 

圖7

 

(5)、選擇我們使用的封裝型號(hào),這里選擇3輸出的10PIN封裝,然后單擊下一步

 

 

圖8

 

(6)、如圖8所示,這時(shí)候我們可以看到默認(rèn)的I2C地址,以及I2C的通信原理圖。請(qǐng)記住該地址,或者在芯片手冊(cè)查看該地址:0x60。

 

 

圖9

 

(7)、如圖9所示,這一步選擇時(shí)鐘源,即你使用的晶振是多大的,這里默認(rèn)有兩種選擇27MHz,25MHz,我這里使用的是25MHz的。其他按照默認(rèn)即可。繼續(xù)下一步

 

 

圖10

 

(8)、這一步,是設(shè)置輸出使能以及配置輸出的頻率為多少,共3個(gè)輸出通道可供配置,可以配置的范圍是2.5KHz~200MHz。如圖10所示。完成配置后單擊下一步。

 

 

圖11

 

(9)、圖11為輸出斜率設(shè)置,這里如果不需要可以默認(rèn),如果不知道什么意思可以在三個(gè)通道設(shè)置為相同的輸出頻率,然后在此處設(shè)置為不同的輸出斜率,觀察結(jié)果,以確認(rèn)該參數(shù)的意義。單擊下一步。

 

 

圖12

 

(10)、如圖12所示,該步驟為設(shè)置輸出驅(qū)動(dòng)能力配置,如果不清楚請(qǐng)查看該頁(yè)面右半邊的介紹。默認(rèn)配置即可。然后下一步,完成了配置。

 

 

圖13

 

(11)、接下來(lái)可以導(dǎo)出配置了,如圖13,單擊Export,進(jìn)入導(dǎo)出菜單,我們選擇選項(xiàng)卡Register File,寄存器配置文件。

 

 

圖14

 

單擊下邊的Save to File,保存生成的配置頭文件,如圖14所示。完成時(shí)鐘配置后,您可以使用ClockBuilder Pro生成一個(gè)配置文件,該文件包含了所有的時(shí)鐘配置信息。將該文件保存到您的計(jì)算機(jī)上。

 

4、接下來(lái)使用生成的頭文件,將配置信息通過(guò)I2C寫(xiě)入到Si5351A。

 

(1)、新建一個(gè)Arduino項(xiàng)目,并選擇所用的主控芯片為ESP32-C3,選擇芯片模塊對(duì)應(yīng)的燒錄串口。設(shè)置如下圖所示

 

 

圖15

 

將wire.h與生成的Si5351A配置頭文件都包含進(jìn)來(lái)

 

完整代碼如下所示

 

  1. #include <Wire.h>
  2. #include "Si5351A-RevB-Registers.h"
  3. /*
  4.   利用 Clock Builder Pro生成時(shí)鐘芯片Si5351A的配置后,生成的文件默認(rèn)位地址是16BIT,數(shù)據(jù)為8BIT。
  5.   如果直接使用需要注意這一點(diǎn),因?yàn)锳rduino的write(uint8_t),參數(shù)為8bit變量,注意轉(zhuǎn)換。
  6. */
  7. #define SI5351A_ADDRESS            0x60
  8.  
  9.  
  10. void setup()
  11. {
  12.   // put your setup code here, to run once:
  13.   Serial.begin(115200);
  14.   Wire.begin();
  15.  
  16.   for(unsigned char i=0;i<255;i++)
  17.   {
  18.     SI5351_WR_Byte(0,i) ;
  19.   }
  20.  
  21.  
  22.   for(int i=0;i<SI5351A_REVB_REG_CONFIG_NUM_REGS;i++)
  23.   {
  24.     SI5351_WR_Byte(si5351a_revb_registers[i].value, si5351a_revb_registers[i].address) ;
  25.   }
  26.  
  27. }
  28.  
  29. void loop()
  30. {
  31.   // put your main code here, to run repeatedly:
  32.  
  33. }
  34.  
  35. void SI5351_WR_Byte(unsigned char dat, unsigned char reg_addr)
  36. {
  37.   Wire.beginTransmission(SI5351A_ADDRESS);  // 開(kāi)始I2C傳輸,并指定設(shè)備地址為SI5351A_ADDRESS
  38.   Wire.write((unsigned char)reg_addr);      // 發(fā)送地址字節(jié),注意有效位為低8位,自動(dòng)生成的地址為16BIT的。
  39.   Wire.write(dat);              // 發(fā)送數(shù)據(jù)字節(jié)
  40.   Wire.endTransmission();       // 結(jié)束傳輸
  41. }
  42.  
復(fù)制代碼
我沒(méi)觀察一下生成的頭文件的主要內(nèi)容

 

 

圖16

 

可以看到配置代碼放在一個(gè)結(jié)構(gòu)體變量里,可以方便的訪問(wèn)到內(nèi)存地址與對(duì)應(yīng)的配置參數(shù)。另外主意到該生成的配置結(jié)構(gòu)體種的地址為16BIT的,注意我們使用的I2C寫(xiě)入函數(shù)的操作參數(shù)為8BIT,這里應(yīng)做強(qiáng)制轉(zhuǎn)換,保證傳入的參數(shù)與定義的參數(shù)類似是一致的。

 

完成代碼后我們下載代碼到芯片。并用示波器觀察三路時(shí)鐘信號(hào)。

 

 

 

 

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評(píng)論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開(kāi)放投稿

熱門標(biāo)簽
項(xiàng)目外包 more+