mirror of
https://github.com/MikronMIK32/mik32-uploader.git
synced 2026-01-01 13:37:03 +03:00
97 lines
3.1 KiB
Python
97 lines
3.1 KiB
Python
# --------------------------
|
|
# DMA register fields
|
|
# --------------------------
|
|
|
|
CHANNEL_COUNT = 4
|
|
|
|
CHANNEL_M = ((1 << CHANNEL_COUNT) - 1)
|
|
|
|
# CONTROL
|
|
|
|
CONTROL_CLEAR_LOCAL_IRQ_S = 0
|
|
CONTROL_CLEAR_LOCAL_IRQ_M = (
|
|
CHANNEL_M << CONTROL_CLEAR_LOCAL_IRQ_S)
|
|
|
|
|
|
def CONTROL_CLEAR_LOCAL_IRQ(i):
|
|
return ((1 << (CONTROL_CLEAR_LOCAL_IRQ_S + (i))) & CONTROL_CLEAR_LOCAL_IRQ_M)
|
|
|
|
|
|
CONTROL_CLEAR_GLOBAL_IRQ_S = (CHANNEL_COUNT + 0)
|
|
CONTROL_CLEAR_GLOBAL_IRQ_M = (1 << CONTROL_CLEAR_GLOBAL_IRQ_S)
|
|
CONTROL_CLEAR_ERROR_IRQ_S = (CHANNEL_COUNT + 1)
|
|
CONTROL_CLEAR_ERROR_IRQ_M = (1 << CONTROL_CLEAR_ERROR_IRQ_S)
|
|
CONTROL_GLOBAL_IRQ_ENA_S = (CHANNEL_COUNT + 2)
|
|
CONTROL_GLOBAL_IRQ_ENA_M = (1 << CONTROL_GLOBAL_IRQ_ENA_S)
|
|
CONTROL_ERROR_IRQ_ENA_S = (CHANNEL_COUNT + 3)
|
|
CONTROL_ERROR_IRQ_ENA_M = (1 << CONTROL_ERROR_IRQ_ENA_S)
|
|
CONTROL_CURRENT_VALUE_S = (CHANNEL_COUNT + 4)
|
|
CONTROL_CURRENT_VALUE_M = (1 << CONTROL_CURRENT_VALUE_S)
|
|
|
|
CFG_CH_ENABLE_S = 0
|
|
CFG_CH_ENABLE_M = (1 << CFG_CH_ENABLE_S)
|
|
CFG_CH_DISABLE_M = (0 << CFG_CH_ENABLE_S)
|
|
|
|
CFG_CH_PRIOR_S = 1
|
|
CFG_CH_PRIOR_M = (0x3 << CFG_CH_PRIOR_S)
|
|
|
|
CFG_CH_READ_MODE_S = 3
|
|
CFG_CH_READ_MODE_memory_M = (1 << CFG_CH_READ_MODE_S)
|
|
CFG_CH_READ_MODE_periphery_M = (0 << CFG_CH_READ_MODE_S)
|
|
|
|
CFG_CH_WRITE_MODE_S = 4
|
|
CFG_CH_WRITE_MODE_memory_M = (1 << CFG_CH_WRITE_MODE_S)
|
|
CFG_CH_WRITE_MODE_periphery_M = (0 << CFG_CH_WRITE_MODE_S)
|
|
|
|
CFG_CH_READ_INCREMENT_S = 5
|
|
CFG_CH_READ_INCREMENT_M = (1 << CFG_CH_READ_INCREMENT_S)
|
|
CFG_CH_READ_no_INCREMENT_M = (0 << CFG_CH_READ_INCREMENT_S)
|
|
|
|
CFG_CH_READ_INCREMENT_S = 5
|
|
CFG_CH_READ_INCREMENT_M = (1 << CFG_CH_READ_INCREMENT_S)
|
|
CFG_CH_READ_no_INCREMENT_M = (0 << CFG_CH_READ_INCREMENT_S)
|
|
|
|
CFG_CH_WRITE_INCREMENT_S = 6
|
|
CFG_CH_WRITE_INCREMENT_M = (1 << CFG_CH_WRITE_INCREMENT_S)
|
|
CFG_CH_WRITE_no_INCREMENT_M = (0 << CFG_CH_WRITE_INCREMENT_S)
|
|
|
|
CFG_CH_READ_SIZE_S = 7
|
|
CFG_CH_READ_SIZE_byte_M = (0B00 << CFG_CH_READ_SIZE_S) # байт
|
|
CFG_CH_READ_SIZE_2byte_M = (0B01 << CFG_CH_READ_SIZE_S) # полуслово
|
|
CFG_CH_READ_SIZE_4byte_M = (0B10 << CFG_CH_READ_SIZE_S) # слово
|
|
CFG_CH_READ_SIZE_rez_M = (0B11 << CFG_CH_READ_SIZE_S) # резерв
|
|
|
|
CFG_CH_WRITE_SIZE_S = 9
|
|
CFG_CH_WRITE_SIZE_byte_M = (0B00 << CFG_CH_WRITE_SIZE_S) # байт
|
|
CFG_CH_WRITE_SIZE_2byte_M = (0B01 << CFG_CH_WRITE_SIZE_S) # полуслово
|
|
CFG_CH_WRITE_SIZE_4byte_M = (0B10 << CFG_CH_WRITE_SIZE_S) # слово
|
|
CFG_CH_WRITE_SIZE_rez_M = (0B11 << CFG_CH_WRITE_SIZE_S) # резерв
|
|
|
|
# Кол-во байт пакетной передачи: 2^Read_burst_size
|
|
CFG_CH_READ_BURST_SIZE_S = 11
|
|
# Кол-во байт пакетной передачи: 2^Write_burst_size
|
|
CFG_CH_WRITE_BURST_SIZE_S = 14
|
|
|
|
CFG_CH_READ_REQ_S = 17 # выбор канала чтения
|
|
CFG_CH_READ_REQ_M = (0xF << CFG_CH_READ_REQ_S)
|
|
|
|
|
|
def CFG_CH_READ_REQ(v):
|
|
return (((v) << CFG_CH_READ_REQ_S) & CFG_CH_READ_REQ_M)
|
|
|
|
|
|
CFG_CH_WRITE_REQ_S = 21 # выбор канала записи
|
|
CFG_CH_WRITE_REQ_M = (0xF << CFG_CH_WRITE_REQ_S)
|
|
|
|
|
|
def CFG_CH_WRITE_REQ(v):
|
|
return (((v) << CFG_CH_WRITE_REQ_S) & CFG_CH_WRITE_REQ_M)
|
|
|
|
|
|
CFG_CH_ACK_READ_S = 25
|
|
CFG_CH_ACK_READ_M = (1 << CFG_CH_ACK_READ_S)
|
|
CFG_CH_ACK_WRITE_S = 26
|
|
CFG_CH_ACK_WRITE_M = (1 << CFG_CH_ACK_WRITE_S)
|
|
|
|
STATUS_READY_S = 0
|