38 #define FAST_SPW_TEST // Включаем тест 39 #define FULL_LOG // Включаем лог 43 #define SPW_TIMEOUT_INIT 8000000 // Таймаут 44 #define SPW_TIMEOUT_TX 5000000 // Таймаут TX 45 #define SPW_TIMEOUT_RX 5000000 // Таймаут RX 73 PRINT(
"Spacewire %i: Got disconnect error", spw_number);
78 PRINT(
"Spacewire %i: Got parity error", spw_number);
83 PRINT(
"Spacewire %i: Got escape error", spw_number);
88 PRINT(
"Spacewire %i: Got credit error", spw_number);
93 PRINT(
"Spacewire %i: AHB error occured", spw_number);
114 #define PACKET_SIZE_WORDS 256 // Размер слова 115 #pragma data_alignment = 0x200 116 #pragma location=".noinit" 118 #pragma data_alignment = 0x200 119 #pragma location=".noinit" 121 #pragma location=".noinit" 123 #pragma location=".noinit" 178 PRINT(
", speed = %i Mbit/s\n",
spw_freq/1000000/(clk_divisor+1));
198 unsigned int timeout;
205 PRINT(
"ERROR: spacewire connection timeout\n");
210 unsigned int value = 0;
215 value = (value << 1) + 1;
217 value = (value << 1);
236 PRINT(
"ERROR: spacewire TX_A timeout\n");
247 PRINT(
"ERROR: spacewire RX_B timeout\n");
258 PRINT(
"ERROR: spacewire data not correct\n");
260 if (data_error++ > 10)
278 GPIO_G->ALTFUNCSET |= (uint32_t)(1<<4);
279 GPIO_G->ALTFUNCSET |= (uint32_t)(1<<6);
281 GPIO_G->ALTFUNCSET |= (uint32_t)(1<<5);
282 GPIO_G->ALTFUNCSET |= (uint32_t)(1<<7);
284 GPIO_G->ALTFUNCSET |= (uint32_t)(1<<8);
285 GPIO_G->ALTFUNCSET |= (uint32_t)(1<<10);
287 GPIO_G->ALTFUNCSET |= (uint32_t)(1<<9);
288 GPIO_G->ALTFUNCSET |= (uint32_t)(1<<11);
297 PRINT(
"Spacewire test - start\n");
304 unsigned int result = 0;
305 for(
int clk = 0; clk<16; clk+=2)
313 PRINT(
"Test result - OK\n");
317 PRINT(
"Test result - FAILED\n");
#define SW_STATUS_AHB_ERR
#define PRINT(...)
Макросы для использования отладочного выхода
#define SW_CONTROL_INT_EN_RX_DSCR_COMPLETE
Структура для таблицы DMA дескрипторов Spacewire.
#define PRINTSTREAM(...)
Печать в СОМ порт
#define SW_STATUS_ESCAPE_ERR
#define SPW1
Указатель на структуру SPW1.
void NVIC_EnableIRQ(IRQn_T IRQn, uint32_t vec)
Разрешение прерывания
char dbg_buffer[256]
Отладочный буфер
#define SW_STATUS_LINK_STATUS_ENABLED
#define SPW2
Указатель на структуру SPW2.
void Spacewire2_IRQ(void)
Обработчик прерывания для Spacewire 2.
#define SW_CONTROL_RESTART_RX_DMA
void SPW_Init(SPW_T *pSPW)
Инициализация SpaceWire.
void Spacewire1_IRQ(void)
Обработчик прерывания для Spacewire 1.
#define PACKET_SIZE_WORDS
#define GPIO_G
Указатель на структуру GPIO_G.
unsigned int * spwB_intr_flag
#define SW_TXSCALER_DIVISOR(x)
Макросы для TXSCALER.
unsigned int SpacewireTransmit(SPW_T *pSPWA, SPW_T *pSPWB, int clk_divisor)
Передача данных
void SpacewireInternal_Test()
Тест Spacewire.
#define SW_CONTROL_LINK_START
#define SW_CONTROL_RESET_DMA
#define SW_CONTROL_AUTOSTART
unsigned int spw2_intr_flag
unsigned int * spwA_intr_flag
#define SW_CONTROL_CANCEL_TX_DMA
SPW_DMA_DSC_T RXDsc[SPW_DSC_COUNT]
void SPW_freq(uint8_t freq_num)
Выбор тактовой частоты блоков Spacewire.
#define SW_STATUS_DISCONNECT_ERR
void ResetSPW()
Сброс регистров
void SetDefaults(SPW_T *pSPW, unsigned char spw_number)
Установка регистров
Этот файл содержит структуры, макросы и функции необходимые необходимые для тестовой программы для ап...
unsigned int spw1_intr_flag
#define SW_CONTROL_RESTART_TX_DMA
SPW_DMA_DSC_T TXDsc[SPW_DSC_COUNT]
#define SW_STATUS_PARITY_ERR
unsigned int rxdataB[PACKET_SIZE_WORDS]
#define SW_STATUS_CREDIT_ERR
const uint32_t sys_freq
Системная частота
SPW_DMA_DSC_TBL_T SPWA_DSC_TBL
SPW_DMA_DSC_TBL_T SPWB_DSC_TBL
void Gpio_Spacewire_Init()
Инициализация GPIO для модуля Spacewire.
void InitSPWDscr(SPW_T *pSPW, SPW_DMA_DSC_TBL_T *pDSC_TBL, uint32_t *dscr_buf_tx, uint32_t *dscr_buf_rx)
Инициализация Spacewire.
unsigned int txdataA[PACKET_SIZE_WORDS]
Структура для доступа к регистрам Spacewire.
#define SW_CONTROL_RESET_AMBA
Макросы для CONTROL.