~={yellow}Модуль высокого напряжения=~ USB / ethernet
curHV_voltage (FloatUint32, dacToVolt(curHV_dac)) /
#define CONFIG_BASE ((uint16_t)0x0000)
#define CONFIG_LEN 18 //32 // CONFIG_LEN в словах по 16 бит
#define CONFIG_VER_SOFT CONFIG_BASE + 1
#define CONFIG_VER_FPGA CONFIG_BASE + 2
#define CONFIG_UREF CONFIG_BASE + 16
#define UART_BASE 0x0012
#define UART_BAUDRATEL UART_BASE
#define UART_BAUDRATEH UART_BASE + 1
#define UART_DATA_BITS UART_BASE + 2
#define UART_STOP_BITS UART_BASE + 3
#define UART_PARITY UART_BASE + 4
#define UART_NREG 5
#define MODBUS_ADDR 0x0017
#define PRESET_BASE 0x0100
#define PRESET_LEN 32 //с резервом
#define PRESET_MODE PRESET_BASE
// 0 - без остановки
// 1 - по реальному времени (RTIME)
// 2 - по живому времени (LTIME)
// 3 - по счету (SUM)
// 4 - по пику в ROI (PRESET_SUM_ROI)
#define PRESET_RTIME PRESET_BASE + 1
#define PRESET_LTIME PRESET_BASE + 3
#define PRESET_SUM PRESET_BASE + 5
#define PRESET_SUM_ROI PRESET_BASE + 7
#define PRESET_ROIL PRESET_BASE + 9
#define PRESET_ROIH PRESET_BASE + 10
// -------------------------------------------------------------------------- //
#define HV_BASE 0x0200
#define HV_STATE HV_BASE + 0 // состояние/команда hvState
#define HV_CUR_VOLT_L HV_BASE + 1 // Текущее напряжение в вольтах Float, 4 байта
#define HV_CUR_VOLT_H HV_BASE + 2 // Текущее напряжение в вольтах Float, 4 байта
#define HV_RISE_TIME HV_BASE + 3 // время подъёма в секундах
#define HV_PRESET_L HV_BASE + 4 // уставка, напряжение в вольтах Float, 4 байта
#define HV_PRESET_H HV_BASE + 5 // уставка, напряжение в вольтах Float, 4 байта
#define HV_PRESET_MIN_L HV_BASE + 6 // минимальная уставка, напряжение в вольтах Float, 4 байта
#define HV_PRESET_MIN_H HV_BASE + 7 // минимальнаяуставка, напряжение в вольтах Float, 4 байта
#define HV_PRESET_MAX_L HV_BASE + 8 // максимальная уставка, напряжение в вольтах Float, 4 байта
#define HV_PRESET_MAX_H HV_BASE + 9 // максимальная уставка, напряжение в вольтах Float, 4 байта
#define HV_K0_L HV_BASE + 10 // коэф. преобразования напряжения ЦАП в вольты, Float, 4 байта
#define HV_K0_H HV_BASE + 11 // коэф. преобразования напряжения ЦАП в вольты, Float, 4 байта
#define HV_K1_L HV_BASE + 12 // коэф. преобразования напряжения ЦАП в вольты, Float, 4 байта
#define HV_K1_H HV_BASE + 13 // коэф. преобразования напряжения ЦАП в вольты, Float, 4 байта
#define HV_DELAY HV_BASE + 14 // время задержки после установки HV перед началом набора
#define HV_NREG 16
// -------------------------------------------------------------------------- //
//"FPGA"
#define FPGA_BASE 0x300
#define FPGA_NREG 32
// -------------------------------------------------------------------------- //
//Мониторинг
#define MON_BASE 0x500
#define MON_BASE_RAW 0x600
#define MON_BAT_VOLTAGE MON_BASE + 0x014 // напряжение АКБ
#define MON_BAT_CHARGE_ST MON_BASE + 0x016 // статус заряда АКБ (есть/нет)
#define MON_FLASH_SIZE MON_BASE + 0x018 // объем флеш-памяти (байты)
#define MON_FLASH_FREE MON_BASE + 0x01A // объем свободной флеш-памяти (байты)
// -------------------------------------------------------------------------- //
// Автономный режим работы
#define AUTO_BASE 0x700
#define AUTO_NREG 12
#define AUTO_STATE AUTO_BASE + 0 // статус автономного режима
#define AUTO_DELAY_L AUTO_BASE + 1 // задержка перед началом цикла измерений (сек.)
#define AUTO_DELAY_H AUTO_BASE + 2 // задержка перед началом цикла измерений (сек.)
#define AUTO_CNT_DW_L AUTO_BASE + 3 // осталось до начала цикла (сек.)
#define AUTO_CNT_DW_H AUTO_BASE + 4 // осталось до начала цикла (сек.)
#define AUTO_PERIOD_L AUTO_BASE + 5 // период начала набора каждого спектра
#define AUTO_PERIOD_H AUTO_BASE + 6 // период начала набора каждого спектра
#define AUTO_NBR_SP AUTO_BASE + 7 // количество набираемых спектров (0 без остановки)
#define AUTO_NBR_SP_ALR AUTO_BASE + 8 // количество уже набранных спектров
#define AUTO_STNB_MODE AUTO_BASE + 9 // режим сна
#define AUTO_STNB_DELAY_L AUTO_BASE + 10// время до перехода в режим сна (сек.)
#define AUTO_STNB_DELAY_H AUTO_BASE + 11// время до перехода в режим сна (сек.)
// -------------------------------------------------------------------------- //
//Сохранение настройек прибора
#define SAVE_LOAD_BASE 0x800
#define SAVE_LOAD_LOAD (SAVE_LOAD_BASE + 0)
#define SAVE_LOAD_SAVE (SAVE_LOAD_BASE + 1)
#define SAVE_LOAD_LOAD_SP_PARAM (SAVE_LOAD_BASE + 2)
#define SAVE_LOAD_SAVE_SP_PARAM (SAVE_LOAD_BASE + 3)
// -------------------------------------------------------------------------- //
// Режимы работы
#define KEY_REBOOT 0x2031 // перезагрузка в режиме бутлоадера (DFU)
#define KEY_RESET 0x2032 // перезагрузка
#define REBOOT_OK 0x3120
#define REBOOT_0 0x840
#define BLAST_FPGA 0x841
#define BLAST_MODE_ON 0x1
#define BLAST_MODE_OFF 0x0
#define WORK_MODE_N_REG 2
// specter
// Состояние набора
#if 0
enum spState
{
SP_CLEAR = 0, // очистка, нет спектра
SP_STOP = 1, // останов, есть спектр
SP_ACQ = 2, // набор спектра
};
#endif
// -------------------------------------------------------------------------- //
#define SPECTER_INFO_BASE 0x900
#define SPECTER_INFO_NREG 15
#define SPECTER_FORMAT 0x0900
#define SPECTER_ACQ_STATE 0x0901
#define SPECTER_NCHANNELS 0x0902
#define SPECTER_EN_K0 0x0903
#define SPECTER_EN_K1 0x0905
#define SPECTER_REGRATE 0x0907
#define SPECTER_INPRATE 0x0909
#define SPECTER_RTIME 0x090B
#define SPECTER_LTIME 0x090D
#define SPECTER_LOCALTIME 0x090F
#define GPS_STATUS 0x0911
#define GPS_LON 0x0912
#define GPS_LAT 0x0914
#define GPS_ALT 0x0916
#define SP_OFFSET 0x0918
// -------------------------------------------------------------------------- //
// Для считывания заголовка спектра из файла.
#define SPECTER_FILE_INFO_BASE 0xB000
#define SPECTER_FILE_INFO_NREG 255
#define SPECTER_FORMAT_F 0xB000
#define SPECTER_ACQ_STATE_F 0xB001
#define SPECTER_NCHANNELS_F 0xB002
#define SPECTER_EN_K0_F 0xB003
#define SPECTER_EN_K1_F 0xB005
#define SPECTER_REGRATE_F 0xB007
#define SPECTER_INPRATE_F 0xB009
#define SPECTER_RTIME_F 0xB00B
#define SPECTER_LTIME_F 0xB00D
#define SPECTER_LOCALTIME_F 0xB00F
#define GPS_STATUS_F 0xB011
#define GPS_LON_F 0xB012
#define GPS_LAT_F 0xB014
#define GPS_ALT_F 0xB016
#define SP_OFFSET_F 0xB018
#define SPECTER_FILE_BASE 0xB100
#define SPECTER_BASE 0x1000
#define SPECTER_CNL 4096
#define SPECTER_NREG (SPECTER_CNL * 2)
#define N_REGS_BIG_FRAME ((64 + 2)*2)
// осциллограф
#define N_SCOPE_FRAME 4
#define SCOPE_BASE 0xA000
#define SCOPE_NREG (N_REGS_BIG_FRAME * N_SCOPE_FRAME)
// fifo
#define N_FIFO_FRAME 8
#define FIFO_BASE 0xA400
#define FIFO_NREG (N_REGS_BIG_FRAME * N_FIFO_FRAME)
// Обмен текстовыми сообщениями
#define STR_BASE 0x7F00
#define STR_NREG 125