tmsgheaders.c 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. #include "tmsgheaders.h"
  2. uint32_t cfgReg = CFG_REG_RST_FOR_FPGA_OFF |
  3. CFG_REG_WIDTH_SPI_TMSG_24_BIT |
  4. CFG_REG_MOD_1 |
  5. CFG_REG_LR_GPIO_0 |
  6. CFG_REG_HR_GPIO_0;
  7. uint32_t tmsgGpioReg = FPGA_AM_CTRL_0 |
  8. DDS_SAW1_FPGA_0 |
  9. GPIO_ADRF_V2_0 |
  10. GPIO_ADRF_V1_0 |
  11. REF_OFFSET_CTRL_FPGA_1 |
  12. DDS_SAW2_FPGA_0 |
  13. DDS_X2_FPGA_0 |
  14. PLL_LOOP_CTRL_1 |
  15. PLL_SYNC_0 |
  16. PLL_SYNC_CTRL_0 |
  17. PLL_VTUNE_CTRL_1 |
  18. AM_ALC_1_FIX_1 |
  19. SW_CAP1_0 |
  20. SW_CAP2_0 |
  21. SW_CAP3_0 |
  22. AM_ALC_SW_1 |
  23. SW_CAP4_0 |
  24. DDS_SYNC_FPGA_0 |
  25. DDS_RESET_FPGA_0 |
  26. DDS_SYNC_CTRL_FPGA_0 |
  27. CTRL_AM_SW3_0 |
  28. RF_SW2_0 |
  29. RF_SW1_0;
  30. uint32_t get_cfg_reg(){
  31. return cfgReg;
  32. }
  33. void set_cfg_reg(uint32_t cfgRegToSet){
  34. cfgReg = cfgRegToSet;
  35. }
  36. uint32_t get_tmsg_gpio_reg(){
  37. return tmsgGpioReg;
  38. }
  39. void set_tmsg_gpio_reg(uint32_t tmsgGpioRegToSet){
  40. tmsgGpioReg = tmsgGpioRegToSet;
  41. }
  42. void rst_for_fpga(void *bar1) {
  43. SET_REGISTER_PARAM(cfgReg, CFG_REG_RST_FOR_FPGA_BITM, CFG_REG_RST_FOR_FPGA_BITP, CFG_REG_RST_FOR_FPGA_ON);
  44. uint32_t *ptr = bar1 + CFG_REG_ADDR;
  45. *ptr = cfgReg;
  46. usleep(1);
  47. SET_REGISTER_PARAM(cfgReg, CFG_REG_RST_FOR_FPGA_BITM, CFG_REG_RST_FOR_FPGA_BITP, CFG_REG_RST_FOR_FPGA_OFF);
  48. *ptr = cfgReg;
  49. }
  50. void shift_reg (void *bar1) {
  51. uint32_t *ptr = bar1 + LMX_BASE_ADDR;
  52. *ptr = InitShRegHeader;
  53. uint32_t *data_ptr = bar1 + LMX_BASE_ADDR ;
  54. *data_ptr = SHIFT_REG;
  55. }
  56. void key_switch (void *bar1, double freq, double lmx_freq) {
  57. uint32_t *ptr = bar1 + LMX_BASE_ADDR;
  58. *ptr = InitShRegHeader;
  59. if (freq >= 100e3 && freq <= 1000e6) {
  60. if (lmx_freq >= 2750e6 && lmx_freq <= 3600e6) {
  61. // Data for Shift Reg
  62. *ptr = 0x1<<SHIFT_REG_SW1_RF_BITP | 0x1<<SHIFT_REG_GPIO_SW_015_RF_BITP | 0x0<<SHIFT_REG_SW_MIXER_RF_BITP | 0x0<<SHIFT_REG_SW2_RF_BITP | 0x1 << SHIFT_REG_SW_RF_BITP;
  63. }
  64. else if (lmx_freq > 3600e6 && lmx_freq <=3999.9e6) {
  65. // Data for Shift Reg
  66. *ptr = 0x0<<SHIFT_REG_SW1_RF_BITP | 0x0 <<SHIFT_REG_SW_MIXER_RF_BITP | 0x1 <<SHIFT_REG_GPIO_SW_015_RF_BITP | 0x1 << SHIFT_REG_SW_RF_BITP;
  67. }
  68. }
  69. else if (freq > 1000e6 && freq <= 1300e6) {
  70. // Data for Shift Reg
  71. *ptr = 0x1<<SHIFT_REG_SW1_RF_BITP | 0x1<<SHIFT_REG_SW2_RF_BITP | 0x1<<SHIFT_REG_GPIO_SW_015_RF_BITP | 0x1<<SHIFT_REG_SW_MIXER_RF_BITP | 0x1<<SHIFT_REG_SW3_RF_BITP | 0x1 << SHIFT_REG_SW_RF_BITP;
  72. }
  73. else if (freq > 1300e6 && freq <= 2200e6) {
  74. // Data for Shift Reg
  75. *ptr = 0x1<<SHIFT_REG_SW1_RF_BITP | 0x1<<SHIFT_REG_SW2_RF_BITP | 0x0<<SHIFT_REG_SW3_RF_BITP | 0x1<<SHIFT_REG_GPIO_SW_015_RF_BITP | 0x1<<SHIFT_REG_SW_MIXER_RF_BITP | 0x1 << SHIFT_REG_SW_RF_BITP;
  76. }
  77. else if (freq > 2200e6 && freq <= 3600e6) {
  78. // Data for Shift Reg
  79. *ptr = 0x1<<SHIFT_REG_SW1_RF_BITP | 0x0 <<SHIFT_REG_SW2_RF_BITP | 0x1<<SHIFT_REG_SW_MIXER_RF_BITP | 0x1<<SHIFT_REG_GPIO_SW_015_RF_BITP | 0x1 << SHIFT_REG_SW_RF_BITP;
  80. }
  81. else if (freq > 3600e6 && freq <= 5500e6) {
  82. // Data for Shift Reg
  83. *ptr = 0x0<<SHIFT_REG_SW1_RF_BITP | 0x1<<SHIFT_REG_SW_MIXER_RF_BITP | 0x1<<SHIFT_REG_GPIO_SW_015_RF_BITP | 0x1 << SHIFT_REG_SW_RF_BITP;
  84. }
  85. else if (freq >5500e6 && freq <= 6000e6){
  86. // Data for Shift Reg
  87. *ptr = 0x1<<SHIFT_REG_SW_MIXER_RF_BITP | 0x1<<SHIFT_REG_GPIO_SW_015_RF_BITP | 0x0 << SHIFT_REG_SW_RF_BITP;
  88. }
  89. else if (freq > 6000e6 && freq <= 7500e6){
  90. // Data for Shift Reg
  91. *ptr = 0x0 << SHIFT_REG_SW_RF_BITP | 0x0 << SHIFT_REG_SW4_RF_BITP | 0x0 << SHIFT_REG_GPIO_SW_015_RF_BITP | 0x1 << SHIFT_REG_GPIO_SW_X2_RF_BITP;
  92. }
  93. else if (freq > 7500e6 && freq <= 9000e6){
  94. // Data for Shift Reg
  95. *ptr = 0x0 << SHIFT_REG_SW_RF_BITP | 0x0 << SHIFT_REG_SW4_RF_BITP | 0x0 << SHIFT_REG_GPIO_SW_015_RF_BITP | 0x1 << SHIFT_REG_GPIO_SW_X2_RF_BITP;
  96. }
  97. else if (freq > 9000e6 && freq <= 15000e6){
  98. // Data for Shift Reg
  99. *ptr = 0x0 << SHIFT_REG_SW_RF_BITP | 0x1 << SHIFT_REG_SW4_RF_BITP | 0x0 << SHIFT_REG_GPIO_SW_015_RF_BITP | 0x1 << SHIFT_REG_GPIO_SW_X2_RF_BITP;
  100. }
  101. else if (freq > 15000e6 && freq <= 18000e6){
  102. // Data for Shift Reg
  103. *ptr = 0x0 << SHIFT_REG_SW_RF_BITP | 0x0 << SHIFT_REG_SW4_RF_BITP | 0x0 << SHIFT_REG_GPIO_SW_015_RF_BITP | 0x0 << SHIFT_REG_GPIO_SW_X2_RF_BITP;
  104. // Header for GPIO_REG 1MOSI
  105. *ptr = (0 << 23) | (DeviceIdGpio1 << 18) | (1 << 1) | 1;
  106. // Data for GPIO_REG
  107. SET_REGISTER_PARAM(tmsgGpioReg, GPIO_ADRF_V1_BITM, GPIO_ADRF_V1_BITP, GPIO_ADRF_V1_1);
  108. SET_REGISTER_PARAM(tmsgGpioReg, GPIO_ADRF_V2_BITM, GPIO_ADRF_V2_BITP, GPIO_ADRF_V2_1);
  109. *ptr = tmsgGpioReg;
  110. }
  111. else if (freq > 18000e6 && freq <= 22000e6){
  112. // Data for Shift Reg
  113. *ptr = 0x0 << SHIFT_REG_SW_RF_BITP | 0x1 << SHIFT_REG_SW4_RF_BITP | 0x0 << SHIFT_REG_GPIO_SW_015_RF_BITP | 0x0 << SHIFT_REG_GPIO_SW_X2_RF_BITP;
  114. // Header for GPIO_REG 1MOSI
  115. *ptr = (0 << 23) | (DeviceIdGpio1 << 18) | (1 << 1) | 1;
  116. // Data for GPIO_REG
  117. SET_REGISTER_PARAM(tmsgGpioReg, GPIO_ADRF_V1_BITM, GPIO_ADRF_V1_BITP, GPIO_ADRF_V1_0);
  118. SET_REGISTER_PARAM(tmsgGpioReg, GPIO_ADRF_V2_BITM, GPIO_ADRF_V2_BITP, GPIO_ADRF_V2_1);
  119. *ptr = tmsgGpioReg;
  120. }
  121. else if (freq > 22000e6 && freq <= 27000e6){
  122. // Data for Shift Regs
  123. *ptr = 0x0 << SHIFT_REG_SW_RF_BITP | 0x1 << SHIFT_REG_SW4_RF_BITP | 0x0 << SHIFT_REG_GPIO_SW_015_RF_BITP | 0x0 << SHIFT_REG_GPIO_SW_X2_RF_BITP;
  124. // Header for GPIO_REG 1MOSI
  125. *ptr = (0 << 23) | (DeviceIdGpio1 << 18) | (1 << 1) | 1;
  126. // Data for GPIO_REG
  127. SET_REGISTER_PARAM(tmsgGpioReg, GPIO_ADRF_V1_BITM, GPIO_ADRF_V1_BITP, GPIO_ADRF_V1_1);
  128. SET_REGISTER_PARAM(tmsgGpioReg, GPIO_ADRF_V2_BITM, GPIO_ADRF_V2_BITP, GPIO_ADRF_V2_0);
  129. *ptr = tmsgGpioReg;
  130. }
  131. if (freq >= 100e3 && freq <= 6000e6) {
  132. // Header for GPIO_REG 1MOSI
  133. *ptr = (0 << 23) | (DeviceIdGpio1 << 18) | (1 << 1) | 1;
  134. // Data for GPIO_REG
  135. SET_REGISTER_PARAM(tmsgGpioReg, RF_SW1_BITM, RF_SW1_BITP, RF_SW1_0);
  136. SET_REGISTER_PARAM(tmsgGpioReg, RF_SW2_BITM, RF_SW2_BITP, RF_SW2_0);
  137. SET_REGISTER_PARAM(tmsgGpioReg, CTRL_AM_SW3_BITM, CTRL_AM_SW3_BITP, CTRL_AM_SW3_0);
  138. SET_REGISTER_PARAM(tmsgGpioReg, FPGA_AM_CTRL_BITM, FPGA_AM_CTRL_BITP, FPGA_AM_CTRL_0);
  139. *ptr = tmsgGpioReg;
  140. }
  141. else if (freq > 6000e6 && freq <= 27000e6) {
  142. // Header for GPIO_REG 1MOSI
  143. *ptr = (0 << 23) | (DeviceIdGpio1 << 18) | (1 << 1) | 1;
  144. // Data for GPIO_REG
  145. SET_REGISTER_PARAM(tmsgGpioReg, RF_SW1_BITM, RF_SW1_BITP, RF_SW1_0);
  146. SET_REGISTER_PARAM(tmsgGpioReg, RF_SW2_BITM, RF_SW2_BITP, RF_SW2_0);
  147. SET_REGISTER_PARAM(tmsgGpioReg, CTRL_AM_SW3_BITM, CTRL_AM_SW3_BITP, CTRL_AM_SW3_1);
  148. SET_REGISTER_PARAM(tmsgGpioReg, FPGA_AM_CTRL_BITM, FPGA_AM_CTRL_BITP, FPGA_AM_CTRL_1);
  149. *ptr = tmsgGpioReg;
  150. // Addr CFG_REG
  151. ptr = bar1 + CFG_REG_ADDR;
  152. // Data CFG_REG
  153. SET_REGISTER_PARAM(cfgReg, CFG_REG_LR_GPIO_BITM, CFG_REG_LR_GPIO_BITP, CFG_REG_LR_GPIO_1);
  154. SET_REGISTER_PARAM(cfgReg, CFG_REG_HR_GPIO_BITM, CFG_REG_HR_GPIO_BITP, CFG_REG_HR_GPIO_0);
  155. *ptr = cfgReg;
  156. }
  157. else if (freq > 27000e6 && freq <= 37000e6) {
  158. // Header for GPIO_REG 1MOSI
  159. *ptr = (0 << 23) | (DeviceIdGpio1 << 18) | (1 << 1) | 1;
  160. // Data for GPIO_REG
  161. SET_REGISTER_PARAM(tmsgGpioReg, RF_SW1_BITM, RF_SW1_BITP, RF_SW1_0);
  162. SET_REGISTER_PARAM(tmsgGpioReg, RF_SW2_BITM, RF_SW2_BITP, RF_SW2_1);
  163. SET_REGISTER_PARAM(tmsgGpioReg, CTRL_AM_SW3_BITM, CTRL_AM_SW3_BITP, CTRL_AM_SW3_1);
  164. SET_REGISTER_PARAM(tmsgGpioReg, FPGA_AM_CTRL_BITM, FPGA_AM_CTRL_BITP, FPGA_AM_CTRL_1);
  165. *ptr = tmsgGpioReg;
  166. // Addr CFG_REG
  167. ptr = bar1 + CFG_REG_ADDR;
  168. // Data CFG_REG
  169. SET_REGISTER_PARAM(cfgReg, CFG_REG_LR_GPIO_BITM, CFG_REG_LR_GPIO_BITP, CFG_REG_LR_GPIO_0);
  170. SET_REGISTER_PARAM(cfgReg, CFG_REG_HR_GPIO_BITM, CFG_REG_HR_GPIO_BITP, CFG_REG_HR_GPIO_1);
  171. *ptr = cfgReg;
  172. if (freq / 2 > 13500e6 && freq / 2 <= 15000e6){
  173. /* code */
  174. }
  175. else if(freq / 2 > 15000e6 && freq / 2 <= 18000e6){
  176. /* code */
  177. }
  178. else if (freq / 2 > 18000e6 && freq / 2 <= 18500e6)
  179. {
  180. /* code */
  181. }
  182. }
  183. else if (freq > 37000e6 && freq <= 45000e6) {
  184. // Header for GPIO_REG 1MOSI
  185. *ptr = (0 << 23) | (DeviceIdGpio1 << 18) | (1 << 1) | 1;
  186. // Data for GPIO_REG
  187. SET_REGISTER_PARAM(tmsgGpioReg, RF_SW1_BITM, RF_SW1_BITP, RF_SW1_1);
  188. SET_REGISTER_PARAM(tmsgGpioReg, RF_SW2_BITM, RF_SW2_BITP, RF_SW2_0);
  189. SET_REGISTER_PARAM(tmsgGpioReg, CTRL_AM_SW3_BITM, CTRL_AM_SW3_BITP, CTRL_AM_SW3_1);
  190. SET_REGISTER_PARAM(tmsgGpioReg, FPGA_AM_CTRL_BITM, FPGA_AM_CTRL_BITP, FPGA_AM_CTRL_1);
  191. *ptr = tmsgGpioReg;
  192. // Addr CFG_REG
  193. ptr = bar1 + CFG_REG_ADDR;
  194. // Data CFG_REG
  195. SET_REGISTER_PARAM(cfgReg, CFG_REG_LR_GPIO_BITM, CFG_REG_LR_GPIO_BITP, CFG_REG_LR_GPIO_0);
  196. SET_REGISTER_PARAM(cfgReg, CFG_REG_HR_GPIO_BITM, CFG_REG_HR_GPIO_BITP, CFG_REG_HR_GPIO_1);
  197. *ptr = cfgReg;
  198. if (freq / 2 > 18500e6 && freq / 2 <= 22000e6){
  199. /* code */
  200. }
  201. else if(freq / 2 > 22000e6 && freq / 2 <= 27500e6){
  202. /* code */
  203. }
  204. }
  205. };