2020年6月22日 星期一

Si5351 Clock Generator




緣由
  如同 之前所述 的,我為市面上較常見的幾種 signal generator 模組寫了 python drivers
 後來又接觸到 Si5351,它的特性與用途不大一樣,所以我把它獨自放在另外一個 repository 裡面。
  Si5351 可以同時輸出 3 組 clocks (有的型號 有 8 組 clocks),輸出頻率範圍 為 2.5KHz ~ 225MHz,也可以以 Spread Spectrum 的模式輸出,而且可以設定 clocks 之間的相位差,如果設定相位差為90度 也可以當作 quadrature clock source.
 為 Si5351 寫 Python driver 的過程中,比較困難的是 它有 108 個 registers,整理起來真是費時費力,要周延地測試更是困難,不過 還好藉著 USB-I2C converter 之助,我們現在可以直接在 PC 上控制與測試 Si5351,不需要反反覆覆地上傳程式碼到 MCU 上面去,而且測試時 可以設定 break points,用 PyCharm 的 debug mode 來 trace code,節省了很多時間
做法與特色
  • 除了 前文所述 的之外, 針對 Si5351 還有以下的 做法與特色:
  • 多種 USB-I2C converter 可選擇:
    • 可以使用 FT232H 搭配 Bridges package 來作為 USB-I2C converter.
    • 也可以使用 FX2LP 搭配我寫的 這個韌體 來做為 USB-I2C converter,速度更快
 
  • Configuration 狀態的展現:
    • 可以列出當下 重要參數的狀態

  • Registers 狀態的比較:
    • 可以針對 兩組不同的 registers 設定值 做比較,並列出各個欄位的差異,這在 development 階段 debug 時候非常有用。
  • 尋找 滿足三個輸出頻率所需的 PLL divider 的共同整數解

測試結果
Functional tests:
Frequency Dancing (Sweeping)
Control Si5351 with PC + FT232H (USB-I2C converter)  


Control Si5351 with PC + FX2LP (USB-I2C converter) 


  • Also, we can upload the driver to an ESP32 and control Si5351 from there.
Control Si5351 with ESP32+MicroPython

  • We can control an ESP32 with MicroPython Remote Kernel, via a Jupyter notebook
Control Si5351 with ESP32+MicroPython Remote Kernel

  • Spread Spectrum test:

  • Quadrature Clock test:
    • can goes as low as 1.3MHz


Dependencies:

沒有留言:

張貼留言