includes.c 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. /*
  2. * includes.c
  3. *
  4. * Created on: 2019. 7. 28.
  5. * Author: parkyj
  6. */
  7. #include "includes.h"
  8. #define MACROSTR(k) #k
  9. uint32_t ADCvalue[ADC_EA];
  10. char *Bluecell_Prot_IndexStr[] = {
  11. MACROSTR(INDEX_ATT_1_8G_DL1 ),
  12. MACROSTR(INDEX_ATT_1_8G_DL2 ),
  13. MACROSTR(INDEX_ATT_1_8G_UL1 ),
  14. MACROSTR(INDEX_ATT_1_8G_UL2 ),
  15. MACROSTR(INDEX_ATT_1_8G_UL3 ),
  16. MACROSTR(INDEX_ATT_1_8G_UL4 ),
  17. MACROSTR(INDEX_ATT_2_1G_DL1 ),
  18. MACROSTR(INDEX_ATT_2_1G_DL2 ),
  19. MACROSTR(INDEX_ATT_2_1G_UL1 ),
  20. MACROSTR(INDEX_ATT_2_1G_UL2 ),
  21. MACROSTR(INDEX_ATT_2_1G_UL3 ),
  22. MACROSTR(INDEX_ATT_2_1G_UL4 ),
  23. MACROSTR(INDEX_ATT_3_5G_LOW1 ),
  24. MACROSTR(INDEX_ATT_3_5G_HIGH1 ),
  25. MACROSTR(INDEX_ATT_3_5G_COM1 ),
  26. MACROSTR(INDEX_ATT_3_5G_LOW2 ),
  27. MACROSTR(INDEX_ATT_3_5G_HIGH2 ),
  28. MACROSTR(INDEX_ATT_3_5G_COM2 ),
  29. MACROSTR(INDEX_PLL_1_8G_DL_H ),
  30. MACROSTR(INDEX_PLL_1_8G_DL_L ),
  31. MACROSTR(INDEX_PLL_1_8G_UL_H ),
  32. MACROSTR(INDEX_PLL_1_8G_UL_L ),
  33. MACROSTR(INDEX_PLL_2_1G_DL_H ),
  34. MACROSTR(INDEX_PLL_2_1G_DL_L ),
  35. MACROSTR(INDEX_PLL_2_1G_UL_H ),
  36. MACROSTR(INDEX_PLL_2_1G_UL_L ),
  37. MACROSTR(INDEX_PLL_3_5G_LOW_H ),
  38. MACROSTR(INDEX_PLL_3_5G_LOW_M ),
  39. MACROSTR(INDEX_PLL_3_5G_LOW_L ),
  40. MACROSTR(INDEX_PLL_3_5G_HIGH_H ),
  41. MACROSTR(INDEX_PLL_3_5G_HIGH_M ),
  42. MACROSTR(INDEX_PLL_3_5G_HIGH_L ),
  43. MACROSTR(INDEX_PLL_LD_6_BIT ),
  44. MACROSTR(INDEX_DET_1_8G_DL_IN_H ),
  45. MACROSTR(INDEX_DET_1_8G_DL_IN_L ),
  46. MACROSTR(INDEX_DET_1_8G_DL_OUT_H),
  47. MACROSTR(INDEX_DET_1_8G_DL_OUT_L),
  48. MACROSTR(INDEX_DET_1_8G_UL_IN_H ),
  49. MACROSTR(INDEX_DET_1_8G_UL_IN_L ),
  50. MACROSTR(INDEX_DET_1_8G_UL_OUT_H),
  51. MACROSTR(INDEX_DET_1_8G_UL_OUT_L),
  52. MACROSTR(INDEX_DET_2_1G_DL_IN_H ),
  53. MACROSTR(INDEX_DET_2_1G_DL_IN_L ),
  54. MACROSTR(INDEX_DET_2_1G_DL_OUT_H),
  55. MACROSTR(INDEX_DET_2_1G_DL_OUT_L),
  56. MACROSTR(INDEX_DET_2_1G_UL_IN_H ),
  57. MACROSTR(INDEX_DET_2_1G_UL_IN_L ),
  58. MACROSTR(INDEX_DET_2_1G_UL_OUT_H),
  59. MACROSTR(INDEX_DET_2_1G_UL_OUT_L),
  60. MACROSTR(INDEX_DET_3_5G_DL_IN_H ),
  61. MACROSTR(INDEX_DET_3_5G_DL_IN_L ),
  62. MACROSTR(INDEX_DET_3_5G_DL_OUT_L),
  63. MACROSTR(INDEX_DET_3_5G_DL_OUT_H),
  64. MACROSTR(INDEX_DET_3_5G_UL_IN_H ),
  65. MACROSTR(INDEX_DET_3_5G_UL_IN_L ),
  66. MACROSTR(INDEX_DET_3_5G_UL_OUT_H),
  67. MACROSTR(INDEX_DET_3_5G_UL_OUT_L),
  68. MACROSTR(INDEX_RFU_TEMP_H ),
  69. MACROSTR(INDEX_RFU_TEMP_L ),
  70. MACROSTR(INDEX__28V_DET_H ),
  71. MACROSTR(INDEX__28V_DET_L ),
  72. MACROSTR(INDEX_ALARM_AC ),
  73. MACROSTR(INDEX_ALARM_DC ),
  74. MACROSTR(INDEX_PATH_EN_1_8G_DL ),
  75. MACROSTR(INDEX_PATH_EN_1_8G_UL ),
  76. MACROSTR(INDEX_PATH_EN_2_1G_DL ),
  77. MACROSTR(INDEX_PATH_EN_2_1G_UL ),
  78. MACROSTR(INDEX_PATH_EN_3_5G_L ),
  79. MACROSTR(INDEX_PATH_EN_3_5G_H ),
  80. MACROSTR(INDEX_PATH_EN_3_5G_DL ),
  81. MACROSTR(INDEX_PATH_EN_3_5G_UL ),
  82. MACROSTR(INDEX_PLL_ON_OFF_3_5G_H),
  83. MACROSTR(INDEX_PLL_ON_OFF_3_5G_L),
  84. MACROSTR(INDEX_T_SYNC_DL ),
  85. MACROSTR(INDEX__T_SYNC_DL ),
  86. MACROSTR(INDEX_T_SYNC_UL ),
  87. MACROSTR(INDEX__T_SYNC_UL ),
  88. };
  89. static void kConstPrinter(Bluecell_Prot_Index k)
  90. {
  91. #ifdef DEBUG_PRINT
  92. printf("%s", Bluecell_Prot_IndexStr[k]);
  93. #endif /* DEBUG_PRINT */
  94. }
  95. void Path_Init(void){
  96. Prev_data[INDEX_PATH_EN_1_8G_DL] = HAL_GPIO_ReadPin(PATH_EN_1_8G_DL_GPIO_Port,PATH_EN_1_8G_DL_Pin);
  97. Prev_data[INDEX_PATH_EN_1_8G_UL] = HAL_GPIO_ReadPin(PATH_EN_1_8G_UL_GPIO_Port,PATH_EN_1_8G_UL_Pin);
  98. Prev_data[INDEX_PATH_EN_2_1G_DL] = HAL_GPIO_ReadPin(PATH_EN_2_1G_DL_GPIO_Port,PATH_EN_2_1G_DL_Pin);
  99. Prev_data[INDEX_PATH_EN_2_1G_UL] = HAL_GPIO_ReadPin(PATH_EN_2_1G_UL_GPIO_Port,PATH_EN_2_1G_UL_Pin);
  100. Prev_data[INDEX_PATH_EN_3_5G_L] = HAL_GPIO_ReadPin(PATH_EN_3_5G_L_GPIO_Port,PATH_EN_3_5G_L_Pin);
  101. Prev_data[INDEX_PATH_EN_3_5G_H] = HAL_GPIO_ReadPin(PATH_EN_3_5G_H_GPIO_Port,PATH_EN_3_5G_H_Pin);
  102. Prev_data[INDEX_PATH_EN_3_5G_DL] = HAL_GPIO_ReadPin(PATH_EN_3_5G_DL_GPIO_Port,PATH_EN_3_5G_DL_Pin);
  103. Prev_data[INDEX_PATH_EN_3_5G_UL] = HAL_GPIO_ReadPin(PATH_EN_3_5G_UL_GPIO_Port,PATH_EN_3_5G_UL_Pin);
  104. 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);
  105. 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);
  106. }
  107. void Power_ON_OFF_Ctrl(uint8_t type,uint8_t cmd){
  108. // printf("\r\ntype : %s cmd : %d\r\n",Bluecell_Prot_IndexStr[type - 4],cmd);
  109. switch(type){
  110. case INDEX_PATH_EN_1_8G_DL :
  111. #if 0 // PYJ.2019.07.29_BEGIN --
  112. printf("\r\n LINE %d\r\n",__LINE__);
  113. #endif // PYJ.2019.07.29_END --
  114. if(cmd)
  115. HAL_GPIO_WritePin(PATH_EN_1_8G_DL_GPIO_Port,PATH_EN_1_8G_DL_Pin, GPIO_PIN_SET);
  116. else
  117. HAL_GPIO_WritePin(PATH_EN_1_8G_DL_GPIO_Port,PATH_EN_1_8G_DL_Pin, GPIO_PIN_RESET);
  118. break;
  119. case INDEX_PATH_EN_1_8G_UL :
  120. #if 0 // PYJ.2019.07.29_BEGIN --
  121. printf("\r\n LINE %d\r\n",__LINE__);
  122. #endif // PYJ.2019.07.29_END --
  123. if(cmd)
  124. HAL_GPIO_WritePin(PATH_EN_1_8G_UL_GPIO_Port,PATH_EN_1_8G_UL_Pin, GPIO_PIN_SET);
  125. else
  126. HAL_GPIO_WritePin(PATH_EN_1_8G_UL_GPIO_Port,PATH_EN_1_8G_UL_Pin, GPIO_PIN_RESET);
  127. break;
  128. case INDEX_PATH_EN_2_1G_DL :
  129. #ifdef DEBUG_PRINT
  130. printf("\r\n LINE %d\r\n",__LINE__);
  131. #endif /* DEBUG_PRINT */
  132. if(cmd)
  133. HAL_GPIO_WritePin(PATH_EN_2_1G_DL_GPIO_Port,PATH_EN_2_1G_DL_Pin, GPIO_PIN_SET);
  134. else
  135. HAL_GPIO_WritePin(PATH_EN_2_1G_DL_GPIO_Port,PATH_EN_2_1G_DL_Pin, GPIO_PIN_RESET);
  136. break;
  137. case INDEX_PATH_EN_2_1G_UL :
  138. #ifdef DEBUG_PRINT
  139. printf("\r\n LINE %d\r\n",__LINE__);
  140. #endif /* DEBUG_PRINT */
  141. if(cmd)
  142. HAL_GPIO_WritePin(PATH_EN_2_1G_UL_GPIO_Port,PATH_EN_2_1G_UL_Pin, GPIO_PIN_SET);
  143. else
  144. HAL_GPIO_WritePin(PATH_EN_2_1G_UL_GPIO_Port,PATH_EN_2_1G_UL_Pin, GPIO_PIN_RESET);
  145. break;
  146. case INDEX_PATH_EN_3_5G_L :
  147. if(cmd){
  148. HAL_GPIO_WritePin(PATH_EN_3_5G_L_GPIO_Port,PATH_EN_3_5G_L_Pin, GPIO_PIN_SET);
  149. // printf("\r\n LINE %d\r\n",__LINE__);
  150. }
  151. else{
  152. HAL_GPIO_WritePin(PATH_EN_3_5G_L_GPIO_Port,PATH_EN_3_5G_L_Pin, GPIO_PIN_RESET);
  153. // printf("\r\n LINE %d\r\n",__LINE__);
  154. }
  155. break;
  156. case INDEX_PATH_EN_3_5G_H :
  157. if(cmd){
  158. HAL_GPIO_WritePin(PATH_EN_3_5G_H_GPIO_Port,PATH_EN_3_5G_H_Pin, GPIO_PIN_SET);
  159. // printf("\r\n LINE %d\r\n",__LINE__);
  160. }
  161. else{
  162. HAL_GPIO_WritePin(PATH_EN_3_5G_H_GPIO_Port,PATH_EN_3_5G_H_Pin, GPIO_PIN_RESET);
  163. // printf("\r\n LINE %d\r\n",__LINE__);
  164. }
  165. break;
  166. case INDEX_PATH_EN_3_5G_DL :
  167. #ifdef DEBUG_PRINT
  168. printf("\r\n LINE %d\r\n",__LINE__);
  169. #endif /* DEBUG_PRINT */
  170. if(cmd)
  171. HAL_GPIO_WritePin(PATH_EN_3_5G_DL_GPIO_Port,PATH_EN_3_5G_DL_Pin, GPIO_PIN_SET);
  172. else
  173. HAL_GPIO_WritePin(PATH_EN_3_5G_DL_GPIO_Port,PATH_EN_3_5G_DL_Pin, GPIO_PIN_RESET);
  174. break;
  175. case INDEX_PATH_EN_3_5G_UL :
  176. #ifdef DEBUG_PRINT
  177. printf("\r\n LINE %d\r\n",__LINE__);
  178. #endif /* DEBUG_PRINT */
  179. if(cmd)
  180. HAL_GPIO_WritePin(PATH_EN_3_5G_UL_GPIO_Port,PATH_EN_3_5G_UL_Pin, GPIO_PIN_SET);
  181. else
  182. HAL_GPIO_WritePin(PATH_EN_3_5G_UL_GPIO_Port,PATH_EN_3_5G_UL_Pin, GPIO_PIN_RESET);
  183. break;
  184. case INDEX_PLL_ON_OFF_3_5G_H:
  185. // printf("\r\n LINE %d\r\n",__LINE__);
  186. if(cmd)
  187. HAL_GPIO_WritePin(PLL_ON_OFF_3_5G_H_GPIO_Port,PLL_ON_OFF_3_5G_H_Pin, GPIO_PIN_SET);
  188. else
  189. HAL_GPIO_WritePin(PLL_ON_OFF_3_5G_H_GPIO_Port,PLL_ON_OFF_3_5G_H_Pin, GPIO_PIN_RESET);
  190. break;
  191. case INDEX_PLL_ON_OFF_3_5G_L:
  192. // printf("\r\n LINE %d\r\n",__LINE__);
  193. if(cmd)
  194. HAL_GPIO_WritePin(PLL_ON_OFF_3_5G_L_GPIO_Port,PLL_ON_OFF_3_5G_L_Pin, GPIO_PIN_SET);
  195. else
  196. HAL_GPIO_WritePin(PLL_ON_OFF_3_5G_L_GPIO_Port,PLL_ON_OFF_3_5G_L_Pin, GPIO_PIN_RESET);
  197. break;
  198. case INDEX_T_SYNC_DL:
  199. case INDEX__T_SYNC_UL:
  200. case INDEX_T_SYNC_UL:
  201. case INDEX__T_SYNC_DL:
  202. if(cmd){
  203. HAL_GPIO_WritePin(_T_SYNC_UL_GPIO_Port,_T_SYNC_UL_Pin, GPIO_PIN_RESET);
  204. HAL_GPIO_WritePin(T_SYNC_UL_GPIO_Port,T_SYNC_UL_Pin, GPIO_PIN_RESET);
  205. HAL_GPIO_WritePin(_T_SYNC_DL_GPIO_Port,_T_SYNC_DL_Pin, GPIO_PIN_SET);
  206. HAL_GPIO_WritePin(T_SYNC_DL_GPIO_Port,T_SYNC_DL_Pin, GPIO_PIN_SET);
  207. }
  208. else{
  209. HAL_GPIO_WritePin(_T_SYNC_UL_GPIO_Port,_T_SYNC_UL_Pin, GPIO_PIN_SET);
  210. HAL_GPIO_WritePin(T_SYNC_UL_GPIO_Port,T_SYNC_UL_Pin, GPIO_PIN_SET);
  211. HAL_GPIO_WritePin(_T_SYNC_DL_GPIO_Port,_T_SYNC_DL_Pin, GPIO_PIN_RESET);
  212. HAL_GPIO_WritePin(T_SYNC_DL_GPIO_Port,T_SYNC_DL_Pin, GPIO_PIN_RESET);
  213. }
  214. #ifdef DEBUG_PRINT
  215. printf("TDD SYNC OPERATE ; %d\r\n",cmd);
  216. #endif /* DEBUG_PRINT */
  217. break;
  218. default :
  219. #ifdef DEBUG_PRINT
  220. printf("Function : %s LINE : %d ERROR \r\n",__func__,__LINE__);
  221. #endif /* DEBUG_PRINT */
  222. break;
  223. }
  224. }
  225. void ATTEN_PLL_PATH_Initialize(void){
  226. #if 0 // PYJ.2019.07.31_BEGIN --
  227. for(int i = 0; i < INDEX_BLUE_EOF + 1; i++){
  228. printf("Data = %x\r\n", Flash_Save_data[i]);
  229. }
  230. #endif // PYJ.2019.07.31_END --
  231. Flash_Save_data[INDEX_BLUE_CRC] = STH30_CreateCrc(&Flash_Save_data[Type], Flash_Save_data[Length]);
  232. RF_Ctrl_Main(&Flash_Save_data[INDEX_BLUE_HEADER]);
  233. RF_Status_Get();
  234. }
  235. void Power_ON_OFF_Initialize(void){
  236. /* * * PATH PLL ON OFF SECTION* * */
  237. HAL_GPIO_WritePin(PATH_EN_3_5G_L_GPIO_Port ,PATH_EN_3_5G_L_Pin , GPIO_PIN_RESET);
  238. HAL_GPIO_WritePin(PATH_EN_3_5G_H_GPIO_Port ,PATH_EN_3_5G_H_Pin , GPIO_PIN_RESET);
  239. HAL_GPIO_WritePin(PATH_EN_3_5G_DL_GPIO_Port ,PATH_EN_3_5G_DL_Pin , GPIO_PIN_RESET);
  240. HAL_GPIO_WritePin(PATH_EN_3_5G_UL_GPIO_Port ,PATH_EN_3_5G_UL_Pin , GPIO_PIN_RESET);
  241. HAL_GPIO_WritePin(PATH_EN_3_5G_L_GPIO_Port ,PATH_EN_3_5G_L_Pin , GPIO_PIN_RESET);
  242. HAL_GPIO_WritePin(PLL_ON_OFF_3_5G_H_GPIO_Port,PLL_ON_OFF_3_5G_H_Pin, GPIO_PIN_RESET);
  243. HAL_GPIO_WritePin(PLL_ON_OFF_3_5G_L_GPIO_Port,PLL_ON_OFF_3_5G_L_Pin, GPIO_PIN_RESET);
  244. HAL_GPIO_WritePin(PATH_EN_2_1G_DL_GPIO_Port ,PATH_EN_2_1G_DL_Pin , GPIO_PIN_RESET);
  245. HAL_GPIO_WritePin(PATH_EN_2_1G_UL_GPIO_Port ,PATH_EN_2_1G_UL_Pin , GPIO_PIN_RESET);
  246. HAL_GPIO_WritePin(PATH_EN_1_8G_DL_GPIO_Port ,PATH_EN_1_8G_DL_Pin , GPIO_PIN_RESET);
  247. HAL_GPIO_WritePin(PATH_EN_1_8G_UL_GPIO_Port ,PATH_EN_1_8G_UL_Pin , GPIO_PIN_RESET);
  248. /* * * TDD SECTION* * */
  249. HAL_GPIO_WritePin(_T_SYNC_UL_GPIO_Port,_T_SYNC_UL_Pin, GPIO_PIN_RESET);
  250. HAL_GPIO_WritePin(T_SYNC_UL_GPIO_Port,T_SYNC_UL_Pin, GPIO_PIN_RESET);
  251. HAL_GPIO_WritePin(_T_SYNC_DL_GPIO_Port,_T_SYNC_DL_Pin, GPIO_PIN_SET);
  252. HAL_GPIO_WritePin(T_SYNC_DL_GPIO_Port,T_SYNC_DL_Pin, GPIO_PIN_SET);
  253. HAL_Delay(1);
  254. }
  255. void Error_Message_Occur(PLL_Error mode){
  256. static uint8_t temp_data[7];
  257. temp_data[INDEX_BLUE_HEADER] = BLUECELL_HEADER;
  258. temp_data[INDEX_BLUE_TYPE] = TYPE_BLUECELL_ERROR;
  259. temp_data[INDEX_BLUE_LENGTH] = 4;
  260. temp_data[INDEX_BLUE_CRCINDEX + 0] = INDEX_BLUE_CRCINDEX + 2;
  261. switch(mode){
  262. case DL_1_8:
  263. temp_data[INDEX_BLUE_CRCINDEX + 1] = DL_1_8;
  264. break;
  265. case UL_1_8:
  266. temp_data[INDEX_BLUE_CRCINDEX + 1] = UL_1_8;
  267. break;
  268. case DL_2_1:
  269. temp_data[INDEX_BLUE_CRCINDEX + 1] = DL_2_1;
  270. break;
  271. case UL_2_1:
  272. temp_data[INDEX_BLUE_CRCINDEX + 1] = UL_2_1;
  273. break;
  274. }
  275. temp_data[INDEX_BLUE_CRCINDEX + 2] = STH30_CreateCrc(&temp_data[Type], temp_data[Length]);
  276. temp_data[INDEX_BLUE_CRCINDEX + 3] = BLUECELL_TAILER;
  277. HAL_UART_Transmit_DMA(&huart1,&temp_data[INDEX_BLUE_HEADER],temp_data[INDEX_BLUE_LENGTH] + 3);
  278. }
  279. void Pol_Delay_us(volatile uint32_t microseconds)
  280. {
  281. /* Go to number of cycles for system */
  282. microseconds *= (SystemCoreClock / 1000000);
  283. /* Delay till end */
  284. while (microseconds--);
  285. }
  286. void Boot_LED_Toggle(void){
  287. if(LedTimerCnt > 500){HAL_GPIO_TogglePin(BOOT_LED_GPIO_Port,GPIO_PIN_14);LedTimerCnt = 0;}
  288. }
  289. void ADC_Check(void){
  290. if(AdcTimerCnt > 2500){
  291. for(uint8_t i = 0; i< ADC_EA; i++ ){
  292. Prev_data[INDEX_DET_1_8G_DL_IN_H + i*2] = (uint16_t)((ADCvalue[i] & 0xFF00) >> 8);
  293. Prev_data[INDEX_DET_1_8G_DL_IN_L + i*2] = (uint16_t)(ADCvalue[i] & 0x00FF);
  294. AdcTimerCnt = 0;
  295. #if 0 // PYJ.2019.08.09_BEGIN --
  296. printf("Prev_data[%d] : %x",i,Prev_data[INDEX_DET_1_8G_DL_IN_H + i]);
  297. printf("%x\r\n",i,Prev_data[INDEX_DET_1_8G_DL_IN_L + i]);
  298. #endif // PYJ.2019.08.09_END --
  299. }
  300. }
  301. }
  302. void Uart_Check(void){
  303. while (TerminalQueue.data > 0 && UartRxTimerCnt > 100) GetDataFromUartQueue(&hTerminal);
  304. }