includes.c 13 KB

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