如同 之前所述 的,我為市面上較常見的幾種 signal generator 模組寫了 python drivers。
後來又接觸到 Si5351,它的特性與用途不大一樣,所以我把它獨自放在另外一個 repository 裡面。
Si5351 可以同時輸出 3 組 clocks (有的型號 有 8 組 clocks),輸出頻率範圍 為 2.5KHz ~ 225MHz,也可以以 Spread Spectrum 的模式輸出,而且可以設定 clocks 之間的相位差,如果設定相位差為90度 也可以當作 quadrature clock source.
Configuration 狀態的展現:
Dependencies:
為 Si5351 寫 Python driver 的過程中,比較困難的是 它有 108 個 registers,整理起來真是費時費力,要周延地測試更是困難,不過 還好藉著 USB-I2C converter 之助,我們現在可以直接在 PC 上控制與測試 Si5351,不需要反反覆覆地上傳程式碼到 MCU 上面去,而且測試時 可以設定 break points,用 PyCharm 的 debug mode 來 trace code,節省了很多時間。
做法與特色
- 除了 前文所述 的之外, 針對 Si5351 還有以下的 做法與特色:
- 多種 USB-I2C converter 可選擇:
- 使用 Cypress USB Control Center 將 custom_i2c.iic 刷到 FX2LP 上面即可。
- 可以列出當下 重要參數的狀態
- Registers 狀態的比較:
- 可以針對 兩組不同的 registers 設定值 做比較,並列出各個欄位的差異,這在 development 階段 debug 時候非常有用。
- 尋找 滿足三個輸出頻率所需的 PLL divider 的共同整數解
測試結果
Functional tests:
- Tested as in this notebook
Frequency Dancing (Sweeping)
- Tested with this notebook:
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
沒有留言:
張貼留言