35 #define TEST_TMTX // Включаем тест tmtx 36 #define CCSDS_TERMINAL // Включаем работу с терминалом! 40 #define DUAL_BASIS 1 // 1 - включение dual basis в кодере Рида-Соломона 41 #define FRAME_SIZE_NO_CODING 2048 43 #define NEXT_VAL c++; \ 47 #define INIT_FRAME(index) for(unsigned int i=0; i<Frame_size; i++) \ 49 frame ## index ## [i] = NEXT_VAL; \ 51 TMTX->DSCR ## index ## _FLAG_SIZE = ((unsigned int)1<<31) | (Frame_size-1) 70 switch (
TMTX->CODER_SEL & 0x3)
79 if (((
TMTX->CODERS_CONFIG >> 16) & 1) == 0)
89 switch (
TMTX->CODER_SEL & 0x3)
94 if (((
TMTX->CODERS_CONFIG >> 24) & 1) == 0)
99 switch ((
TMTX->CODERS_CONFIG >> 8) & 3)
122 TMTX->MARKER1 = 0xFFFFFFFF;
123 TMTX->MARKER2 = 0x77777777;
124 TMTX->MARKER3 = 0xBBBBBBBB;
125 TMTX->MARKER4 = 0x33333333;
126 TMTX->MARKER5 = 0xDDDDDDDD;
127 TMTX->MARKER6 = 0x55555555;
149 for(
int i=0; i<100; i++);
158 PRINT(
"\tERROR: FIFO was empty in wrong time\n");
165 PRINT(
"\tTest progress: ok\n");
172 TMTX->GLOBAL_ENABLE=0x00;
215 CMN_REG->ALT_FUNCTION_CTRL[6] |= 0;
216 GPIO_G->ALTFUNCSET = (1<<12) | (1<<13) | (1<<14);
224 PRINT(
"\n********** TMTX test start **********\n");
230 #ifdef CCSDS_TERMINAL 231 PRINT(
"COMMAND=TMTX_START\n");
234 for(
unsigned int i=0; i<1000000; i++);
236 for(
unsigned int i=0; i<6000000; i++);
239 unsigned int errors = 0;
241 TMTX->GLOBAL_ENABLE = 0x00;
245 for (
int k = 0; k < 10000000; k++);
247 PRINT(
"\tsubtest#0 Codec=none, Randomizer=OFF, Convolution rate=none\n");
249 TMTX->CODER_SEL = 0;
TMTX->CODERS_CONFIG = 0;
257 PRINT(
" subtest#1 Codec=LDPC_7136, Randomizer=ON, Convolution rate=1/2\n");
260 TMTX->CODER_SEL |= 1 << 3;
261 TMTX->CODER_SEL |= 1 << 2;
TMTX->CODERS_CONFIG |= 1;
269 PRINT(
" subtest#2 Codec=LDPC_7156, Randomizer=OFF, Convolution rate=2/3\n");
272 TMTX->CODERS_CONFIG = 1<<24;
273 TMTX->CODER_SEL |= 1 << 2;
TMTX->CODERS_CONFIG |= 2;
281 PRINT(
" subtest#3 Codec=Turbo_1/2, Randomizer=ON, Convolution rate=3/4\n");
284 TMTX->CODER_SEL |= 1 << 3;
285 TMTX->CODER_SEL |= 1 << 2;
TMTX->CODERS_CONFIG |= 3;
293 PRINT(
" subtest#4 Codec=Turbo_1/3, Randomizer=OFF, Convolution rate=5/6\n");
296 TMTX->CODER_SEL |= 1 << 2;
TMTX->CODERS_CONFIG |= 5;
304 PRINT(
" subtest#5 Codec=Turbo_1/4, Randomizer=ON, Convolution rate=7/8\n");
307 TMTX->CODER_SEL |= 1 << 3;
308 TMTX->CODER_SEL |= 1 << 2;
TMTX->CODERS_CONFIG |= 7;
316 PRINT(
" subtest#6 Codec=Turbo_1/6, Randomizer=OFF, Convolution rate=1/2\n");
319 TMTX->CODER_SEL |= 1 << 2;
TMTX->CODERS_CONFIG |= 1;
327 PRINT(
" subtest#7 Codec=RS_239, Randomizer=ON, Convolution rate=2/3\n");
330 TMTX->CODER_SEL |= 1 << 3;
331 TMTX->CODER_SEL |= 1 << 2;
TMTX->CODERS_CONFIG |= 2;
339 PRINT(
" subtest#8 Codec=RS_223, Randomizer=OFF, Convolution rate=3/4\n");
342 TMTX->CODER_SEL |= 1 << 2;
TMTX->CODERS_CONFIG |= 3;
350 #ifdef CCSDS_TERMINAL 352 for(
unsigned int i=0; i<1000000; i++);
353 PRINT(
"COMMAND=TMTX_COMPLETE\n");
362 PRINT(
"\tTMTX test complete. Errors count = %d\n", errors);
#define PRINT(...)
Макросы для использования отладочного выхода
unsigned int BitFrameSizeOut()
T_TEST_RESULT
Результаты теста
void TMTX_Clock_init()
Настройка подачи тактового сигнала на модуль TMTX.
void PWR_RST_Enable(CTRL_T CTRLn)
Ввод модуля в асинхронный сброс
void NVIC_EnableIRQ(IRQn_T IRQn, uint32_t vec)
Разрешение прерывания
#define FRAME_SIZE_NO_CODING
unsigned char frame1[2048]
unsigned char frame2[2048]
#define GPIO_G
Указатель на структуру GPIO_G.
void PWR_CLK_Disable(CTRL_T CTRLn)
Отключение тактового сигнала от модуля
#define INIT_FRAME(index)
unsigned char tmtx_test_failed
Этот файл содержит структуры, макросы и функции необходимые необходимые для тестовой программы для ап...
unsigned int FramesTotalCount
unsigned int GetFrameSize()
Получение размеров фрейма
T_TEST_RESULT Test_TMTX()
Тест TMTX.
#define TMTX_PHY_FIFO_UNDERRUN
Макросы для PHY_FIFO_UNDERRUN.
const uint32_t sys_freq
Системная частота
unsigned int FramesSendedCount
Структура для доступа к регистрам модуля передатчика телеметрической информации
void PWR_RST_Disable(CTRL_T CTRLn)
Вывод модуля из асинхронного сброса
void PWR_CLK_Enable(CTRL_T CTRLn)
Подача тактового сигнала на модуль
unsigned int tmtx_cur_dscr
#define TMTX_GLOBAL_ENABLE
Макросы для GLOBAL_ENABLE.
void TMTX_Gpio_Init()
Иницилизация GPIO для работы с модулем TMTX.
#define CMN_REG
Указатель на структуру CMN_REG.
void DBG_TX_Flush(void)
Вывод всех данных, накопленных в кольцевом буфере, в отладочный UART.
#define TMTX
Указатель на структуру TMTX.
void SendingProcess()
Процесс отпаравки
void TMTX_IRQ(void)
Обработчик прерывания
char dbg_buffer[256]
Отладочный буфер