includes(4258).c 13 KB

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