sweep feature added

This commit is contained in:
Ayzen
2026-10-09 19:45:30 +03:00
parent 62e0430668
commit a1386e2588
8 changed files with 241 additions and 6 deletions
+19 -1
View File
@@ -17,6 +17,7 @@ SHORT_CONTROL_TOTAL_LENGTH = 10
WAVE_DATA_TOTAL_LENGTH = 30
PROFILE_SAVE_CONTROL_TOTAL_LENGTH = 30
PROFILE_SAVE_DATA_TOTAL_LENGTH = 30
SWEEP_CONTROL_TOTAL_LENGTH = 16
SHORT_COMMAND_LENGTH = 2
STATUS_RESPONSE_LENGTH = 2
@@ -35,6 +36,7 @@ CMD_AD9102_WAVE_CONTROL = 0xCCCC
CMD_AD9102_WAVE_DATA = 0xDDDD
CMD_PROFILE_SAVE_DATA = 0xEEEE
CMD_TEC_MODULATION_CONTROL = 0xF0F0
CMD_SWEEP_CONTROL = 0xF1F1
# ---- Setup-word bit layout from firmware app_decode_work_packet()
@@ -106,6 +108,9 @@ STM32_DAC_FLAG_ENABLE = 0x0001
TEC_MODULATION_FLAG_ENABLE = 0x0001
TEC_MODULATION_FLAG_CHANNEL_2 = 0x0002
SWEEP_FLAG_ENABLE = 0x0001
SWEEP_FLAG_TARGET_STM32_DAC = 0x0002
AD9102_WAVE_OPCODE_BEGIN = 0x0001
AD9102_WAVE_OPCODE_COMMIT = 0x0002
AD9102_WAVE_OPCODE_CANCEL = 0x0003
@@ -194,7 +199,14 @@ STM32_DAC_CODE_MAX = 4095
TEC_MODULATION_FREQUENCY_MIN_HZ = 50
TEC_MODULATION_FREQUENCY_MAX_HZ = 2_000
TEC_MODULATION_AMPLITUDE_CODE_MIN = 0
TEC_MODULATION_AMPLITUDE_CODE_MAX = 4_096
TEC_MODULATION_AMPLITUDE_CODE_MAX = 27_900 # Half of the firmware TEC drive range 1000..56800.
# Firmware sweep tick: step periods are rounded down to a multiple of it.
SWEEP_TICK_US = 10
SWEEP_STEP_PERIOD_MIN_US = 20
SWEEP_STEP_PERIOD_MAX_US = 65_530
SWEEP_PAUSE_MAX_MS = 65_535
SWEEP_CURRENT_STEP_MIN_MA = 0.002 # One laser DAC code is ~0.001 mA.
# ---- Rail tolerances
@@ -232,6 +244,12 @@ DEFAULT_STM32_DAC_CODE = round(
)
DEFAULT_TEC_MODULATION_FREQUENCY_HZ = 1_000
DEFAULT_TEC_MODULATION_AMPLITUDE_CODE = 256
DEFAULT_SWEEP_CURRENT_MIN_MA = 30.0
DEFAULT_SWEEP_CURRENT_MAX_MA = 40.0
DEFAULT_SWEEP_CURRENT_STEP_MA = 0.05
DEFAULT_SWEEP_DAC_STEP_CODE = 16
DEFAULT_SWEEP_STEP_PERIOD_US = 50
DEFAULT_SWEEP_PAUSE_MS = 5
DEFAULT_PI_P = 2560
DEFAULT_PI_I = 128