35 #define CCSDS_TERMINAL 39 #define RANDOMIZER_SEL_TCRX 0x01 41 #define CONVOLUTION_SEL 0x04 43 #define DSCR_SIZE 1024 //size of each descriptor in bytes 44 #define USED_COUNT DSCR_COUNT //count of descriptors, used in test 65 # define TEST_TIMEOUT_INIT 10000000 79 TCRX->GLOBAL_ENABLE=0x00;
80 TCRX->CODER_SEL = coder_sel;
82 TCRX->DSCR_CURRENT = 0;
85 TCRX->GLOBAL_ENABLE=0x01;
104 PRINT(
"\tERROR:'Present' flag in decoder was deactivated\n");
122 PRINT(
"\tERROR: TCRX frame size is not correct = %d\n", frame_size);
147 unsigned int nextExpectedWord = 0x03020100;
149 for (
unsigned int i = 0; i < frame_size/4; i+=1)
153 if (word != nextExpectedWord)
155 PRINT(
"\tERROR: TCRX decoded data is not correct\n");
157 PRINT(
"\t0x%08x\n", word);
167 if (nextExpectedWord == 0xFFFEFDFC)
168 nextExpectedWord = 0x03020100;
170 nextExpectedWord += 0x04040404;
173 if (frame_size % 4 != 0)
176 a = ~(0xFFFFFFFF << 8*(frame_size%4));
178 if ((word ^ nextExpectedWord)&a != 0)
180 PRINT(
"\tERROR: TCRX test - last word is not correct\n");
181 PRINT(
"0x%08x\n", word & a);
200 PRINT(
"\t\tTest progress: ok\n");
209 CMN_REG->ALT_FUNCTION_CTRL[6] = 0;
210 CMN_REG->ALT_FUNCTION_CTRL[7] = 0;
215 GPIO_G->ALTFUNCSET = (1<<15);
216 GPIO_H->ALTFUNCSET = (1<<0) | (1<<1) | (1<<2) | (1<<3);
230 PRINT(
"\n********** TCRX test start **********\n");
236 unsigned int errors = 0;
245 #warning Please, select the proper coder settings: 247 for (
int i=0;i<10000;i++);
249 TCRX->START_SEQ = 0xEB90 | (1<<31);
250 TCRX->TAIL_SEQ1 = 0x11223344;
251 TCRX->TAIL_SEQ2 = 0x55667788;
261 #ifdef CCSDS_TERMINAL 265 for (
unsigned int k = 0; k < (
DSCR_SIZE/4)*USED_COUNT; k++)
275 PRINT(
"\t1-bit bus, BCH=ON, Randomizer=OFF, Convolution=OFF\n");
280 if ((
TCRX->DSCR_CURRENT & 0xF) >= USED_COUNT)
281 TCRX->DSCR_CURRENT &= 0x80000000;
293 PRINT(
"\t\tsubtest#0 1-bit bus, BCH=OFF, Randomizer=OFF, Convolution=OFF\n");
296 #ifdef CCSDS_TERMINAL 297 PRINT(
"COMMAND=TCRX_START_0\n");
302 PRINT(
"\t\tsubtest#1 1-bit bus, BCH=ON, Randomizer=OFF, Convolution=OFF\n");
305 #ifdef CCSDS_TERMINAL 306 PRINT(
"COMMAND=TCRX_START_1\n");
311 PRINT(
"\t\tsubtest#2 1-bit bus, BCH=OFF, Randomizer=ON, Convolution=OFF\n");
314 #ifdef CCSDS_TERMINAL 315 PRINT(
"COMMAND=TCRX_START_2\n");
320 PRINT(
"\t\tsubtest#3 1-bit bus, BCH=OFF, Randomizer=OFF, Convolution=ON\n");
323 #ifdef CCSDS_TERMINAL 324 PRINT(
"COMMAND=TCRX_START_3\n");
329 PRINT(
"\t\tsubtest#4 1-bit bus, BCH=ON, Randomizer=ON, Convolution=ON\n");
332 #ifdef CCSDS_TERMINAL 333 PRINT(
"COMMAND=TCRX_START_4\n");
339 PRINT(
"\t\tsubtest#5 3-bit bus, BCH=ON, Randomizer=ON, Convolution=ON\n");
342 #ifdef CCSDS_TERMINAL 343 PRINT(
"COMMAND=TCRX_START_5\n");
348 PRINT(
"\t\tTest result - OK\n");
355 if ((
TCRX->DSCR_CURRENT & 0xF) >= USED_COUNT)
356 TCRX->DSCR_CURRENT &= 0x80000000;
364 #ifdef CCSDS_TERMINAL 367 PRINT(
"\tERROR: no activity on TCRX interface. Exit test by timeout\n");
381 PRINT(
"\tTCRX test complete. Errors count = %d\n", errors);
unsigned int nextExpectedSize
#define PRINT(...)
Макросы для использования отладочного выхода
#define TEST_TIMEOUT_INIT
unsigned int test_timeout
const uint32_t sys_freq
Системная частота
#define NVIC_Dis_IRQ(X)
X - вектор прерывания
void NVIC_EnableIRQ(IRQn_T IRQn, uint32_t vec)
Разрешение прерывания
#define RANDOMIZER_SEL_TCRX
#define GPIO_G
Указатель на структуру GPIO_G.
volatile unsigned int TCRX_irq_counter
unsigned int TCRX_cur_dscr
void InitCoder(unsigned int coder_sel)
void TCRX_Enable()
Активация приёма данных
char dbg_buffer[256]
Отладочный буфер
void PWR_RST_Disable(CTRL_T CTRLn)
Вывод модуля из асинхронного сброса
void PWR_CLK_Enable(CTRL_T CTRLn)
Подача тактового сигнала на модуль
Структура для доступа к регистрам модуля приемника телекомандной информации
void TCRX_Clock_init()
Настройка подачи тактового сигнала на модуль TCRX.
unsigned int rx_buffer[(DSCR_SIZE/4) *USED_COUNT]
#define TCRX
Указатель на структуру TCRX.
void InitDscr(unsigned char index)
Этот файл содержит структуры, макросы и функции необходимые необходимые для тестовой программы для ап...
#define CMN_REG
Указатель на структуру CMN_REG.
void DBG_TX_Flush(void)
Вывод всех данных, накопленных в кольцевом буфере, в отладочный UART.
unsigned int TCRX_receive_complete
#define GPIO_H
Указатель на структуру GPIO_H.