《Saleae》專精設計簡易、實惠、多種應用的邏輯分析儀(Logic Analyzers);除了設備本身,亦在軟體上提供多種擴充套件搭配應用。邏輯分析儀的基本工作是抓取數位數據,儲存於緩衝區中並顯示在軟體畫面中。此外,還有擷取訊號並解碼的功能;大多數現代數位通訊系統,都是基於特定的協定來傳輸資料的。邏輯分析儀或其相關軟體套件可以支援這些協定,以幫助使用者了解所擷取的資料意義。
Saleae 的邏輯分析儀系列,使用自行開發的軟體〈Saleae Logic 2〉,以其強大的功能和直觀的使用介面,支援 Windows、Linux、MacOS、MacOS 下載方式。目前已被全球的 Saleae 使用者廣泛應用在 I2C、I3C、SPI、MDIO、SMBus 等協定分析。現在,Saleae 導入了〈自動化 API〉,讓 Saleae Logic 2 更進一步,提供更多分析的靈活性。
本文將討論 Saleae Logic 2 和其自動化 API,說明它們在提升信號分析效率方面的優勢。
Saleae Logic 2 的主要用途:
數位訊號擷取和分析 Logic 2 軟體搭配 Saleae 分析儀,能夠擷取、顯示多達 16 個通道的數位訊號,支援高達 500 MHz 的取樣速率。應用上,特別適合分析數位通信協議,如 I2C、SPI、UART 與 I3C 等。
多種協定分析 該軟體內建多種協定分析功能,能夠自動解析捕捉到的數據,轉換為工程師方便閱讀的格式;利於校正、驗證儀器的通訊傳輸內容,幫助工程師快速找出問題。
混合訊號分析 除了數位訊號,Saleae Logic 2 還支援類比信號的擷取和分析。這對於分析類比數位轉換器(ADC)、數位類比轉換器(DAC)、以及其他混合式的訊號系統,提供極大的便利。
數據匯出和處理 使用者可以將擷取、或分析後的數據匯出為多種格式,如:CSV、JSON 等;幫助後續數據處理、製程報告等工作。
自動化測試 借助於 Saleae Logic 2 的自動化 API,使用者可以透過現有提供的腳本,實現測試流程的自動化。這對於需要進行大量重複測試的情況,能夠顯著提高效率和一致性。關於這點,我們在文章後續做說明。
什麼是 Saleae Logic 2 的自動化 API?
〈Saleae Logic 2 Automation API〉以下簡稱為自動化 API 工具,使用者可以透編碼,控制 Saleae Logic 2 的各項功能;例如自動執行擷取、分析和數據處理,適合用於頻繁重複的測試工作、長期監控、或大量數據處理工作。
以下為入門說明:
1. 安裝 Python 自動化 API 程式
首先,使用自動化 API,需使用最新版本的 Logic 2 sofiware(2.4.0+)、logic2 - Automation(1.0.0+)Python 以及 Python 3.8、3.9 或 3.10。
安裝參考:
並安裝〈logic 2 - Automation〉套件,語法如以下:
pip install logic2-automation |
2. 啟動 Logic 2
在軟體 UI 中啟動自動化介面,從主選單開啟對話框,捲動到底部。
勾選「Enable Automation Server」,自動化伺服器將開始在 Logic 2 軟體中的預設連接埠 10430 上運作。
3. 使用 Python 自動化 API
當你的 Logic 2 軟體可以在預設連接埠 10430 上運作後,可以用 這份說明上的範例 來測試自動化 API。不需連接裝置,可直接使用以下範例操作:
請先建立一個名為「saleae_example.py」的 Python 文件,並貼上這份範例語法:
from saleae import automation import os import os.path from datetime import datetime # Connect to the running Logic 2 Application on port `10430`. # Alternatively you can use automation.Manager.launch() to launch a new Logic 2 process - see # the API documentation for more details. # Using the `with` statement will automatically call manager.close() when exiting the scope. If you # want to use `automation.Manager` outside of a `with` block, you will need to call `manager.close()` manually. with automation.Manager.connect(port=10430) as manager: # Configure the capturing device to record on digital channels 0, 1, 2, and 3, # with a sampling rate of 10 MSa/s, and a logic level of 3.3V. # The settings chosen here will depend on your device's capabilities and what # you can configure in the Logic 2 UI. device_configuration = automation.LogicDeviceConfiguration( enabled_digital_channels=[0, 1, 2, 3], digital_sample_rate=10_000_000, digital_threshold_volts=3.3, ) # Record 5 seconds of data before stopping the capture capture_configuration = automation.CaptureConfiguration( capture_mode=automation.TimedCaptureMode(duration_seconds=5.0) ) # Start a capture - the capture will be automatically closed when leaving the `with` block # Note: The serial number 'F4241' is for the Logic Pro 16 demo device. # To use a real device, you can: # 1. Omit the `device_id` argument. Logic 2 will choose the first real (non-simulated) device. # 2. Use the serial number for your device. See the "Finding the Serial Number # of a Device" section for information on finding your device's serial number. with manager.start_capture( device_id='F4241', device_configuration=device_configuration, capture_configuration=capture_configuration) as capture: # Wait until the capture has finished # This will take about 5 seconds because we are using a timed capture mode capture.wait() # Add an analyzer to the capture # Note: The simulator output is not actual SPI data spi_analyzer = capture.add_analyzer('SPI', label=f'Test Analyzer', settings={ 'MISO': 0, 'Clock': 1, 'Enable': 2, 'Bits per Transfer': '8 Bits per Transfer (Standard)' }) # Store output in a timestamped directory output_dir = os.path.join(os.getcwd(), f'output-{datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}') os.makedirs(output_dir) # Export analyzer data to a CSV file analyzer_export_filepath = os.path.join(output_dir, 'spi_export.csv') capture.export_data_table( filepath=analyzer_export_filepath, analyzers=[spi_analyzer] ) # Export raw digital data to a CSV file capture.export_raw_data_csv(directory=output_dir, digital_channels=[0, 1, 2, 3]) # Finally, save the capture to a file capture_filepath = os.path.join(output_dir, 'example_capture.sal') capture.save_capture(filepath=capture_filepath) |
4. 尋找設備的序號 ID
若要尋找已連接裝置的序號,請開啟擷取資訊側邊欄,然後按一下右上角的裝置下拉清單:
然後點擊「設備資訊」,確認彈出的資訊欄,其中包含正在使用連接的設備的資訊與序號。建議從此處複製序號,並在需要「device_id」的 Python 腳本中做使用。
※ 更多近一步操作、疑難排解,可至 Using the Python Automation API 章節索引,查看其他步驟和說明。
結語:與使用者一起持續進化的 Saleae
在快速發展的電子工程和嵌入式系統開發領域,效率和精確度是關鍵。Saleae 公司的設計輕巧、高效能、支援多元協定,是世界上最受歡迎的邏輯分析儀之一。全球統計,每月有超過 20,000 名使用者,他們同時也在 Saleae 的官方論壇中交流,不斷挖掘 Saleae 儀器、軟體、語法的發展性。
Logic 2 的自動化 API 功能,是近年最受歡迎的更新功能之一;提供了高精準度的自動化流程,解決手動測試的負擔,讓工程師能夠專注於更具創新性的工作。今天我們簡單介紹這項功能,希望推廣更多人嘗試 Saleae 系列產品,以及幫助正在使用 Saleae 的使用者,更聰明地運用手中的工具。《翔宇科技》代理 Saleae 系列邏輯分析儀,如果您對產品有興趣,歡迎隨時與我們聯繫。
延伸閱讀:
其他參考資源: