mirror of
https://github.com/MikronMIK32/mik32-uploader.git
synced 2026-01-01 21:37:05 +03:00
57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
from enum import Enum
|
|
from tclrpc import OpenOcdTclRpc
|
|
import mik32_debug_hal.registers.memory_map as mem_map
|
|
|
|
|
|
class MIK32_Version(Enum):
|
|
MIK32V0 = "MIK32V0"
|
|
MIK32V2 = "MIK32V2"
|
|
|
|
def __str__(self):
|
|
return self.value
|
|
|
|
|
|
port2_value = 0
|
|
|
|
|
|
def gpio_init(openocd: OpenOcdTclRpc, version: MIK32_Version):
|
|
|
|
port2_addr = 0
|
|
if version == MIK32_Version.MIK32V0:
|
|
port2_addr = mem_map.PAD_CONFIG_REGS + mem_map.PAD_CONFIG_REGS_V0.PORT_2_CFG.value
|
|
elif version == MIK32_Version.MIK32V2:
|
|
port2_addr = mem_map.PAD_CONFIG_REGS + mem_map.PAD_CONFIG_REGS_V2.PORT_2_CFG.value
|
|
else:
|
|
return
|
|
|
|
openocd.halt()
|
|
port2_value = openocd.read_memory(port2_addr, 32, 1)[0]
|
|
|
|
port2_value_updated = port2_value
|
|
|
|
port2_value_updated &= 0xF000
|
|
|
|
if version == MIK32_Version.MIK32V0:
|
|
port2_value_updated |= 0x000
|
|
elif version == MIK32_Version.MIK32V2:
|
|
port2_value_updated |= 0x555
|
|
else:
|
|
return
|
|
|
|
|
|
openocd.write_word(port2_addr, port2_value_updated)
|
|
|
|
openocd.write_word(port2_addr + 8, 0x0500)
|
|
|
|
|
|
def gpio_deinit(openocd: OpenOcdTclRpc, version: MIK32_Version):
|
|
|
|
if version == MIK32_Version.MIK32V0:
|
|
port2_addr = mem_map.PAD_CONFIG_REGS + mem_map.PAD_CONFIG_REGS_V0.PORT_2_CFG.value
|
|
elif version == MIK32_Version.MIK32V2:
|
|
port2_addr = mem_map.PAD_CONFIG_REGS + mem_map.PAD_CONFIG_REGS_V2.PORT_2_CFG.value
|
|
else:
|
|
return
|
|
|
|
openocd.write_word(port2_addr, port2_value)
|