added dac

This commit is contained in:
Ayzen
2026-02-18 16:04:20 +03:00
parent 8ca2fe39d0
commit 12cf9d6716
7 changed files with 92 additions and 1 deletions

View File

@ -16,6 +16,8 @@ AD9833_CMD_TOTAL_LENGTH = 10 # Total bytes when sending AD9833 command
AD9833_CMD_HEADER = "9999"
DS1809_CMD_TOTAL_LENGTH = 10 # Total bytes when sending DS1809 UC/DC pulse command
DS1809_CMD_HEADER = "AAAA"
STM32_DAC_CMD_TOTAL_LENGTH = 10 # Total bytes when sending STM32 DAC command
STM32_DAC_CMD_HEADER = "BBBB"
AD9102_SAW_STEP_DEFAULT = 1
AD9102_PAT_PERIOD_DEFAULT = 0xFFFF
AD9102_PAT_PERIOD_BASE_DEFAULT = 0x02
@ -31,6 +33,9 @@ AD9833_MCLK_HZ_DEFAULT = 20_000_000
DS1809_FLAG_UC = 0x0001
DS1809_FLAG_DC = 0x0002
DS1809_PULSE_MS_DEFAULT = 2
STM32_DAC_FLAG_ENABLE = 0x0001
STM32_DAC_CODE_MAX = 4095
STM32_DAC_VREF_DEFAULT = 3.3
class TaskType(IntEnum):
Manual = 0x00
@ -203,6 +208,17 @@ def send_DS1809(prt, bytestring):
print("Sent: DS1809 pulse command.")
def send_STM32_DAC(prt, bytestring):
''' Set STM32 internal DAC output on PA4 (0xBBBB + ...).
Expected device answer: STATE.
'''
if len(bytestring) != STM32_DAC_CMD_TOTAL_LENGTH:
print("Error. Wrong parameter string for STM32 DAC command.")
return None
prt.write(bytestring)
print("Sent: STM32 DAC command.")
# ---- Getting data
@ -496,6 +512,28 @@ def create_DS1809_pulse_command(uc: bool = False,
return bytearray.fromhex(data)
def create_STM32_DAC_command(dac_code: int, enable: bool = True):
if dac_code is None:
dac_code = 0
if dac_code < 0:
dac_code = 0
if dac_code > STM32_DAC_CODE_MAX:
dac_code = STM32_DAC_CODE_MAX
flags = STM32_DAC_FLAG_ENABLE if enable else 0
param0 = int(dac_code) & 0x0FFF
param1 = 0
crc_word = flags ^ param0 ^ param1
data = flipfour(STM32_DAC_CMD_HEADER) # Word 0 (header)
data += flipfour(int_to_hex(flags))
data += flipfour(int_to_hex(param0))
data += flipfour(int_to_hex(param1))
data += flipfour(int_to_hex(crc_word))
return bytearray.fromhex(data)
def encode_Input(params):
if params is None: