zig_operate.c 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680
  1. /*
  2. * zig_operate.c
  3. *
  4. * Created on: 2019. 7. 26.
  5. * Author: parkyj
  6. */
  7. #include "zig_operate.h"
  8. uint8_t Prev_data[INDEX_BLUE_EOF + 1];
  9. /* * * * * * * #define Struct* * * * * * * */
  10. PLL_Setting_st Pll_1_8GHz_DL = {
  11. PLL_CLK_GPIO_Port,
  12. PLL_CLK_Pin,
  13. PLL_DATA_GPIO_Port,
  14. PLL_DATA_Pin,
  15. PLL_EN_1_8G_DL_GPIO_Port,
  16. PLL_EN_1_8G_DL_Pin,
  17. };
  18. PLL_Setting_st Pll_1_8GHz_UL = {
  19. PLL_CLK_GPIO_Port,
  20. PLL_CLK_Pin,
  21. PLL_DATA_GPIO_Port,
  22. PLL_DATA_Pin,
  23. PLL_EN_1_8G_UL_GPIO_Port,
  24. PLL_EN_1_8G_UL_Pin,
  25. };
  26. PLL_Setting_st Pll_2_1GHz_DL = {
  27. PLL_CLK_GPIO_Port,
  28. PLL_CLK_Pin,
  29. PLL_DATA_GPIO_Port,
  30. PLL_DATA_Pin,
  31. PLL_EN_2_1G_DL_GPIO_Port,
  32. PLL_EN_2_1G_DL_Pin,
  33. };
  34. PLL_Setting_st Pll_2_1GHz_UL = {
  35. PLL_CLK_GPIO_Port,
  36. PLL_CLK_Pin,
  37. PLL_DATA_GPIO_Port,
  38. PLL_DATA_Pin,
  39. PLL_EN_2_1G_UL_GPIO_Port,
  40. PLL_EN_2_1G_UL_Pin,
  41. };
  42. /* * * * * * * * NOT YET * * * * * * * */
  43. PLL_Setting_st Pll_3_5GHz_DL = {
  44. ATT_CLK_3_5G_GPIO_Port,
  45. ATT_EN_3_5G_Pin,
  46. PLL_DATA_GPIO_Port,
  47. PLL_DATA_Pin,
  48. PLL_EN_2_1G_DL_GPIO_Port,
  49. PLL_EN_2_1G_DL_Pin,
  50. };
  51. PLL_Setting_st Pll_3_5GHz_UL = {
  52. PLL_CLK_GPIO_Port,
  53. PLL_CLK_Pin,
  54. PLL_DATA_GPIO_Port,
  55. PLL_DATA_Pin,
  56. PLL_EN_2_1G_UL_GPIO_Port,
  57. PLL_EN_2_1G_UL_Pin,
  58. };
  59. /* * * * * * * * ATTEN * * * * * * * */
  60. ATTEN_Setting_st Atten_1_8Ghz_DL1 ={
  61. ATT_CLK_GPIO_Port,
  62. ATT_CLK_Pin,
  63. ATT_DATA_GPIO_Port,
  64. ATT_DATA_Pin,
  65. ATT_EN_1_8G_DL1_GPIO_Port,
  66. ATT_EN_1_8G_DL1_Pin,
  67. PATH_EN_1_8G_DL_GPIO_Port,
  68. PATH_EN_1_8G_DL_Pin,
  69. };
  70. ATTEN_Setting_st Atten_1_8Ghz_DL2 ={
  71. ATT_CLK_GPIO_Port,
  72. ATT_CLK_Pin,
  73. ATT_DATA_GPIO_Port,
  74. ATT_DATA_Pin,
  75. ATT_EN_1_8G_DL2_GPIO_Port,
  76. ATT_EN_1_8G_DL2_Pin,
  77. PATH_EN_1_8G_DL_GPIO_Port,
  78. PATH_EN_1_8G_DL_Pin,
  79. };
  80. ATTEN_Setting_st Atten_1_8Ghz_UL1 ={
  81. ATT_CLK_GPIO_Port,
  82. ATT_CLK_Pin,
  83. ATT_DATA_GPIO_Port,
  84. ATT_DATA_Pin,
  85. ATT_EN_1_8G_UL1_GPIO_Port,
  86. ATT_EN_1_8G_UL1_Pin,
  87. PATH_EN_1_8G_UL_GPIO_Port,
  88. PATH_EN_1_8G_UL_Pin,
  89. };
  90. ATTEN_Setting_st Atten_1_8Ghz_UL2 ={
  91. ATT_CLK_GPIO_Port,
  92. ATT_CLK_Pin,
  93. ATT_DATA_GPIO_Port,
  94. ATT_DATA_Pin,
  95. ATT_EN_1_8G_UL2_GPIO_Port,
  96. ATT_EN_1_8G_UL2_Pin,
  97. PATH_EN_1_8G_UL_GPIO_Port,
  98. PATH_EN_1_8G_UL_Pin,
  99. };
  100. ATTEN_Setting_st Atten_1_8Ghz_UL3 ={
  101. ATT_CLK_GPIO_Port,
  102. ATT_CLK_Pin,
  103. ATT_DATA_GPIO_Port,
  104. ATT_DATA_Pin,
  105. ATT_EN_1_8G_UL3_GPIO_Port,
  106. ATT_EN_1_8G_UL3_Pin,
  107. PATH_EN_1_8G_UL_GPIO_Port,
  108. PATH_EN_1_8G_UL_Pin,
  109. };
  110. ATTEN_Setting_st Atten_1_8Ghz_UL4 ={
  111. ATT_CLK_GPIO_Port,
  112. ATT_CLK_Pin,
  113. ATT_DATA_GPIO_Port,
  114. ATT_DATA_Pin,
  115. ATT_EN_1_8G_UL4_GPIO_Port,
  116. ATT_EN_1_8G_UL4_Pin,
  117. PATH_EN_1_8G_UL_GPIO_Port,
  118. PATH_EN_1_8G_UL_Pin,
  119. };
  120. ATTEN_Setting_st Atten_2_1Ghz_DL1 ={
  121. ATT_CLK_GPIO_Port,
  122. ATT_CLK_Pin,
  123. ATT_DATA_GPIO_Port,
  124. ATT_DATA_Pin,
  125. ATT_EN_2_1G_DL1_GPIO_Port,
  126. ATT_EN_2_1G_DL1_Pin,
  127. PATH_EN_2_1G_DL_GPIO_Port,
  128. PATH_EN_2_1G_DL_Pin,
  129. };
  130. ATTEN_Setting_st Atten_2_1Ghz_DL2 ={
  131. ATT_CLK_GPIO_Port,
  132. ATT_CLK_Pin,
  133. ATT_DATA_GPIO_Port,
  134. ATT_DATA_Pin,
  135. ATT_EN_2_1G_DL2_GPIO_Port,
  136. ATT_EN_2_1G_DL2_Pin,
  137. PATH_EN_2_1G_DL_GPIO_Port,
  138. PATH_EN_2_1G_DL_Pin,
  139. };
  140. ATTEN_Setting_st Atten_2_1Ghz_UL1 ={
  141. ATT_CLK_GPIO_Port,
  142. ATT_CLK_Pin,
  143. ATT_DATA_GPIO_Port,
  144. ATT_DATA_Pin,
  145. ATT_EN_2_1G_UL1_GPIO_Port,
  146. ATT_EN_2_1G_UL1_Pin,
  147. PATH_EN_2_1G_UL_GPIO_Port,
  148. PATH_EN_2_1G_UL_Pin,
  149. };
  150. ATTEN_Setting_st Atten_2_1Ghz_UL2 ={
  151. ATT_CLK_GPIO_Port,
  152. ATT_CLK_Pin,
  153. ATT_DATA_GPIO_Port,
  154. ATT_DATA_Pin,
  155. ATT_EN_2_1G_UL2_GPIO_Port,
  156. ATT_EN_2_1G_UL2_Pin,
  157. PATH_EN_2_1G_UL_GPIO_Port,
  158. PATH_EN_2_1G_UL_Pin,
  159. };
  160. ATTEN_Setting_st Atten_2_1Ghz_UL3 ={
  161. ATT_CLK_GPIO_Port,
  162. ATT_CLK_Pin,
  163. ATT_DATA_GPIO_Port,
  164. ATT_DATA_Pin,
  165. ATT_EN_2_1G_UL3_GPIO_Port,
  166. ATT_EN_2_1G_UL3_Pin,
  167. PATH_EN_2_1G_UL_GPIO_Port,
  168. PATH_EN_2_1G_UL_Pin,
  169. };
  170. ATTEN_Setting_st Atten_2_1Ghz_UL4 ={
  171. ATT_CLK_GPIO_Port,
  172. ATT_CLK_Pin,
  173. ATT_DATA_GPIO_Port,
  174. ATT_DATA_Pin,
  175. ATT_EN_2_1G_UL4_GPIO_Port,
  176. ATT_EN_2_1G_UL4_Pin,
  177. PATH_EN_2_1G_UL_GPIO_Port,
  178. PATH_EN_2_1G_UL_Pin,
  179. };
  180. bool RF_Data_Check(uint8_t* data_buf){
  181. bool ret = false;
  182. bool crcret = STH30_CheckCrc(&data_buf[Type], data_buf[Length], data_buf[data_buf[Crcindex]]);
  183. if(data_buf[Header] == BLUECELL_HEADER){ /*HEADER CHECK*/
  184. ret= true;
  185. }
  186. if(crcret == true){/*CRC CHECK*/
  187. ret = true;
  188. }else{
  189. ret = false;
  190. #ifdef DEBUG_PRINT
  191. printf("Recv CRC Value : \"%d\"\r\n Create CRC Value : \"%d\" \r\n",data_buf[data_buf[Crcindex]],STH30_CreateCrc(&data_buf[Type], data_buf[Length]));
  192. #endif /* DEBUG_PRINT */
  193. }
  194. #ifdef DEBUG_PRINT
  195. printf("CRC Result : \"%d\" \r\n",ret);
  196. #endif /* DEBUG_PRINT */
  197. return ret;
  198. }
  199. PLL_Setting_st Pll_3_5_H = {
  200. PLL_CLK_3_5G_GPIO_Port,
  201. PLL_CLK_3_5G_Pin,
  202. PLL_DATA_3_5G_GPIO_Port,
  203. PLL_DATA_3_5G_Pin,
  204. PLL_EN_3_5G_H_GPIO_Port,
  205. PLL_EN_3_5G_H_Pin,
  206. };
  207. PLL_Setting_st Pll_3_5_L = {
  208. PLL_CLK_3_5G_GPIO_Port,
  209. PLL_CLK_3_5G_Pin,
  210. PLL_DATA_3_5G_GPIO_Port,
  211. PLL_DATA_3_5G_Pin,
  212. PLL_EN_3_5G_L_GPIO_Port,
  213. PLL_EN_3_5G_L_Pin,
  214. };
  215. void RF_Status_Get(void){
  216. // printf("\r\nYJ2 : Prev_data[INDEX_DET_1_8G_DL_IN_L ] : %x\r\n",Prev_data[INDEX_DET_1_8G_DL_IN_L]);
  217. uint8_t data[10];
  218. Prev_data[INDEX_BLUE_HEADER] = BLUECELL_HEADER;
  219. Prev_data[INDEX_BLUE_TYPE] = TYPE_BLUECELL_GET;
  220. Prev_data[INDEX_BLUE_LENGTH] = INDEX_BLUE_EOF - 2;
  221. Prev_data[INDEX_BLUE_CRCINDEX] = INDEX_BLUE_CRC;
  222. Prev_data[INDEX_BLUE_CRC] = STH30_CreateCrc(&Prev_data[Type], Prev_data[Length]);
  223. Prev_data[INDEX_BLUE_EOF] = BLUECELL_TAILER;
  224. HAL_UART_Transmit_DMA(&huart1,&Prev_data[INDEX_BLUE_HEADER],INDEX_BLUE_EOF + 1);
  225. // printf("\r\nYJ : %x",ADCvalue[0]);
  226. // printf("\r\n");
  227. }
  228. void RF_Operate(uint8_t* data_buf){
  229. uint16_t temp_val = 0;
  230. uint8_t ADC_Modify = 0;
  231. ADF4153_R_N_Reg_st temp_reg;
  232. if(Prev_data[INDEX_ATT_1_8G_DL1] != data_buf[INDEX_ATT_1_8G_DL1]){
  233. #ifdef DEBUG_PRINT
  234. printf("\r\nLINE : %d \r\n",__LINE__);
  235. #endif /* DEBUG_PRINT */
  236. BDA4601_atten_ctrl(BDA4601_1_8G_DL1,(data_buf[INDEX_ATT_1_8G_DL1]));
  237. Prev_data[INDEX_ATT_1_8G_DL1] = data_buf[INDEX_ATT_1_8G_DL1];
  238. }
  239. if(Prev_data[INDEX_ATT_1_8G_DL2] != data_buf[INDEX_ATT_1_8G_DL2]){
  240. #ifdef DEBUG_PRINT
  241. printf("\r\nLINE : %d \r\n",__LINE__);
  242. #endif /* DEBUG_PRINT */
  243. BDA4601_atten_ctrl(BDA4601_1_8G_DL2,(data_buf[INDEX_ATT_1_8G_DL2]));
  244. Prev_data[INDEX_ATT_1_8G_DL2] = data_buf[INDEX_ATT_1_8G_DL2];
  245. }
  246. if(Prev_data[INDEX_ATT_1_8G_UL1] != data_buf[INDEX_ATT_1_8G_UL1]){
  247. #ifdef DEBUG_PRINT
  248. printf("\r\nLINE : %d \r\n",__LINE__);
  249. #endif /* DEBUG_PRINT */
  250. BDA4601_atten_ctrl(BDA4601_1_8G_UL1,(data_buf[INDEX_ATT_1_8G_UL1]));
  251. Prev_data[INDEX_ATT_1_8G_UL1] = data_buf[INDEX_ATT_1_8G_UL1];
  252. }
  253. if(Prev_data[INDEX_ATT_1_8G_UL2] != data_buf[INDEX_ATT_1_8G_UL2]){
  254. #ifdef DEBUG_PRINT
  255. printf("\r\nLINE : %d \r\n",__LINE__);
  256. #endif /* DEBUG_PRINT */
  257. BDA4601_atten_ctrl(BDA4601_1_8G_UL2,(data_buf[INDEX_ATT_1_8G_UL2]));
  258. Prev_data[INDEX_ATT_1_8G_UL2] = data_buf[INDEX_ATT_1_8G_UL2];
  259. }
  260. if(Prev_data[INDEX_ATT_1_8G_UL3] != data_buf[INDEX_ATT_1_8G_UL3]){
  261. BDA4601_atten_ctrl(BDA4601_1_8G_UL3,(data_buf[INDEX_ATT_1_8G_UL3]));
  262. Prev_data[INDEX_ATT_1_8G_UL3] = data_buf[INDEX_ATT_1_8G_UL3];
  263. }
  264. if(Prev_data[INDEX_ATT_1_8G_UL4] != data_buf[INDEX_ATT_1_8G_UL4]){
  265. #ifdef DEBUG_PRINT
  266. printf("\r\nLINE : %d \r\n",__LINE__);
  267. #endif /* DEBUG_PRINT */
  268. BDA4601_atten_ctrl(BDA4601_1_8G_UL4,(data_buf[INDEX_ATT_1_8G_UL4]));
  269. Prev_data[INDEX_ATT_1_8G_UL4] = data_buf[INDEX_ATT_1_8G_UL4];
  270. }
  271. if(Prev_data[INDEX_ATT_2_1G_DL1] != data_buf[INDEX_ATT_2_1G_DL1]){
  272. #ifdef DEBUG_PRINT
  273. printf("\r\nLINE : %d \r\n",__LINE__);
  274. #endif /* DEBUG_PRINT */
  275. BDA4601_atten_ctrl(BDA4601_2_1G_DL1,(data_buf[INDEX_ATT_2_1G_DL1]));
  276. Prev_data[INDEX_ATT_2_1G_DL1] = data_buf[INDEX_ATT_2_1G_DL1];
  277. }
  278. if(Prev_data[INDEX_ATT_2_1G_DL2] != data_buf[INDEX_ATT_2_1G_DL2]){
  279. #ifdef DEBUG_PRINT
  280. printf("\r\nLINE : %d \r\n",__LINE__);
  281. #endif /* DEBUG_PRINT */
  282. BDA4601_atten_ctrl(BDA4601_2_1G_DL2,(data_buf[INDEX_ATT_2_1G_DL2]));
  283. Prev_data[INDEX_ATT_2_1G_DL2] = data_buf[INDEX_ATT_2_1G_DL2];
  284. }
  285. if(Prev_data[INDEX_ATT_2_1G_UL1] != data_buf[INDEX_ATT_2_1G_UL1]){
  286. #ifdef DEBUG_PRINT
  287. printf("\r\nLINE : %d \r\n",__LINE__);
  288. #endif /* DEBUG_PRINT */
  289. BDA4601_atten_ctrl(BDA4601_2_1G_UL1,(data_buf[INDEX_ATT_2_1G_UL1]));
  290. Prev_data[INDEX_ATT_2_1G_UL1] = data_buf[INDEX_ATT_2_1G_UL1];
  291. }
  292. if(Prev_data[INDEX_ATT_2_1G_UL2] != data_buf[INDEX_ATT_2_1G_UL2]){
  293. BDA4601_atten_ctrl(BDA4601_2_1G_UL2,(data_buf[INDEX_ATT_2_1G_UL2]));
  294. Prev_data[INDEX_ATT_2_1G_UL2] = data_buf[INDEX_ATT_2_1G_UL2];
  295. }
  296. if(Prev_data[INDEX_ATT_2_1G_UL3] != data_buf[INDEX_ATT_2_1G_UL3]){
  297. BDA4601_atten_ctrl(BDA4601_2_1G_UL3,(data_buf[INDEX_ATT_2_1G_UL3]));
  298. Prev_data[INDEX_ATT_2_1G_UL3] = data_buf[INDEX_ATT_2_1G_UL3];
  299. }
  300. if(Prev_data[INDEX_ATT_2_1G_UL4] != data_buf[INDEX_ATT_2_1G_UL4]){
  301. BDA4601_atten_ctrl(BDA4601_2_1G_UL4,(data_buf[INDEX_ATT_2_1G_UL4]));
  302. Prev_data[INDEX_ATT_2_1G_UL4] = data_buf[INDEX_ATT_2_1G_UL4];
  303. }
  304. if( (Prev_data[INDEX_ATT_3_5G_DL] != data_buf[INDEX_ATT_3_5G_DL])
  305. ||(Prev_data[INDEX_ATT_3_5G_UL] != data_buf[INDEX_ATT_3_5G_UL])
  306. ||(Prev_data[INDEX_ATT_3_5G_COM1] != data_buf[INDEX_ATT_3_5G_COM1])
  307. ||(Prev_data[INDEX_ATT_3_5G_COM2] != data_buf[INDEX_ATT_3_5G_COM2])
  308. ||(Prev_data[INDEX_ATT_3_5G_COM3] != data_buf[INDEX_ATT_3_5G_COM3])
  309. ){
  310. ALL_ATT_3_5G.data0 = Prev_data[INDEX_ATT_3_5G_DL] = data_buf[INDEX_ATT_3_5G_DL];
  311. ALL_ATT_3_5G.data1 = Prev_data[INDEX_ATT_3_5G_UL] = data_buf[INDEX_ATT_3_5G_UL];
  312. ALL_ATT_3_5G.data2 = Prev_data[INDEX_ATT_3_5G_COM1] = data_buf[INDEX_ATT_3_5G_COM1];
  313. ALL_ATT_3_5G.data3 = Prev_data[INDEX_ATT_3_5G_COM2] = data_buf[INDEX_ATT_3_5G_COM2];
  314. ALL_ATT_3_5G.data4 = Prev_data[INDEX_ATT_3_5G_COM3] = data_buf[INDEX_ATT_3_5G_COM3];
  315. PE43711_ALL_atten_ctrl(ALL_ATT_3_5G);
  316. }
  317. if((Prev_data[INDEX_PLL_1_8G_DL_H] != data_buf[INDEX_PLL_1_8G_DL_H])
  318. && (Prev_data[INDEX_PLL_1_8G_DL_L] != data_buf[INDEX_PLL_1_8G_DL_L])
  319. ){
  320. Prev_data[INDEX_PLL_1_8G_DL_H] = data_buf[INDEX_PLL_1_8G_DL_H];
  321. Prev_data[INDEX_PLL_1_8G_DL_L] = data_buf[INDEX_PLL_1_8G_DL_L];
  322. temp_val = (data_buf[INDEX_PLL_1_8G_DL_H] << 8) | (data_buf[INDEX_PLL_1_8G_DL_L]);
  323. ADF4113_Module_Ctrl(ADF4113_1_8G_DL,0x410,halSynSetFreq((temp_val * 1000000) / 10 ),0x9F8092);
  324. }
  325. if((Prev_data[INDEX_PLL_1_8G_UL_H] != data_buf[INDEX_PLL_1_8G_UL_H])
  326. && (Prev_data[INDEX_PLL_1_8G_UL_L] != data_buf[INDEX_PLL_1_8G_UL_L])){
  327. temp_val = (data_buf[INDEX_PLL_1_8G_UL_H] << 8) | (data_buf[INDEX_PLL_1_8G_UL_L]);
  328. Prev_data[INDEX_PLL_1_8G_UL_H] = data_buf[INDEX_PLL_1_8G_UL_H];
  329. Prev_data[INDEX_PLL_1_8G_UL_L] = data_buf[INDEX_PLL_1_8G_UL_L];
  330. ADF4113_Module_Ctrl(ADF4113_1_8G_UL,0x410,halSynSetFreq((temp_val * 1000000) / 10),0x9F8092);
  331. }
  332. if((Prev_data[INDEX_PLL_2_1G_DL_H] != data_buf[INDEX_PLL_2_1G_DL_H])
  333. && (Prev_data[INDEX_PLL_2_1G_DL_L] != data_buf[INDEX_PLL_2_1G_DL_L])){
  334. temp_val = ((data_buf[INDEX_PLL_2_1G_DL_H] << 8) | (data_buf[INDEX_PLL_2_1G_DL_L]));
  335. Prev_data[INDEX_PLL_2_1G_DL_H] = data_buf[INDEX_PLL_2_1G_DL_H];
  336. Prev_data[INDEX_PLL_2_1G_DL_L] = data_buf[INDEX_PLL_2_1G_DL_L];
  337. ADF4113_Module_Ctrl(ADF4113_2_1G_DL,0x410,halSynSetFreq((temp_val * 1000000) / 10),0x9F8092);
  338. }
  339. if((Prev_data[INDEX_PLL_2_1G_UL_H] != data_buf[INDEX_PLL_2_1G_UL_H])
  340. && (Prev_data[INDEX_PLL_2_1G_UL_L] != data_buf[INDEX_PLL_2_1G_UL_L])){
  341. Prev_data[INDEX_PLL_2_1G_UL_H] = data_buf[INDEX_PLL_2_1G_UL_H];
  342. Prev_data[INDEX_PLL_2_1G_UL_L] = data_buf[INDEX_PLL_2_1G_UL_L];
  343. temp_val = (data_buf[INDEX_PLL_2_1G_UL_H] << 8) | (data_buf[INDEX_PLL_2_1G_UL_L]);
  344. ADF4113_Module_Ctrl(ADF4113_2_1G_UL,0x410,halSynSetFreq((temp_val * 1000000) / 10),0x9F8092);
  345. }
  346. if((Prev_data[INDEX_PLL_3_5G_DL_H] != data_buf[INDEX_PLL_3_5G_DL_H])
  347. && (Prev_data[INDEX_PLL_3_5G_DL_L] != data_buf[INDEX_PLL_3_5G_DL_L])){
  348. Prev_data[INDEX_PLL_3_5G_DL_H] = data_buf[INDEX_PLL_3_5G_DL_H];
  349. Prev_data[INDEX_PLL_3_5G_DL_L] = data_buf[INDEX_PLL_3_5G_DL_L];
  350. temp_val = (data_buf[INDEX_PLL_3_5G_DL_H] << 8) | (data_buf[INDEX_PLL_3_5G_DL_L]);
  351. temp_reg = ADF4153_Freq_Calc(3934500000,ADF4153_REFIN,ADF4153_RCOUNTER,ADF4153_CHANNEL_SPACING);
  352. ADF4153_Module_Ctrl(Pll_3_5_L,temp_reg.N_reg,temp_reg.R_reg,0x13c2,0x3);
  353. }
  354. if((Prev_data[INDEX_PLL_3_5G_UL_H] != data_buf[INDEX_PLL_3_5G_UL_H])
  355. && (Prev_data[INDEX_PLL_3_5G_UL_L] != data_buf[INDEX_PLL_3_5G_UL_L])){
  356. Prev_data[INDEX_PLL_3_5G_UL_H] = data_buf[INDEX_PLL_3_5G_UL_H];
  357. Prev_data[INDEX_PLL_3_5G_UL_L] = data_buf[INDEX_PLL_3_5G_UL_L];
  358. temp_val = (data_buf[INDEX_PLL_3_5G_UL_H] << 8) | (data_buf[INDEX_PLL_3_5G_UL_L]);
  359. temp_reg = ADF4153_Freq_Calc(3465500000,ADF4153_REFIN,ADF4153_RCOUNTER,ADF4153_CHANNEL_SPACING);
  360. ADF4153_Module_Ctrl(Pll_3_5_H,temp_reg.N_reg,temp_reg.R_reg,0x13c2,0x3);
  361. }
  362. if(Prev_data[INDEX_PLL_LD_6_BIT] != data_buf[INDEX_PLL_LD_6_BIT]){
  363. }
  364. #if 0 // PYJ.2019.07.28_BEGIN --
  365. if(Prev_data[INDEX_DET_1_8G_DL_IN_H] != data_buf[INDEX_DET_1_8G_DL_IN_H]){
  366. }
  367. if(Prev_data[INDEX_DET_1_8G_DL_IN_L] != data_buf[INDEX_DET_1_8G_DL_IN_L]){
  368. }
  369. if(Prev_data[INDEX_DET_1_8G_DL_OUT_H] != data_buf[INDEX_DET_1_8G_DL_OUT_H]){
  370. }
  371. if(Prev_data[INDEX_DET_1_8G_DL_OUT_L] != data_buf[INDEX_DET_1_8G_DL_OUT_L]){
  372. }
  373. if(Prev_data[INDEX_DET_1_8G_UL_IN_H] != data_buf[INDEX_DET_1_8G_UL_IN_H]){
  374. }
  375. if(Prev_data[INDEX_DET_1_8G_UL_IN_L] != data_buf[INDEX_DET_1_8G_UL_IN_L]){
  376. }
  377. if(Prev_data[INDEX_DET_1_8G_UL_OUT_H] != data_buf[INDEX_DET_1_8G_UL_OUT_H]){
  378. }
  379. if(Prev_data[INDEX_DET_1_8G_UL_OUT_L] != data_buf[INDEX_DET_1_8G_UL_OUT_L]){
  380. }
  381. if(Prev_data[INDEX_DET_2_1G_DL_IN_H] != data_buf[INDEX_DET_2_1G_DL_IN_H]){
  382. }
  383. if(Prev_data[INDEX_DET_2_1G_DL_IN_L] != data_buf[INDEX_DET_2_1G_DL_IN_L]){
  384. }
  385. if(Prev_data[INDEX_DET_2_1G_DL_OUT_H] != data_buf[INDEX_DET_2_1G_DL_OUT_H]){
  386. }
  387. if(Prev_data[INDEX_DET_2_1G_DL_OUT_L] != data_buf[INDEX_DET_2_1G_DL_OUT_L]){
  388. }
  389. if(Prev_data[INDEX_DET_2_1G_UL_IN_H] != data_buf[INDEX_DET_2_1G_UL_IN_H]){
  390. }
  391. if(Prev_data[INDEX_DET_2_1G_UL_IN_L] != data_buf[INDEX_DET_2_1G_UL_IN_L]){
  392. }
  393. if(Prev_data[INDEX_DET_2_1G_UL_OUT_H] != data_buf[INDEX_DET_2_1G_UL_OUT_H]){
  394. }
  395. if(Prev_data[INDEX_DET_2_1G_UL_OUT_L] != data_buf[INDEX_DET_2_1G_UL_OUT_L]){
  396. }
  397. if(Prev_data[INDEX_DET_3_5G_DL_IN_H] != data_buf[INDEX_DET_3_5G_DL_IN_H]){
  398. }
  399. if(Prev_data[INDEX_DET_3_5G_DL_IN_L] != data_buf[INDEX_DET_3_5G_DL_IN_L]){
  400. }
  401. if(Prev_data[INDEX_DET_3_5G_DL_OUT_L] != data_buf[INDEX_DET_3_5G_DL_OUT_L]){
  402. }
  403. if(Prev_data[INDEX_DET_3_5G_DL_OUT_H] != data_buf[INDEX_DET_3_5G_DL_OUT_H]){
  404. }
  405. if(Prev_data[INDEX_DET_3_5G_UL_IN_H] != data_buf[INDEX_DET_3_5G_UL_IN_H]){
  406. }
  407. if(Prev_data[INDEX_DET_3_5G_UL_IN_L] != data_buf[INDEX_DET_3_5G_UL_IN_L]){
  408. }
  409. if(Prev_data[INDEX_DET_3_5G_UL_OUT_H] != data_buf[INDEX_DET_3_5G_UL_OUT_H]){
  410. }
  411. if(Prev_data[INDEX_DET_3_5G_UL_OUT_L] != data_buf[INDEX_DET_3_5G_UL_OUT_L]){
  412. }
  413. if(Prev_data[INDEX_RFU_TEMP_H] != data_buf[INDEX_RFU_TEMP_H]){
  414. }
  415. if(Prev_data[INDEX_RFU_TEMP_L] != data_buf[INDEX_RFU_TEMP_L]){
  416. }
  417. if(Prev_data[INDEX__28V_DET_H] != data_buf[INDEX__28V_DET_H]){
  418. }
  419. if(Prev_data[INDEX__28V_DET_L] != data_buf[INDEX__28V_DET_L]){
  420. }
  421. #endif // PYJ.2019.07.28_END --
  422. if(Prev_data[INDEX_ALARM_AC] != data_buf[INDEX_ALARM_AC]){
  423. }
  424. if(Prev_data[INDEX_ALARM_DC] != data_buf[INDEX_ALARM_DC]){
  425. }
  426. if(Prev_data[INDEX_PATH_EN_1_8G_DL] != data_buf[INDEX_PATH_EN_1_8G_DL]){
  427. Power_ON_OFF_Ctrl(INDEX_PATH_EN_1_8G_DL,data_buf[INDEX_PATH_EN_1_8G_DL]);
  428. Prev_data[INDEX_PATH_EN_1_8G_DL] = data_buf[INDEX_PATH_EN_1_8G_DL];
  429. }
  430. if(Prev_data[INDEX_PATH_EN_1_8G_UL] != data_buf[INDEX_PATH_EN_1_8G_UL]){
  431. Power_ON_OFF_Ctrl(INDEX_PATH_EN_1_8G_UL,data_buf[INDEX_PATH_EN_1_8G_UL]);
  432. Prev_data[INDEX_PATH_EN_1_8G_UL] = data_buf[INDEX_PATH_EN_1_8G_UL];
  433. }
  434. if(Prev_data[INDEX_PATH_EN_2_1G_DL] != data_buf[INDEX_PATH_EN_2_1G_DL]){
  435. Power_ON_OFF_Ctrl(INDEX_PATH_EN_2_1G_DL,data_buf[INDEX_PATH_EN_2_1G_DL]);
  436. Prev_data[INDEX_PATH_EN_2_1G_DL] = data_buf[INDEX_PATH_EN_2_1G_DL];
  437. }
  438. if(Prev_data[INDEX_PATH_EN_2_1G_UL] != data_buf[INDEX_PATH_EN_2_1G_UL]){
  439. Power_ON_OFF_Ctrl(INDEX_PATH_EN_2_1G_UL,data_buf[INDEX_PATH_EN_2_1G_UL]);
  440. Prev_data[INDEX_PATH_EN_2_1G_UL] = data_buf[INDEX_PATH_EN_2_1G_UL];
  441. }
  442. if(Prev_data[INDEX_PATH_EN_3_5G_L] != data_buf[INDEX_PATH_EN_3_5G_L]){
  443. Power_ON_OFF_Ctrl(INDEX_PATH_EN_3_5G_L,data_buf[INDEX_PATH_EN_3_5G_L]);
  444. Prev_data[INDEX_PATH_EN_3_5G_L] = data_buf[INDEX_PATH_EN_3_5G_L];
  445. }
  446. if(Prev_data[INDEX_PATH_EN_3_5G_H] != data_buf[INDEX_PATH_EN_3_5G_H]){
  447. Power_ON_OFF_Ctrl(INDEX_PATH_EN_3_5G_H,data_buf[INDEX_PATH_EN_3_5G_H]);
  448. Prev_data[INDEX_PATH_EN_3_5G_H] = data_buf[INDEX_PATH_EN_3_5G_H];
  449. }
  450. if(Prev_data[INDEX_PATH_EN_3_5G_DL] != data_buf[INDEX_PATH_EN_3_5G_DL]){
  451. Power_ON_OFF_Ctrl(INDEX_PATH_EN_3_5G_DL,data_buf[INDEX_PATH_EN_3_5G_DL]);
  452. Prev_data[INDEX_PATH_EN_3_5G_DL] = data_buf[INDEX_PATH_EN_3_5G_DL];
  453. }
  454. if(Prev_data[INDEX_PATH_EN_3_5G_UL] != data_buf[INDEX_PATH_EN_3_5G_UL]){
  455. Power_ON_OFF_Ctrl(INDEX_PATH_EN_3_5G_UL,data_buf[INDEX_PATH_EN_3_5G_UL]);
  456. Prev_data[INDEX_PATH_EN_3_5G_UL] = data_buf[INDEX_PATH_EN_3_5G_UL];
  457. }
  458. if(Prev_data[INDEX_PLL_ON_OFF_3_5G_H] != data_buf[INDEX_PLL_ON_OFF_3_5G_H]){
  459. Power_ON_OFF_Ctrl(INDEX_PLL_ON_OFF_3_5G_H,data_buf[INDEX_PLL_ON_OFF_3_5G_H]);
  460. Prev_data[INDEX_PLL_ON_OFF_3_5G_H] = data_buf[INDEX_PLL_ON_OFF_3_5G_H];
  461. HAL_Delay(10);
  462. printf("POWER : %d \r\n",Prev_data[INDEX_PLL_ON_OFF_3_5G_H]);
  463. if(data_buf[INDEX_PLL_ON_OFF_3_5G_H]){
  464. printf("PLL CTRL START !! \r\n");
  465. // ADF4153_Init();
  466. temp_reg = ADF4153_Freq_Calc(3934500000,ADF4153_REFIN,ADF4153_RCOUNTER,ADF4153_CHANNEL_SPACING);
  467. ADF4153_Module_Ctrl(Pll_3_5_H,temp_reg.N_reg,temp_reg.R_reg,0x13c2,0x3);
  468. }
  469. }
  470. if(Prev_data[INDEX_PLL_ON_OFF_3_5G_L] != data_buf[INDEX_PLL_ON_OFF_3_5G_L]){
  471. Power_ON_OFF_Ctrl(INDEX_PLL_ON_OFF_3_5G_L,data_buf[INDEX_PLL_ON_OFF_3_5G_L]);
  472. Prev_data[INDEX_PLL_ON_OFF_3_5G_L] = data_buf[INDEX_PLL_ON_OFF_3_5G_L];
  473. HAL_Delay(10);
  474. printf("POWER : %d \r\n",Prev_data[INDEX_PLL_ON_OFF_3_5G_L]);
  475. if(data_buf[INDEX_PLL_ON_OFF_3_5G_L]){
  476. printf("PLL CTRL START !! \r\n");
  477. temp_reg = ADF4153_Freq_Calc(3465500000,ADF4153_REFIN,ADF4153_RCOUNTER,ADF4153_CHANNEL_SPACING);
  478. ADF4153_Module_Ctrl(Pll_3_5_L,temp_reg.N_reg,temp_reg.R_reg,0x13c2,0x3);
  479. }
  480. }
  481. if(Prev_data[INDEX_T_SYNC_DL] != data_buf[INDEX_T_SYNC_DL]){
  482. Prev_data[INDEX_T_SYNC_DL] = data_buf[INDEX_T_SYNC_DL];
  483. Power_ON_OFF_Ctrl(INDEX_T_SYNC_DL,data_buf[INDEX_T_SYNC_DL]);
  484. }
  485. if(Prev_data[INDEX__T_SYNC_DL] != data_buf[INDEX__T_SYNC_DL]){
  486. Prev_data[INDEX__T_SYNC_DL] = data_buf[INDEX__T_SYNC_DL];
  487. Power_ON_OFF_Ctrl(INDEX__T_SYNC_DL,data_buf[INDEX__T_SYNC_DL]);
  488. }
  489. if(Prev_data[INDEX_T_SYNC_UL] != data_buf[INDEX_T_SYNC_UL]){
  490. Prev_data[INDEX_T_SYNC_UL] = data_buf[INDEX_T_SYNC_UL];
  491. Power_ON_OFF_Ctrl(INDEX_T_SYNC_UL,data_buf[INDEX_T_SYNC_UL]);
  492. }
  493. if(Prev_data[INDEX__T_SYNC_UL] != data_buf[INDEX__T_SYNC_UL]){
  494. Prev_data[INDEX__T_SYNC_UL] = data_buf[INDEX__T_SYNC_UL];
  495. Power_ON_OFF_Ctrl(INDEX__T_SYNC_UL,data_buf[INDEX__T_SYNC_UL]);
  496. }
  497. if((Prev_data[INDEX_DAC_VCtrl_A_H] != data_buf[INDEX_DAC_VCtrl_A_H])
  498. ||(Prev_data[INDEX_DAC_VCtrl_A_L] != data_buf[INDEX_DAC_VCtrl_A_L])){
  499. ADC_Modify = 1;
  500. Prev_data[INDEX_DAC_VCtrl_A_H] = data_buf[INDEX_DAC_VCtrl_A_H];
  501. Prev_data[INDEX_DAC_VCtrl_A_L] = data_buf[INDEX_DAC_VCtrl_A_L];
  502. }
  503. if((Prev_data[INDEX_DAC_VCtrl_B_H] != data_buf[INDEX_DAC_VCtrl_B_H])
  504. ||(Prev_data[INDEX_DAC_VCtrl_B_L] != data_buf[INDEX_DAC_VCtrl_B_L])){
  505. ADC_Modify = 1;
  506. Prev_data[INDEX_DAC_VCtrl_B_H] = data_buf[INDEX_DAC_VCtrl_B_H];
  507. Prev_data[INDEX_DAC_VCtrl_B_L] = data_buf[INDEX_DAC_VCtrl_B_L];
  508. }
  509. if((Prev_data[INDEX_DAC_VCtrl_C_H] != data_buf[INDEX_DAC_VCtrl_C_H])
  510. ||(Prev_data[INDEX_DAC_VCtrl_C_L] != data_buf[INDEX_DAC_VCtrl_C_L])){
  511. ADC_Modify = 1;
  512. Prev_data[INDEX_DAC_VCtrl_C_H] = data_buf[INDEX_DAC_VCtrl_C_H];
  513. Prev_data[INDEX_DAC_VCtrl_C_L] = data_buf[INDEX_DAC_VCtrl_C_L];
  514. }
  515. if((Prev_data[INDEX_DAC_VCtrl_D_H] != data_buf[INDEX_DAC_VCtrl_D_H])
  516. ||(Prev_data[INDEX_DAC_VCtrl_D_L] != data_buf[INDEX_DAC_VCtrl_D_L])){
  517. ADC_Modify = 1;
  518. Prev_data[INDEX_DAC_VCtrl_D_H] = data_buf[INDEX_DAC_VCtrl_D_H];
  519. Prev_data[INDEX_DAC_VCtrl_D_L] = data_buf[INDEX_DAC_VCtrl_D_L];
  520. }
  521. if((Prev_data[INDEX_DAC_VCtrl_E_H] != data_buf[INDEX_DAC_VCtrl_E_H])
  522. ||(Prev_data[INDEX_DAC_VCtrl_E_L] != data_buf[INDEX_DAC_VCtrl_E_L])){
  523. ADC_Modify = 1;
  524. Prev_data[INDEX_DAC_VCtrl_E_H] = data_buf[INDEX_DAC_VCtrl_E_H];
  525. Prev_data[INDEX_DAC_VCtrl_E_L] = data_buf[INDEX_DAC_VCtrl_E_L];
  526. }
  527. if((Prev_data[INDEX_DAC_VCtrl_F_H] != data_buf[INDEX_DAC_VCtrl_F_H])
  528. ||(Prev_data[INDEX_DAC_VCtrl_F_L] != data_buf[INDEX_DAC_VCtrl_F_L])){
  529. ADC_Modify = 1;
  530. Prev_data[INDEX_DAC_VCtrl_F_H] = data_buf[INDEX_DAC_VCtrl_F_H];
  531. Prev_data[INDEX_DAC_VCtrl_F_L] = data_buf[INDEX_DAC_VCtrl_F_L];
  532. }
  533. if((Prev_data[INDEX_DAC_VCtrl_G_H] != data_buf[INDEX_DAC_VCtrl_G_H])
  534. ||(Prev_data[INDEX_DAC_VCtrl_G_L] != data_buf[INDEX_DAC_VCtrl_G_L])){
  535. ADC_Modify = 1;
  536. Prev_data[INDEX_DAC_VCtrl_G_H] = data_buf[INDEX_DAC_VCtrl_G_H];
  537. Prev_data[INDEX_DAC_VCtrl_G_L] = data_buf[INDEX_DAC_VCtrl_G_L];
  538. }
  539. if((Prev_data[INDEX_DAC_VCtrl_H_H] != data_buf[INDEX_DAC_VCtrl_H_H])
  540. ||(Prev_data[INDEX_DAC_VCtrl_H_L] != data_buf[INDEX_DAC_VCtrl_H_L])){
  541. ADC_Modify = 1;
  542. Prev_data[INDEX_DAC_VCtrl_H_H] = data_buf[INDEX_DAC_VCtrl_H_H];
  543. Prev_data[INDEX_DAC_VCtrl_H_L] = data_buf[INDEX_DAC_VCtrl_H_L];
  544. }
  545. if(ADC_Modify){
  546. // SubmitDAC(0xF000);
  547. // HAL_Delay(1);
  548. // SubmitDAC(0x800C);
  549. // SubmitDAC(0xA000);
  550. SubmitDAC((Prev_data[INDEX_DAC_VCtrl_A_H] << 8 | Prev_data[INDEX_DAC_VCtrl_A_L]) );
  551. SubmitDAC((Prev_data[INDEX_DAC_VCtrl_B_H] << 8 | Prev_data[INDEX_DAC_VCtrl_B_L]));
  552. // SubmitDAC(0x2FFF );
  553. SubmitDAC((Prev_data[INDEX_DAC_VCtrl_C_H] << 8 | Prev_data[INDEX_DAC_VCtrl_C_L]));
  554. SubmitDAC((Prev_data[INDEX_DAC_VCtrl_D_H] << 8 | Prev_data[INDEX_DAC_VCtrl_D_L]));
  555. SubmitDAC((Prev_data[INDEX_DAC_VCtrl_E_H] << 8 | Prev_data[INDEX_DAC_VCtrl_E_L]));
  556. SubmitDAC((Prev_data[INDEX_DAC_VCtrl_F_H] << 8 | Prev_data[INDEX_DAC_VCtrl_F_L]));
  557. SubmitDAC((Prev_data[INDEX_DAC_VCtrl_G_H] << 8 | Prev_data[INDEX_DAC_VCtrl_G_L]));
  558. SubmitDAC((Prev_data[INDEX_DAC_VCtrl_H_H] << 8 | Prev_data[INDEX_DAC_VCtrl_H_L]));
  559. }
  560. printf("Write Start \r\n");
  561. HAL_Delay(5000);
  562. Flash_Byte_Write(&Prev_data[INDEX_BLUE_HEADER]);
  563. }
  564. bool RF_Ctrl_Main(uint8_t* data_buf){
  565. bool ret = false;
  566. Bluecell_Prot_t type = data_buf[Type];
  567. ret = RF_Data_Check(&data_buf[Header]); /* ERROR CHECK */
  568. if(ret == false)
  569. return ret;
  570. switch(type){
  571. case TYPE_BLUECELL_RESET:
  572. #ifdef DEBUG_PRINT // PYJ.2019.07.27_BEGIN --
  573. for(uint8_t i =0 ; i < data_buf[Length] + 6; i++)
  574. printf("%02x ",data_buf[i]);
  575. printf("Reset Start \r\n");
  576. #endif // PYJ.2019.07.27_END --
  577. NVIC_SystemReset();
  578. break;
  579. case TYPE_BLUECELL_SET:
  580. printf("TYPE_BLUECELL_SET : ");
  581. for(uint8_t i =0 ; i < data_buf[Length] - 1; i++)
  582. printf("%02x ",data_buf[4 + i]);
  583. RF_Operate(&data_buf[Header]);
  584. // ADF4153_Freq_Calc(3465500000,40000000,2,5000);
  585. // ADF4153_Freq_Calc(3993450000,40000000,2,5000);
  586. // halSynSetFreq(1995000000);
  587. // halSynSetFreq(1600000000);
  588. // halSynSetFreq(1455000000);
  589. break;
  590. case TYPE_BLUECELL_GET:
  591. printf("\r\nTYPE_BLUECELL_GET : \r\n");
  592. RF_Status_Get();
  593. break;
  594. default:
  595. #ifdef DEBUG_PRINT // PYJ.2019.07.27_BEGIN --
  596. printf("Function : %s LINE : %d type : %d \r\n",__func__,__LINE__,type);
  597. #endif
  598. break;
  599. }
  600. return ret;
  601. }