pan_param.h 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. /**
  2. ******************************************************************************
  3. * @file pan_param.h
  4. * @brief RF parameter tables for PAN3029/PAN3060 (power ramp, defaults, AGC, SNR LUT).
  5. * @note These are static configuration tables used by pan_rf.c during initialization
  6. * and runtime parameter conversions. No functions are defined here.
  7. * @history - V1.0.1, 2025-08-18
  8. ******************************************************************************
  9. */
  10. #ifndef _RF_PARAMS_H_
  11. #define _RF_PARAMS_H_
  12. #include <stdint.h>
  13. #include "pan_rf.h"
  14. /*
  15. * TX power ramp configuration entry.
  16. * - Ramp: PA ramp timing/shape configuration register value
  17. * - Ldo: PA LDO related configuration register value
  18. * - PAbias: PA bias setting
  19. */
  20. typedef struct
  21. {
  22. uint8_t Ramp; //!< Ramp timing/shape register value
  23. uint8_t Ldo; //!< PA LDO configuration
  24. uint8_t PAbias; //!< PA bias configuration
  25. } RF_PowerRampCfg_t;
  26. /* Power levels 1..RF_MAX_RAMP. Indexed by desired power step. */
  27. static const RF_PowerRampCfg_t g_RfPowerRampCfg[RF_MAX_RAMP + 1] =
  28. {
  29. {0x01, 0x01, 0x00}, //!< 功率档位1
  30. {0x03, 0x01, 0x01}, //!< 功率档位2
  31. {0x03, 0xF0, 0x30}, //!< 功率档位3
  32. {0x05, 0x01, 0x81}, //!< 功率档位4
  33. {0x05, 0xA1, 0x81}, //!< 功率档位5
  34. {0x05, 0xF0, 0x81}, //!< 功率档位6
  35. {0x07, 0x01, 0x81}, //!< 功率档位7
  36. {0x05, 0x01, 0x80}, //!< 功率档位8
  37. {0x05, 0x31, 0x80}, //!< 功率档位9
  38. {0x07, 0x01, 0x80}, //!< 功率档位10
  39. {0x07, 0x21, 0x80}, //!< 功率档位11
  40. {0x0B, 0x11, 0x80}, //!< 功率档位12
  41. {0x0B, 0x21, 0x80}, //!< 功率档位13
  42. {0x0B, 0x41, 0x80}, //!< 功率档位14
  43. {0x0B, 0x61, 0x80}, //!< 功率档位15
  44. {0x0B, 0x91, 0x80}, //!< 功率档位16
  45. {0x0B, 0xB1, 0x80}, //!< 功率档位17
  46. {0x0D, 0xB1, 0x80}, //!< 功率档位18
  47. {0x0F, 0xB1, 0x80}, //!< 功率档位19
  48. {0x11, 0x50, 0x80}, //!< 功率档位20
  49. {0x15, 0x30, 0x20}, //!< 功率档位21
  50. {0x15, 0x50, 0x70}, //!< 功率档位22
  51. };
  52. /* Single register write item (page, address, value). */
  53. typedef struct
  54. {
  55. uint8_t Page; //!< Register page index
  56. uint8_t Addr; //!< Register address within the page
  57. uint8_t Value; //!< Register value to write
  58. } PAN_RegCfg_t;
  59. /**
  60. * @brief PAN3029/3060 推荐的默认寄存器配置
  61. * @note 该配置参数用于在芯片上电后,初始化RF收发器的寄存器值
  62. */
  63. static const PAN_RegCfg_t g_RfDefaultConfig[] =
  64. {
  65. {0, 0x03, 0x1B},
  66. {0, 0x04, 0x76},
  67. {0, 0x06, 0x01},
  68. {0, 0x0B, 0x04},
  69. {0, 0x13, 0x04},
  70. {0, 0x11, 0x20},
  71. {0, 0x12, 0x10},
  72. {0, 0x1F, 0x07},
  73. {0, 0x20, 0x07},
  74. {0, 0x24, 0x03},
  75. {0, 0x46, 0x03},
  76. {0, 0x25, 0x00},
  77. {0, 0x21, 0x07},
  78. {0, 0x22, 0x07},
  79. {0, 0x15, 0x21},
  80. {0, 0x31, 0xD0},
  81. {0, 0x36, 0x66},
  82. {0, 0x37, 0x6B},
  83. {0, 0x38, 0xCC},
  84. {0, 0x39, 0x09},
  85. {0, 0x3C, 0xB4},
  86. {0, 0x3E, 0x42},
  87. {0, 0x40, 0x6A},
  88. {0, 0x41, 0x06},
  89. {0, 0x42, 0xAA},
  90. {0, 0x48, 0x77},
  91. {0, 0x49, 0x77},
  92. {0, 0x4A, 0x77},
  93. {0, 0x4B, 0x05},
  94. {0, 0x4F, 0x04},
  95. {0, 0x50, 0xD2},
  96. {0, 0x5E, 0x80},
  97. {1, 0x03, 0x1B},
  98. {1, 0x04, 0x76},
  99. {1, 0x0B, 0x08},
  100. {1, 0x0F, 0x0A},
  101. {1, 0x19, 0x00},
  102. {1, 0x2F, 0xD0},
  103. {1, 0x43, 0xDA},
  104. {2, 0x03, 0x1B},
  105. {2, 0x04, 0x76},
  106. {2, 0x2C, 0xC0},
  107. {2, 0x2D, 0x27},
  108. {2, 0x2E, 0x09},
  109. {2, 0x2F, 0x00},
  110. {2, 0x30, 0x10},
  111. {3, 0x03, 0x1B},
  112. {3, 0x04, 0x76},
  113. {3, 0x0A, 0x0E},
  114. {3, 0x0B, 0xCF},
  115. {3, 0x0C, 0x19},
  116. {3, 0x0D, 0x98},
  117. {3, 0x12, 0x16},
  118. {3, 0x13, 0x14},
  119. {3, 0x16, 0xF4},
  120. {3, 0x17, 0x01},
  121. {3, 0x1F, 0xD9},
  122. };
  123. /* Frequency band parameters lookup, selected by user-set frequency in Hz. */
  124. typedef struct
  125. {
  126. uint32_t StartFreq; //!< Start frequency in Hz (inclusive)
  127. uint32_t StopFreq; //!< Stop frequency in Hz (exclusive)
  128. uint8_t VcoParam; //!< VCO configuration parameter
  129. uint8_t FreqFactor; //!< Frequency factor parameter
  130. uint8_t LoParam; //!< LO parameter
  131. } RadioFreqTable_t;
  132. /**
  133. * @brief PAN3029/3060 频率参数表
  134. * @note 用户在设置不同频率时,需要用到该参数表,
  135. * 不同的频率对应不同的vco参数、频率因子和lo参数
  136. * @note 该表支持的频率范围为:
  137. * 低频段:
  138. * - 138.33MHz ~ 180.00MHz
  139. * - 207.00MHz ~ 270.00MHz
  140. * - 282.50MHz ~ 360.00MHz
  141. * - 408.00MHz ~ 540.00MHz
  142. * 高频段:
  143. * - 810.00MHz ~ 1080.00MHz
  144. */
  145. static const RadioFreqTable_t g_RfFreqTable[] =
  146. {
  147. // Fstart Fstop 0x40 0x41 0x3D min mid max
  148. {138330000, 143330000, 0x2A, 0x0C, 0xC0}, //!< 131.6M 140.2M 148.8M
  149. {143330000, 148330000, 0x3A, 0x0C, 0xC0}, //!< 135.1M 144.5M 153.8M
  150. {148330000, 155000000, 0x4A, 0x0C, 0xC0}, //!< 138.8M 149.2M 159.5M
  151. {155000000, 161000000, 0x5A, 0x0C, 0xC0}, //!< 142.9M 154.3M 165.7M
  152. {161000000, 168000000, 0x6A, 0x0C, 0xC0}, //!< 147.4M 160.1M 172.7M
  153. {168000000, 180000000, 0x7A, 0x0C, 0xC0}, //!< 152.3M 166.4M 180.5M
  154. {207500000, 215000000, 0x2A, 0x08, 0xB0}, //!< 197.4M 210.3M 223.3M
  155. {215000000, 222500000, 0x3A, 0x08, 0xB0}, //!< 202.6M 216.8M 230.8M
  156. {222500000, 232500000, 0x4A, 0x08, 0xB0}, //!< 208.3M 223.8M 239.3M
  157. {232500000, 242500000, 0x5A, 0x08, 0xB0}, //!< 214.4M 231.5M 248.5M
  158. {242500000, 252500000, 0x6A, 0x08, 0xB0}, //!< 221.1M 240.1M 259.0M
  159. {252500000, 270000000, 0x7A, 0x08, 0xB0}, //!< 228.5M 249.6M 270.8M
  160. {282500000, 287000000, 0x2A, 0x06, 0xA0}, //!< 263.2M 280.3M 297.7M
  161. {287000000, 297000000, 0x3A, 0x06, 0xA0}, //!< 270.2M 289.0M 307.7M
  162. {297000000, 310000000, 0x4A, 0x06, 0xA0}, //!< 277.7M 298.3M 319.0M
  163. {310000000, 323000000, 0x5A, 0x06, 0xA0}, //!< 285.8M 308.7M 331.3M
  164. {323000000, 337000000, 0x6A, 0x06, 0xA0}, //!< 294.8M 320.2M 345.3M
  165. {337000000, 360000000, 0x7A, 0x06, 0xA0}, //!< 304.7M 332.8M 361.0M
  166. {408000000, 415000000, 0x1A, 0x06, 0x90}, //!< 385.0M 408.8M 432.8M
  167. {415000000, 430000000, 0x2A, 0x06, 0x90}, //!< 394.8M 420.5M 446.5M
  168. {430000000, 445000000, 0x3A, 0x06, 0x90}, //!< 405.3M 433.5M 461.5M
  169. {445000000, 465000000, 0x4A, 0x06, 0x90}, //!< 416.5M 447.5M 478.5M
  170. {465000000, 485000000, 0x5A, 0x06, 0x90}, //!< 428.8M 463.0M 497.0M
  171. {485000000, 505000000, 0x6A, 0x06, 0x90}, //!< 442.3M 480.3M 518.0M
  172. {505000000, 540000000, 0x7A, 0x06, 0x90}, //!< 457.0M 499.3M 541.5M
  173. {810000000, 830000000, 0x1A, 0x02, 0x80}, //!< 770.0M 817.5M 865.5M
  174. {830000000, 860000000, 0x2A, 0x02, 0x80}, //!< 789.5M 841.0M 893.0M
  175. {860000000, 890000000, 0x3A, 0x02, 0x80}, //!< 810.5M 867.0M 923.0M
  176. {890000000, 930000000, 0x4A, 0x02, 0x80}, //!< 833.0M 895.0M 957.0M
  177. {930000000, 970000000, 0x5A, 0x02, 0x80}, //!< 857.5M 926.0M 994.0M
  178. {970000000, 1010000000, 0x6A, 0x02, 0x80}, //!< 884.5M 960.5M 1036.0M
  179. {1010000000, 1080000000, 0x7A, 0x02, 0x80}, //!< 914.0M 998.5M 1083.0M
  180. };
  181. /**
  182. * @brief VCO分频系数表
  183. * @note 该表用于存储VCO的分频系数
  184. */
  185. static const uint8_t g_VcoDivTable[] =
  186. {
  187. 2, 4, 6, 8, 12, 16, 4, 4,
  188. };
  189. /**
  190. * @brief PAN3029/3060 低频段AGC配置参数
  191. * @note 该配置参数用于设置低频段的AGC(自动增益控制)相关寄存器的值
  192. * @note 该参数支持的频段:138.33MHz ~ 282.5MHz,405.00MHz ~ 565.00MHz
  193. */
  194. static const uint8_t g_LowFreqAgcCfg[40] =
  195. {
  196. 0x06, 0x00, 0xf8, 0x06, 0x06, 0x00, 0xf8, 0x06,
  197. 0x06, 0x00, 0xf8, 0x06, 0x06, 0x00, 0xf8, 0x06,
  198. 0x14, 0xc0, 0xf9, 0x14, 0x22, 0xd4, 0xf9, 0x22,
  199. 0x30, 0xd8, 0xf9, 0x30, 0x3e, 0xde, 0xf9, 0x3e,
  200. 0x0e, 0xff, 0x80, 0x4f, 0x12, 0x80, 0x38, 0x01
  201. };
  202. /**
  203. * @brief PAN3029/3060 低频段AGC配置参数
  204. * @note 该配置参数用于设置低频段的AGC(自动增益控制)相关寄存器的值
  205. * @note 该参数支持的频段:810.00MHz ~ 1080.00MHz
  206. */
  207. static const uint8_t g_HighFreqAgcCfg[40] =
  208. {
  209. 0x09, 0x80, 0xf3, 0x09, 0x09, 0x80, 0xf3, 0x09,
  210. 0x09, 0x80, 0xf3, 0x09, 0x09, 0x80, 0xf3, 0x09,
  211. 0x14, 0x06, 0xf0, 0x14, 0x22, 0xc6, 0xf1, 0x22,
  212. 0x31, 0x73, 0xf0, 0x31, 0x3f, 0xde, 0xf1, 0x3f,
  213. 0x0e, 0xff, 0xe0, 0x32, 0x29, 0x80, 0x38, 0x01
  214. };
  215. /**
  216. * @brief 该表用于将信噪比(SNR)转换为线性值
  217. * @note SNR的范围是-10到20dB,对应的线性值范围是10到10240
  218. * @note 为了减少MCU的计算负担,使用了对数表来进行转换
  219. */
  220. const uint32_t g_SnrLog10Talbe[31] =
  221. {
  222. 10, 12, 15, 19, 26, 32, 40, 51, 65, 81,
  223. 102, 128, 162, 204, 257, 324, 407, 513, 645, 813,
  224. 1024, 1288, 1623, 2043, 2572, 3237, 4078, 5131, 6462, 8130,
  225. 10240
  226. };
  227. #endif // ! RF_PARAMS_H