scpi-pps: Add Siglent SPD3303 series PSU support #77
scpi-pps: Add Siglent SPD3303 series PSU support #77tjko wants to merge 3 commits intosigrokproject:masterfrom
Conversation
- Add quirks field in sr_scpi_dev_inst that is a bitmap.
That is used to enable various quirks a device may need.
- Introduce following quirks (workarounds) needes with some
Siglent instruments:
SCPI_QUIRK_CMD_OMIT_LF
SCPI_QUIRK_OPC_UNSUPPORTED
SCPI_QUIRK_SLOW_CHANNEL_SELECT
SCPI_QUIRK_DELAY_AFTER_CMD
- Add support for SPD3303C / SPD3303X / SPD3303X-E PSUs. - This requires "quirks" support in scpi layer to function. - Add support for multi-channel PSUs where there is no SCPI_CMD_SELECT_CHANNEL command (or it cannot be used).
|
Wiki entry created: https://sigrok.org/wiki/Siglent_SPD3303_series |
See https://sigrok.org/wiki/Siglent_SPD3303C/Info for |
|
I did a quick test on Debian GNU/Linux 10 (buster) with the SPD3303C. Output of --driver --show is this: This worked fine: Most things I tried, ended up in the instrument beeping and the console showing an error message repeatedly. See below: beep, beep, beep, … beep, beep, beep, … beep, beep, beep, … |
|
Looks like this model has same (or similar) buggy firmware with broken USBTMC implementation (as SPD3033X-E). With SPD3033X-E unit worked much more reliably via LAN, but I guess this model does not have LAN port? |
Don't know, did not look into it or even try firmware update. I would try to avoid such an upgrade, my boss would not be happy if anything goes wrong with that.
No, it does not recover.
Correct. The SPD3303C has no LAN port. |
|
Merge conflicts fixed in new branch: https://github.com/tjko/libsigrok/tree/siglent-scpi-v4 |
|
Updated branch with some cleanup: Also removed SPD3303C / SPD3303D support, as these units don't seem to work with current scpi_usbtmc support in Sigrok: |
|
Sorry this never got reviewed, @tjko. Your |
This is a complete port of libsigrok PR #77 which adds support for device-specific SCPI quirks and the Siglent SPD3303 series power supplies. Changes include: 1. SCPI Quirks Framework - Added enum scpi_quirks with 4 quirk flags for non-compliant devices - Added quirks field to otc_scpi_dev_inst structure - Implemented quirk handling in SCPI command functions - Added Siglent SPD3303 to USB device blacklist 2. udev Rules - Added Siglent USBTMC device entries (SPD3303X-E PSU and scopes) - Consolidated device list with proper comments 3. Siglent SPD3303 Driver - Added SCPI_DIALECT_SIGLENT dialect - Added SCPI_CMD_GET/SET_CHANNEL_CONFIG commands - Implemented device profiles for SPD3303C/X/X-E models - Added status update function for multi-channel monitoring - Implemented channel configuration (Independent/Series/Parallel) - Added special handling for Siglent's hex status register format All identifiers renamed from SR_/sr_ to OTC_/otc_ conventions. Upstream source: sigrokproject/libsigrok#77 Original author: Timo Kokkonen <tjko@iki.fi>
This adds support to Siglent SPD3303C / SPD3303X / SPD3303X-E programmable DC power supplies.
Functionality was tested both via LAN (tcp-raw) and USB (USBTMC) using sigrok-cli and SmuView.
Siglent SCPI implementation is "problematic" so I implemented "quirks" in SCPI framework to allow supporting
instruments (vendors) that can't seem to follow SCPI/IEEE488.2 specifications...
This way SCPI behavior doesn't need to change for devices that comply with SCPI, but framework still can be used
with devices that require "tweaks": 9cf9a57
(replaces #75)