/* * includes.c * * Created on: 2019. 7. 28. * Author: parkyj */ #include "includes.h" #include "zig_operate.h" #include "main.h" #include "uart.h" #include "CRC16.h" #define MACROSTR(k) #k uint32_t ADCvalue[ADC_EA]; char *Bluecell_Prot_IndexStr[] = { MACROSTR(INDEX_ATT_1_8G_DL1 ), MACROSTR(INDEX_ATT_1_8G_DL2 ), MACROSTR(INDEX_ATT_1_8G_UL1 ), MACROSTR(INDEX_ATT_1_8G_UL2 ), MACROSTR(INDEX_ATT_1_8G_UL3 ), MACROSTR(INDEX_ATT_1_8G_UL4 ), MACROSTR(INDEX_ATT_2_1G_DL1 ), MACROSTR(INDEX_ATT_2_1G_DL2 ), MACROSTR(INDEX_ATT_2_1G_UL1 ), MACROSTR(INDEX_ATT_2_1G_UL2 ), MACROSTR(INDEX_ATT_2_1G_UL3 ), MACROSTR(INDEX_ATT_2_1G_UL4 ), MACROSTR(INDEX_ATT_3_5G_LOW1 ), MACROSTR(INDEX_ATT_3_5G_HIGH1 ), MACROSTR(INDEX_ATT_3_5G_COM1 ), MACROSTR(INDEX_ATT_3_5G_LOW2 ), MACROSTR(INDEX_ATT_3_5G_HIGH2 ), MACROSTR(INDEX_ATT_3_5G_COM2 ), MACROSTR(INDEX_PLL_1_8G_DL_H ), MACROSTR(INDEX_PLL_1_8G_DL_L ), MACROSTR(INDEX_PLL_1_8G_UL_H ), MACROSTR(INDEX_PLL_1_8G_UL_L ), MACROSTR(INDEX_PLL_2_1G_DL_H ), MACROSTR(INDEX_PLL_2_1G_DL_L ), MACROSTR(INDEX_PLL_2_1G_UL_H ), MACROSTR(INDEX_PLL_2_1G_UL_L ), MACROSTR(INDEX_PLL_3_5G_LOW_H ), MACROSTR(INDEX_PLL_3_5G_LOW_M ), MACROSTR(INDEX_PLL_3_5G_LOW_L ), MACROSTR(INDEX_PLL_3_5G_HIGH_H ), MACROSTR(INDEX_PLL_3_5G_HIGH_M ), MACROSTR(INDEX_PLL_3_5G_HIGH_L ), MACROSTR(INDEX_PLL_LD_6_BIT ), MACROSTR(INDEX_DET_1_8G_DL_IN_H ), MACROSTR(INDEX_DET_1_8G_DL_IN_L ), MACROSTR(INDEX_DET_1_8G_DL_OUT_H), MACROSTR(INDEX_DET_1_8G_DL_OUT_L), MACROSTR(INDEX_DET_1_8G_UL_IN_H ), MACROSTR(INDEX_DET_1_8G_UL_IN_L ), MACROSTR(INDEX_DET_1_8G_UL_OUT_H), MACROSTR(INDEX_DET_1_8G_UL_OUT_L), MACROSTR(INDEX_DET_2_1G_DL_IN_H ), MACROSTR(INDEX_DET_2_1G_DL_IN_L ), MACROSTR(INDEX_DET_2_1G_DL_OUT_H), MACROSTR(INDEX_DET_2_1G_DL_OUT_L), MACROSTR(INDEX_DET_2_1G_UL_IN_H ), MACROSTR(INDEX_DET_2_1G_UL_IN_L ), MACROSTR(INDEX_DET_2_1G_UL_OUT_H), MACROSTR(INDEX_DET_2_1G_UL_OUT_L), MACROSTR(INDEX_DET_3_5G_DL_IN_H ), MACROSTR(INDEX_DET_3_5G_DL_IN_L ), MACROSTR(INDEX_DET_3_5G_DL_OUT_L), MACROSTR(INDEX_DET_3_5G_DL_OUT_H), MACROSTR(INDEX_DET_3_5G_UL_IN_H ), MACROSTR(INDEX_DET_3_5G_UL_IN_L ), MACROSTR(INDEX_DET_3_5G_UL_OUT_H), MACROSTR(INDEX_DET_3_5G_UL_OUT_L), MACROSTR(INDEX_RFU_TEMP_H ), MACROSTR(INDEX_RFU_TEMP_L ), MACROSTR(INDEX__28V_DET_H ), MACROSTR(INDEX__28V_DET_L ), MACROSTR(INDEX_ALARM_AC ), MACROSTR(INDEX_ALARM_DC ), MACROSTR(INDEX_PATH_EN_1_8G_DL ), MACROSTR(INDEX_PATH_EN_1_8G_UL ), MACROSTR(INDEX_PATH_EN_2_1G_DL ), MACROSTR(INDEX_PATH_EN_2_1G_UL ), MACROSTR(INDEX_PATH_EN_3_5G_L ), MACROSTR(INDEX_PATH_EN_3_5G_H ), MACROSTR(INDEX_PATH_EN_3_5G_DL ), MACROSTR(INDEX_PATH_EN_3_5G_UL ), MACROSTR(INDEX_PLL_ON_OFF_3_5G_H), MACROSTR(INDEX_PLL_ON_OFF_3_5G_L), MACROSTR(INDEX_T_SYNC_DL ), MACROSTR(INDEX__T_SYNC_DL ), MACROSTR(INDEX_T_SYNC_UL ), MACROSTR(INDEX__T_SYNC_UL ), }; #ifdef DEBUG_PRINT static void kConstPrinter(Bluecell_Prot_Index k) { printf("%s", Bluecell_Prot_IndexStr[k]); } #endif /* DEBUG_PRINT */ void Path_Init(void){ Prev_data[INDEX_PATH_EN_1_8G_DL] = HAL_GPIO_ReadPin(PATH_EN_1_8G_DL_GPIO_Port,PATH_EN_1_8G_DL_Pin); Prev_data[INDEX_PATH_EN_1_8G_UL] = HAL_GPIO_ReadPin(PATH_EN_1_8G_UL_GPIO_Port,PATH_EN_1_8G_UL_Pin); Prev_data[INDEX_PATH_EN_2_1G_DL] = HAL_GPIO_ReadPin(PATH_EN_2_1G_DL_GPIO_Port,PATH_EN_2_1G_DL_Pin); Prev_data[INDEX_PATH_EN_2_1G_UL] = HAL_GPIO_ReadPin(PATH_EN_2_1G_UL_GPIO_Port,PATH_EN_2_1G_UL_Pin); Prev_data[INDEX_PATH_EN_3_5G_L] = HAL_GPIO_ReadPin(PATH_EN_3_5G_L_GPIO_Port,PATH_EN_3_5G_L_Pin); Prev_data[INDEX_PATH_EN_3_5G_H] = HAL_GPIO_ReadPin(PATH_EN_3_5G_H_GPIO_Port,PATH_EN_3_5G_H_Pin); Prev_data[INDEX_PATH_EN_3_5G_DL] = HAL_GPIO_ReadPin(PATH_EN_3_5G_DL_GPIO_Port,PATH_EN_3_5G_DL_Pin); Prev_data[INDEX_PATH_EN_3_5G_UL] = HAL_GPIO_ReadPin(PATH_EN_3_5G_UL_GPIO_Port,PATH_EN_3_5G_UL_Pin); Prev_data[INDEX_PLL_ON_OFF_3_5G_H] = HAL_GPIO_ReadPin(PLL_ON_OFF_3_5G_H_GPIO_Port,PLL_ON_OFF_3_5G_H_Pin); Prev_data[INDEX_PLL_ON_OFF_3_5G_L] = HAL_GPIO_ReadPin(PLL_ON_OFF_3_5G_L_GPIO_Port,PLL_ON_OFF_3_5G_L_Pin); } void Power_ON_OFF_Ctrl(uint8_t type,uint8_t cmd){ static uint32_t pinctrl = 0; static uint32_t pintemp = 0; // printf("\r\ntype : %s cmd : %d\r\n",Bluecell_Prot_IndexStr[type - 4],cmd); switch(type){ case INDEX_PATH_EN_1_8G_DL : #if 0 // PYJ.2019.07.29_BEGIN -- printf("\r\n LINE %d\r\n",__LINE__); #endif // PYJ.2019.07.29_END -- if(cmd) HAL_GPIO_WritePin(PATH_EN_1_8G_DL_GPIO_Port,PATH_EN_1_8G_DL_Pin, GPIO_PIN_SET); else HAL_GPIO_WritePin(PATH_EN_1_8G_DL_GPIO_Port,PATH_EN_1_8G_DL_Pin, GPIO_PIN_RESET); break; case INDEX_PATH_EN_1_8G_UL : #if 0 // PYJ.2019.07.29_BEGIN -- printf("\r\n LINE %d\r\n",__LINE__); #endif // PYJ.2019.07.29_END -- if(cmd) HAL_GPIO_WritePin(PATH_EN_1_8G_UL_GPIO_Port,PATH_EN_1_8G_UL_Pin, GPIO_PIN_SET); else HAL_GPIO_WritePin(PATH_EN_1_8G_UL_GPIO_Port,PATH_EN_1_8G_UL_Pin, GPIO_PIN_RESET); break; case INDEX_PATH_EN_2_1G_DL : #ifdef DEBUG_PRINT printf("\r\n LINE %d\r\n",__LINE__); #endif /* DEBUG_PRINT */ if(cmd) HAL_GPIO_WritePin(PATH_EN_2_1G_DL_GPIO_Port,PATH_EN_2_1G_DL_Pin, GPIO_PIN_SET); else HAL_GPIO_WritePin(PATH_EN_2_1G_DL_GPIO_Port,PATH_EN_2_1G_DL_Pin, GPIO_PIN_RESET); break; case INDEX_PATH_EN_2_1G_UL : #ifdef DEBUG_PRINT printf("\r\n LINE %d\r\n",__LINE__); #endif /* DEBUG_PRINT */ if(cmd) HAL_GPIO_WritePin(PATH_EN_2_1G_UL_GPIO_Port,PATH_EN_2_1G_UL_Pin, GPIO_PIN_SET); else HAL_GPIO_WritePin(PATH_EN_2_1G_UL_GPIO_Port,PATH_EN_2_1G_UL_Pin, GPIO_PIN_RESET); break; case INDEX_PATH_EN_3_5G_L : if(cmd){ HAL_GPIO_WritePin(PATH_EN_3_5G_L_GPIO_Port,PATH_EN_3_5G_L_Pin, GPIO_PIN_SET); // printf("\r\n LINE %d\r\n",__LINE__); } else{ HAL_GPIO_WritePin(PATH_EN_3_5G_L_GPIO_Port,PATH_EN_3_5G_L_Pin, GPIO_PIN_RESET); // printf("\r\n LINE %d\r\n",__LINE__); } break; case INDEX_PATH_EN_3_5G_H : if(cmd){ HAL_GPIO_WritePin(PATH_EN_3_5G_H_GPIO_Port,PATH_EN_3_5G_H_Pin, GPIO_PIN_SET); // printf("\r\n LINE %d\r\n",__LINE__); } else{ HAL_GPIO_WritePin(PATH_EN_3_5G_H_GPIO_Port,PATH_EN_3_5G_H_Pin, GPIO_PIN_RESET); // printf("\r\n LINE %d\r\n",__LINE__); } break; case INDEX_PATH_EN_3_5G_DL : #ifdef DEBUG_PRINT printf("\r\n LINE %d\r\n",__LINE__); #endif /* DEBUG_PRINT */ if(cmd) HAL_GPIO_WritePin(PATH_EN_3_5G_DL_GPIO_Port,PATH_EN_3_5G_DL_Pin, GPIO_PIN_SET); else HAL_GPIO_WritePin(PATH_EN_3_5G_DL_GPIO_Port,PATH_EN_3_5G_DL_Pin, GPIO_PIN_RESET); break; case INDEX_PATH_EN_3_5G_UL : #ifdef DEBUG_PRINT printf("\r\n LINE %d\r\n",__LINE__); #endif /* DEBUG_PRINT */ if(cmd) HAL_GPIO_WritePin(PATH_EN_3_5G_UL_GPIO_Port,PATH_EN_3_5G_UL_Pin, GPIO_PIN_SET); else HAL_GPIO_WritePin(PATH_EN_3_5G_UL_GPIO_Port,PATH_EN_3_5G_UL_Pin, GPIO_PIN_RESET); break; case INDEX_PLL_ON_OFF_3_5G_H: // printf("\r\n LINE %d\r\n",__LINE__); if(cmd) HAL_GPIO_WritePin(PLL_ON_OFF_3_5G_H_GPIO_Port,PLL_ON_OFF_3_5G_H_Pin, GPIO_PIN_SET); else HAL_GPIO_WritePin(PLL_ON_OFF_3_5G_H_GPIO_Port,PLL_ON_OFF_3_5G_H_Pin, GPIO_PIN_RESET); break; case INDEX_PLL_ON_OFF_3_5G_L: // printf("\r\n LINE %d\r\n",__LINE__); if(cmd) HAL_GPIO_WritePin(PLL_ON_OFF_3_5G_L_GPIO_Port,PLL_ON_OFF_3_5G_L_Pin, GPIO_PIN_SET); else HAL_GPIO_WritePin(PLL_ON_OFF_3_5G_L_GPIO_Port,PLL_ON_OFF_3_5G_L_Pin, GPIO_PIN_RESET); break; case INDEX_T_SYNC_DL: case INDEX__T_SYNC_UL: case INDEX_T_SYNC_UL: case INDEX__T_SYNC_DL: if(cmd) #if 0 { HAL_GPIO_WritePin(_T_SYNC_UL_GPIO_Port,_T_SYNC_UL_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(T_SYNC_UL_GPIO_Port,T_SYNC_UL_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(_T_SYNC_DL_GPIO_Port,_T_SYNC_DL_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(T_SYNC_DL_GPIO_Port,T_SYNC_DL_Pin, GPIO_PIN_SET); } else{ HAL_GPIO_WritePin(_T_SYNC_UL_GPIO_Port,_T_SYNC_UL_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(T_SYNC_UL_GPIO_Port,T_SYNC_UL_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(_T_SYNC_DL_GPIO_Port,_T_SYNC_DL_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(T_SYNC_DL_GPIO_Port,T_SYNC_DL_Pin, GPIO_PIN_RESET); } #else { pintemp = (uint32_t)((_T_SYNC_DL_Pin | T_SYNC_DL_Pin) | ((uint32_t)_T_SYNC_UL_Pin << 16U) | ((uint32_t)T_SYNC_UL_Pin << 16U)); _T_SYNC_UL_GPIO_Port->BSRR = pintemp; // HAL_GPIO_WritePin(_T_SYNC_UL_GPIO_Port,_T_SYNC_UL_Pin|T_SYNC_UL_Pin, GPIO_PIN_RESET); // HAL_GPIO_WritePin(_T_SYNC_DL_GPIO_Port,_T_SYNC_DL_Pin|T_SYNC_DL_Pin, GPIO_PIN_SET); } else { pintemp = (uint32_t)((_T_SYNC_UL_Pin | T_SYNC_UL_Pin) | ((uint32_t)_T_SYNC_DL_Pin << 16U) | ((uint32_t)T_SYNC_DL_Pin << 16U)); _T_SYNC_UL_GPIO_Port->BSRR = pintemp; // HAL_GPIO_WritePin(_T_SYNC_UL_GPIO_Port,_T_SYNC_UL_Pin|T_SYNC_UL_Pin, GPIO_PIN_SET); // HAL_GPIO_WritePin(_T_SYNC_DL_GPIO_Port,_T_SYNC_DL_Pin|T_SYNC_DL_Pin, GPIO_PIN_RESET); } #endif #ifdef DEBUG_PRINT printf("TDD SYNC OPERATE ; %d\r\n",cmd); #endif /* DEBUG_PRINT */ break; default : #ifdef DEBUG_PRINT printf("Function : %s LINE : %d ERROR \r\n",__func__,__LINE__); #endif /* DEBUG_PRINT */ break; } } void ATTEN_PLL_PATH_Initialize(void){ #if 0 // PYJ.2019.07.31_BEGIN -- for(int i = 0; i < INDEX_BLUE_EOF + 1; i++){ printf("Data = %x\r\n", Flash_Save_data[i]); } #endif // PYJ.2019.07.31_END -- Flash_Save_data[INDEX_BLUE_CRC] = STH30_CreateCrc(&Flash_Save_data[Type], Flash_Save_data[Length]); RF_Ctrl_Main(&Flash_Save_data[INDEX_BLUE_HEADER]); RF_Status_Get(); } void Power_ON_OFF_Initialize(void){ /* * * PATH PLL ON OFF SECTION* * */ HAL_GPIO_WritePin(PATH_EN_3_5G_L_GPIO_Port ,PATH_EN_3_5G_L_Pin , GPIO_PIN_RESET); HAL_GPIO_WritePin(PATH_EN_3_5G_H_GPIO_Port ,PATH_EN_3_5G_H_Pin , GPIO_PIN_RESET); HAL_GPIO_WritePin(PATH_EN_3_5G_DL_GPIO_Port ,PATH_EN_3_5G_DL_Pin , GPIO_PIN_RESET); HAL_GPIO_WritePin(PATH_EN_3_5G_UL_GPIO_Port ,PATH_EN_3_5G_UL_Pin , GPIO_PIN_RESET); HAL_GPIO_WritePin(PATH_EN_3_5G_L_GPIO_Port ,PATH_EN_3_5G_L_Pin , GPIO_PIN_RESET); HAL_GPIO_WritePin(PLL_ON_OFF_3_5G_H_GPIO_Port,PLL_ON_OFF_3_5G_H_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(PLL_ON_OFF_3_5G_L_GPIO_Port,PLL_ON_OFF_3_5G_L_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(PATH_EN_2_1G_DL_GPIO_Port ,PATH_EN_2_1G_DL_Pin , GPIO_PIN_RESET); HAL_GPIO_WritePin(PATH_EN_2_1G_UL_GPIO_Port ,PATH_EN_2_1G_UL_Pin , GPIO_PIN_RESET); HAL_GPIO_WritePin(PATH_EN_1_8G_DL_GPIO_Port ,PATH_EN_1_8G_DL_Pin , GPIO_PIN_RESET); HAL_GPIO_WritePin(PATH_EN_1_8G_UL_GPIO_Port ,PATH_EN_1_8G_UL_Pin , GPIO_PIN_RESET); /* * * TDD SECTION* * */ HAL_GPIO_WritePin(_T_SYNC_UL_GPIO_Port,_T_SYNC_UL_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(T_SYNC_UL_GPIO_Port,T_SYNC_UL_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(_T_SYNC_DL_GPIO_Port,_T_SYNC_DL_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(T_SYNC_DL_GPIO_Port,T_SYNC_DL_Pin, GPIO_PIN_SET); HAL_Delay(1); } void Error_Message_Occur(PLL_Error mode){ static uint8_t temp_data[7]; temp_data[INDEX_BLUE_HEADER] = BLUECELL_HEADER; temp_data[INDEX_BLUE_TYPE] = TYPE_BLUECELL_ERROR; temp_data[INDEX_BLUE_LENGTH] = 4; temp_data[INDEX_BLUE_CRCINDEX + 0] = INDEX_BLUE_CRCINDEX + 2; switch(mode){ case DL_1_8: temp_data[INDEX_BLUE_CRCINDEX + 1] = DL_1_8; break; case UL_1_8: temp_data[INDEX_BLUE_CRCINDEX + 1] = UL_1_8; break; case DL_2_1: temp_data[INDEX_BLUE_CRCINDEX + 1] = DL_2_1; break; case UL_2_1: temp_data[INDEX_BLUE_CRCINDEX + 1] = UL_2_1; break; } temp_data[INDEX_BLUE_CRCINDEX + 2] = STH30_CreateCrc(&temp_data[Type], temp_data[Length]); temp_data[INDEX_BLUE_CRCINDEX + 3] = BLUECELL_TAILER; HAL_UART_Transmit_DMA(&huart1,&temp_data[INDEX_BLUE_HEADER],temp_data[INDEX_BLUE_LENGTH] + 3); } void Pol_Delay_us(volatile uint32_t microseconds) { /* Go to number of cycles for system */ microseconds *= (SystemCoreClock / 1000000); /* Delay till end */ while (microseconds--); } void Boot_LED_Toggle(void){ if(LedTimerCnt > 500){HAL_GPIO_TogglePin(BOOT_LED_GPIO_Port,GPIO_PIN_14);LedTimerCnt = 0;} } void ADC_Check(void){ if(AdcTimerCnt > 2500){ for(uint8_t i = 0; i< ADC_EA; i++ ){ Prev_data[INDEX_DET_1_8G_DL_IN_H + i*2] = (uint16_t)((ADCvalue[i] & 0xFF00) >> 8); Prev_data[INDEX_DET_1_8G_DL_IN_L + i*2] = (uint16_t)(ADCvalue[i] & 0x00FF); AdcTimerCnt = 0; #if 0 // PYJ.2019.08.09_BEGIN -- printf("Prev_data[%d] : %x",i,Prev_data[INDEX_DET_1_8G_DL_IN_H + i]); printf("%x\r\n",i,Prev_data[INDEX_DET_1_8G_DL_IN_L + i]); #endif // PYJ.2019.08.09_END -- } } } void Uart_Check(void){ while (TerminalQueue.data > 0 && UartRxTimerCnt > 100) GetDataFromUartQueue(&hTerminal); }