rf_setting.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592
  1. //===================================================================================//
  2. // * @file RF.H
  3. // * @author droplin
  4. // * @version V1.1
  5. // * @date 2020/12/16
  6. // * @brief Main program body
  7. // * @modify user: droplin
  8. // * @modify date: 2019/12/19
  9. //===================================================================================//
  10. #ifndef _RF_SETTING_H_
  11. #define _RF_SETTING_H_
  12. #include "stdbool.h"
  13. #include "stdint.h"
  14. #pragma pack(1)
  15. typedef struct
  16. {
  17. int8_t power;
  18. uint8_t pa1_lvl : 6;
  19. uint8_t pa2_lvl : 6;
  20. }rf_powerRaw_ts;
  21. //00 CONFIG - 0C - 工作寄存器
  22. typedef union
  23. {
  24. uint8_t value;
  25. struct
  26. {
  27. uint8_t PRIM_RX : 1;// 0 0 R/W RX/TX 控制位
  28. // 1:PRX
  29. // 0:PTX
  30. uint8_t PWR_UP : 1;// 1 0 R/W 芯片使能位
  31. // 1:POWER_UP
  32. // 0:POWER_DOWN
  33. uint8_t CRC_SEL : 1;// 2 1 R/W CRC 选择
  34. // 1:CRC16
  35. // 0:CRC8
  36. uint8_t EN_CRC : 1;// 3 1 R/W CRC 使能位
  37. // 1:CRC 使能
  38. // 0:CRC 不使能,并且不判 CRC 校验
  39. uint8_t MASK_MAX_RT : 1;// 4 0 R/W 发送失败并达到最大传输次数的中断上
  40. // 报使能位
  41. // 1:中断不反映到 IRQ 引脚
  42. // 0:MAX_RT 中断反映到 IRQ 引脚
  43. uint8_t MASK_TX_DS : 1;// 5 0 R/W 发送数据成功的中断上报使能位
  44. // 1:中断不反映到 IRQ 引脚
  45. // 0:TX_DS 中断反映到 IRQ 引脚
  46. uint8_t MASK_RX_DR : 1;// 6 0 R/W 接收数据成功的中断上报使能位
  47. // 1:中断不反映到 IRQ 引脚
  48. // 0:RX_DR 中断反映到 IRQ 引脚
  49. uint8_t FAST_MODE : 1;// 7 0 R/W 快速发射使能
  50. // 1:快速发射模式使能
  51. // 0:快速发射模式不使能
  52. }bits;
  53. }config_tu;
  54. //01 EN_AA Enhanced Burst- 01 - 接收通道的自动应答使能
  55. typedef union
  56. {
  57. uint8_t value;
  58. struct
  59. {
  60. uint8_t ENAA_P0 : 1;// 0 1 R/W 使能 pipe0 自动应答
  61. uint8_t ENAA_P1 : 1;// 1 0 R/W 使能 pipe1 自动应答
  62. uint8_t ENAA_P2 : 1;// 2 0 R/W 使能 pipe2 自动应答
  63. uint8_t ENAA_P3 : 1;// 3 0 R/W 使能 pipe3 自动应答
  64. uint8_t ENAA_P4 : 1;// 4 0 R/W 使能 pipe4 自动应答
  65. uint8_t ENAA_P5 : 1;// 5 0 R/W 使能 pipe5 自动应答
  66. uint8_t Reserved : 1;// 7:6 00 R/W Only 00 allowed
  67. }bits;
  68. }en_aa_enhanced_burst_tu;
  69. //02 EN_RXADDR - 01 - 接收通道使能
  70. typedef union
  71. {
  72. uint8_t value;
  73. struct
  74. {
  75. uint8_t ERX_P0 : 1;// 0 1 R/W 使能 data pipe 0
  76. uint8_t ERX_P1 : 1;// 1 0 R/W 使能 data pipe 1
  77. uint8_t ERX_P2 : 1;// 2 0 R/W 使能 data pipe 2
  78. uint8_t ERX_P3 : 1;// 3 0 R/W 使能 data pipe 3
  79. uint8_t ERX_P4 : 1;// 4 0 R/W 使能 data pipe 4
  80. uint8_t ERX_P5 : 1;// 5 0 R/W 使能 data pipe 5
  81. uint8_t Reserved : 1;// 7:6 00 R/W Only 00 allowed
  82. }bits;
  83. }en_rxAddr_tu;
  84. //03 SETUP_AW - 03 - 地址宽度设置
  85. typedef union
  86. {
  87. uint8_t value;
  88. struct
  89. {
  90. uint8_t AW : 2;// 1:0 11 R/W RX/TX 地址宽度
  91. // 00:无效
  92. // 01:3 字节
  93. // 10:4 字节
  94. // 11:5 字节
  95. // 如果地址宽度设置低于 5 字节,地址使
  96. // 用低字节
  97. uint8_t Reserved : 6;// 7:2 000000 R/W Only 000000 allowed
  98. }bits;
  99. }setUp_aw_tu;
  100. //04 SETUP_RETR - 03 - 自动传输设置
  101. typedef union
  102. {
  103. uint8_t value;
  104. struct
  105. {
  106. uint8_t ARC : 4;// 3:0 0011 R/W 自动传输次数设置
  107. // 0000:不带自动重传不带 ACK 的通信模
  108. // 式
  109. // 0001~1111:带自动重传的通信模式
  110. // 0001:带 ACK 的 1 次传输
  111. // 0002:带 ACK 的 2 次传输
  112. // ……
  113. // 1111:带 ACK 的 15 次传输
  114. uint8_t ARD : 4;// 7:4 0000 R/W 自动传输延时
  115. // 0000:250us
  116. // 0001:570us
  117. // 0010:890us
  118. // ……
  119. // 1111:9530us
  120. // 时间计算方法:
  121. // {ARD,7’b1100100}x2.5us
  122. }bits;
  123. }setUp_retr_tu;
  124. //05 RF_CH - 20 - 通信频道设置
  125. typedef union
  126. {
  127. uint8_t value;
  128. struct
  129. {
  130. uint8_t FC8_1 : 8;// 7:0 00100000 R/W 设置使用频道小数位, FC 的第 0bit 在
  131. // RF_ CAL[3]
  132. }bits;
  133. }rf_ch_tu;
  134. //06 RF_SETUP - 52 - 通信参数配置
  135. typedef enum
  136. {
  137. RF_DR_40KBPS,
  138. RF_DR_80KBPS,
  139. RF_DR_200KBPS,
  140. RF_DR_400KBPS,
  141. }rf_dr_te;
  142. typedef union
  143. {
  144. uint8_t value;
  145. struct
  146. {
  147. uint8_t FB5_0 : 6;// 5:0 010010 R/W 设置使用频道整数位
  148. uint8_t RF_DR : 2;// 7:6 01 R/W 数据速率
  149. // 11:400Kbps
  150. // 10:200Kbps
  151. // 01:80kbps 默认
  152. // 00:40kbps
  153. }bits;
  154. }rf_setup_tu;
  155. // 07 STATUS - - - 状态寄存器
  156. typedef union
  157. {
  158. uint8_t value;
  159. struct
  160. {
  161. uint8_t TX_FULL : 1;// 0 0 R TX FIFO 满标志
  162. // 1:TX FIFO 满
  163. // 0:TX FIFO 未满可用
  164. uint8_t RX_P_NO : 3;// 3:1 111 R 可从 RX_FIFO 读取的 pipe 号
  165. // 000-101:pipe 号
  166. // 110:Not Used
  167. // 111:RX_FIFO 空
  168. uint8_t MAX_RT : 1;// 4 0 R/W 发送达到最大传输次数未成功中断位。
  169. // 写 1 清中断
  170. // 产生该中断后,继续进行通信必须先清
  171. // 该中断
  172. uint8_t TX_DS : 1;// 5 0 R/W TX FIFO 发送数据成功中断位,
  173. // 在不带自动重传模式下,数据发送完成
  174. // 后产生中断;
  175. // 在带自动重传模式下,仅在发送端收到
  176. // ACK 信号后才会将该位置高。
  177. // 写 1 清中断
  178. uint8_t RX_DR : 1;// 6 0 R/W RX FIFO 接收数据中断位,
  179. // 在新数据被接收并到达 RX FIFO 时产生
  180. // 中断。
  181. // 写 1 清中断
  182. uint8_t Reserved : 1;// 7 0 R/W Only 0 allowed
  183. }bits;
  184. }status_tu;
  185. // 08 OBSERVE_TX - - - 传输状态寄存器
  186. typedef union
  187. {
  188. uint8_t value;
  189. struct
  190. {
  191. uint8_t ARC_CNT : 1;// 3:0 0 R 自动重传的传输次数计数器
  192. // 自动重传增加一次,ARC_CNT 加一;
  193. // 在 ARC_CNT 达到 ARC 限定值时,视为
  194. // 丢包,并将 PLOS_CNT 加一;
  195. // 当新数据写入 TX FIFO 时该计数器复
  196. // 位。
  197. uint8_t PLOS_CNT : 1;// 7:4 0 R 丢包计数器
  198. // 该计数器达到最大值 15 时将停止计数,
  199. // 该计数器在写 RF_CH 时被复位,
  200. // 未复位该值时可以继续进行通信
  201. }bits;
  202. }observe_tx_tu;
  203. // 09 DATAOUT - - - 数据读取寄存器(测试用)
  204. // 根据 DATAOUT_SEL 位选择输出,当
  205. // DATAOUT_SEL 为 0 时,读取第一种测
  206. // 试值;当 DATA OUT_SEL 为 1 时,读取
  207. // 第二种测试值;DATAOUT_SEL 默认为
  208. // 0。
  209. typedef union
  210. {
  211. uint8_t value;
  212. struct
  213. {
  214. uint8_t ANADATA3 : 6;// 5:0 0 R analog_data[13:8]
  215. // packet_rssi[5:0] 或
  216. // real_time_rssi[5:0],默认输出 packet_rssi
  217. uint8_t ANADATA2 : 1;// 6 0 R analog_data6 或 analog_data 2,默认输出analog_data6s
  218. uint8_t ANADATA1 : 1;// 7 0 R analog_data7 或 analog_data 3,默认输出analog_data7
  219. }bits;
  220. }dataOut_tu;
  221. // 0A RX_ADDR_P0 39:0 0xE7E7E7E7E7
  222. // R/W data pipe 0 的接收地址,最长 5 字节。(由低字开始写。地址长度由 SETUP_AW 定义)
  223. typedef struct
  224. {
  225. uint8_t value[5];
  226. }rx_addr_p0_ts;
  227. // 0B RX_ADDR_P1 39:0 0xC2C2C2C2C2
  228. // R/W data pipe 1 的接收地址,最长 5 字节。(由低字开始写。地址长度由 SETUP_AW 定义)
  229. typedef struct
  230. {
  231. uint8_t value[5];
  232. }rx_addr_p1_ts;
  233. // 0C RX_ADDR_P2 7:0 0xC3 R/W data pipe 2 的接收地址,仅最低 8 位,高
  234. // 位等于 RX_ADDR_P1[39:8]
  235. typedef struct
  236. {
  237. uint8_t addr;
  238. }rx_addr_p2_ts;
  239. // 0D RX_ADDR_P3 7:0 0xC4 R/W data pipe 3 的接收地址,仅最低 8 位,高
  240. // 位等于 RX_ADDR_P1[39:8]
  241. typedef struct
  242. {
  243. uint8_t addr;
  244. }rx_addr_p3_ts;
  245. // 0E RX_ADDR_P4 7:0 0xC5 R/W data pipe 4 的接收地址,仅最低 8 位,高
  246. // 位等于 RX_ADDR_P1[39:8]
  247. typedef struct
  248. {
  249. uint8_t addr;
  250. }rx_addr_p4_ts;
  251. // 0F RX_ADDR_P5 7:0 0xC6 R/W data pipe 5 的接收地址,仅最低 8 位,高
  252. // 位等于 RX_ADDR_P1[39:8
  253. typedef struct
  254. {
  255. uint8_t addr;
  256. }rx_addr_p5_ts;
  257. // 10 TX_ADDR 39:0 0xE7E7E7E7E7 R/W 发送端地址(由低字节开始写)
  258. // 只能在配置为 PTX 模式的芯片中使用,
  259. // 需要设置 RX_ADDR_P0 等于该地址以
  260. // 便接收 ACK 自动应答。
  261. typedef struct
  262. {
  263. uint8_t value[5];
  264. }tx_addr_ts;
  265. // 11 RX_PW_P0 - 00 - data pipe 0 中的 RX payload 的数据长度
  266. typedef union
  267. {
  268. uint8_t value;
  269. struct
  270. {
  271. uint8_t RX_PW_Px_LEN : 7;// 6:0 0000000 R/W data pipe 0 中的 RX payload 的数据长度
  272. // (1 到 32/64 字节)
  273. // 0:该 Pipe 未用
  274. // 1 = 1 byte
  275. // …
  276. // 32/64 = 32/64bytes
  277. uint8_t Reserved : 1;// 7 0 R/W Only 0 allowed
  278. }bits;
  279. }rx_pw_px_tu;
  280. // 11 RX_PW_P0 - 00 - data pipe 0 中的 RX payload 的数据长度
  281. typedef union
  282. {
  283. uint8_t value;
  284. struct
  285. {
  286. uint8_t RX_PW_P0_LEN : 7;// 6:0 0000000 R/W data pipe 0 中的 RX payload 的数据长度
  287. // (1 到 32/64 字节)
  288. // 0:该 Pipe 未用
  289. // 1 = 1 byte
  290. // …
  291. // 32/64 = 32/64bytes
  292. uint8_t Reserved : 1;// 7 0 R/W Only 0 allowed
  293. }bits;
  294. }rx_pw_p0_tu;
  295. // 12 RX_PW_P1 - 00 - data pipe 1 中的 RX payload 的数据长度
  296. typedef union
  297. {
  298. uint8_t value;
  299. struct
  300. {
  301. uint8_t RX_PW_P1_LEN : 7;// 6:0 0000000 R/W data pipe 0 中的 RX payload 的数据长度
  302. // (1 到 32/64 字节)
  303. // 0:该 Pipe 未用
  304. // 1 = 1 byte
  305. // …
  306. // 32/64 = 32/64bytes
  307. uint8_t Reserved : 1;// 7 0 R/W Only 0 allowed
  308. }bits;
  309. }rx_pw_p1_tu;
  310. // 13 RX_PW_P2 - 00 - data pipe 2 中的 RX payload 的数据长度
  311. typedef union
  312. {
  313. uint8_t value;
  314. struct
  315. {
  316. uint8_t RX_PW_P2_LEN : 7;// 6:0 0000000 R/W data pipe 0 中的 RX payload 的数据长度
  317. // (1 到 32/64 字节)
  318. // 0:该 Pipe 未用
  319. // 1 = 1 byte
  320. // …
  321. // 32/64 = 32/64bytes
  322. uint8_t Reserved : 1;// 7 0 R/W Only 0 allowed
  323. }bits;
  324. }rx_pw_p2_tu;
  325. // 14 RX_PW_P3 - 00 - data pipe 3 中的 RX payload 的数据长度
  326. typedef union
  327. {
  328. uint8_t value;
  329. struct
  330. {
  331. uint8_t RX_PW_P3_LEN : 7;// 6:0 0000000 R/W data pipe 0 中的 RX payload 的数据长度
  332. // (1 到 32/64 字节)
  333. // 0:该 Pipe 未用
  334. // 1 = 1 byte
  335. // …
  336. // 32/64 = 32/64bytes
  337. uint8_t Reserved : 1;// 7 0 R/W Only 0 allowed
  338. }bits;
  339. }rx_pw_p3_tu;
  340. // 15 RX_PW_P4 - 00 - data pipe 4 中的 RX payload 的数据长度
  341. typedef union
  342. {
  343. uint8_t value;
  344. struct
  345. {
  346. uint8_t RX_PW_P4_LEN : 7;// 6:0 0000000 R/W data pipe 0 中的 RX payload 的数据长度
  347. // (1 到 32/64 字节)
  348. // 0:该 Pipe 未用
  349. // 1 = 1 byte
  350. // …
  351. // 32/64 = 32/64bytes
  352. uint8_t Reserved : 1;// 7 0 R/W Only 0 allowed
  353. }bits;
  354. }rx_pw_p4_tu;
  355. // 16 RX_PW_P5 - 00 - data pipe 5 中的 RX payload 的数据长度
  356. typedef union
  357. {
  358. uint8_t value;
  359. struct
  360. {
  361. uint8_t RX_PW_P5_LEN : 7;// 6:0 0000000 R/W data pipe 0 中的 RX payload 的数据长度
  362. // (1 到 32/64 字节)
  363. // 0:该 Pipe 未用
  364. // 1 = 1 byte
  365. // …
  366. // 32/64 = 32/64bytes
  367. uint8_t Reserved : 1;// 7 0 R/W Only 0 allowed
  368. }bits;
  369. }rx_pw_p5_tu;
  370. // 17 FIFO_STATUS - - - FIFO 状 态 寄 存 器 以 及 analog_data[5:4]/[1:0]
  371. typedef union
  372. {
  373. uint8_t value;
  374. struct
  375. {
  376. uint8_t RX_EMPTY : 1;// 0 1 R RX FIFO 空标志位
  377. // 1:RX FIFO 空
  378. // 0:RX FIFO 有数据
  379. uint8_t RX_FULL : 1;// 1 0 R RX FIFO 满标志位
  380. // 1:RX FIFO 满
  381. // 0:RX FIFO 可用
  382. uint8_t ANADATA : 1;// 2 0 R analog_data[5]或analog_data[0],
  383. // 由 DATAOUT_SEL 选择,
  384. // 默认输出 analog_data5
  385. uint8_t ANADATA2 : 1;// 3 0 R analog_data[4]或analog_data[1],
  386. // 由 DATAOUT_SEL 选择,
  387. // 默认输出 analog_data4
  388. uint8_t TX_EMPTY : 1;// : 1;// 4 1 R TX FIFO 空标志位
  389. // 1:TX FIFO 空
  390. // 0:TX FIFO 有数据
  391. uint8_t TX_FULL : 1;// 5 0 R TX FIFO 满标志位
  392. // 1:TX FIFO 满
  393. // 0:TX FIFO 可用
  394. uint8_t TX_REUSE : 1;// 6 0 R 调用上一帧数据发送的指示位
  395. // 在使用 REUSE_TX_PL 命令后,该位为
  396. // 1,重传上一次发送中最后一帧数据。该
  397. // 位可以由命令 W_TX_PAYLOAD 、W_TX_PAYLOAD_NOACK : 1;// 、 DEACTIVATE、FLUSH TX 进行复位操作。
  398. uint8_t reserved : 1;// 7 0 R N/A
  399. }bits;
  400. }fifo_status_tu;
  401. // 18 RF_CAL3 39:0 9602A81000 - 补充射频寄存器
  402. // (一般使用默认值)
  403. typedef struct
  404. {
  405. uint8_t value[5];
  406. }rf_cal3_ts;
  407. // 19 DEMOD_CAL 39:0 8B7449DC01
  408. // - 调制解调参数寄存器
  409. // (可由方案需要来配置)
  410. typedef struct
  411. {
  412. uint8_t value[5];
  413. }demo_cal1_ts;
  414. // 1A RF_CAL2 39:0 F608DDFECB
  415. // - 补充射频寄存器
  416. // (一般使用默认值)
  417. typedef struct
  418. {
  419. uint8_t value[5];
  420. }rf_cal2_ts;
  421. // 1B DEM_CAL2 31:0 0400E70B - 补充解调参数寄存器
  422. // (一般使用默认值)
  423. typedef struct
  424. {
  425. uint8_t value[5];
  426. }demo_cal2_ts;
  427. // 1C DYNPD - 00 - 动态 PAYLOAD 长度使能
  428. typedef union
  429. {
  430. uint8_t value;
  431. struct
  432. {
  433. uint8_t DPL_P0 : 1;// 0 0 R/W 使能 PIPE 0 动态 PAYLOAD 长度(需要 EN_DPL 和 ENAA_P0)
  434. uint8_t DPL_P1 : 1;// 1 0 R/W 使能 PIPE 1 动态 PAYLOAD 长度(需要 EN_DPL 和 ENAA_P1)
  435. uint8_t DPL_P2 : 1;// 2 0 R/W 使能 PIPE 2 动态 PAYLOAD 长度(需要 EN_DPL 和 ENAA_P2)
  436. uint8_t DPL_P3 : 1;// 3 0 R/W 使能 PIPE 3 动态 PAYLOAD 长度(需要 EN_DPL 和 ENAA_P3)
  437. uint8_t DPL_P4 : 1;// 4 0 R/W 使能 PIPE 4 动态 PAYLOAD 长度(需要 EN_DPL 和 ENAA_P4)
  438. uint8_t DPL_P5 : 1;// 5 0 R/W 使能 PIPE 5 动态 PAYLOAD 长度(需要 EN_DPL 和 ENAA_P5)
  439. uint8_t Reserved : 2;// 7:6 00 R/W Only 00 allowed
  440. }bits;
  441. }dyn_payload_tu;
  442. // 1D FEATURE 7:0 00 R/W 特征寄存器
  443. typedef union
  444. {
  445. uint8_t value;
  446. struct
  447. {
  448. uint8_t EN_NO_ACK : 1;// 0 0 R/W 使能W_TX_PAYLOAD_NOACK 命令
  449. uint8_t EN_ACK_PAY : 1;// 1 0 R/W 使能 ACK 带 PAYLOAD
  450. uint8_t EN_DPL : 1;// 2 0 R/W 使能动态 PAYLOAD 长度
  451. uint8_t DATA_LEN_SEL : 2;// 4:3 00 R/W 数据长度选择
  452. // 11:64byte(512bit)模式
  453. // 00:32byte(256bit)模式
  454. uint8_t CE_SEL : 1;// 5 0 R/W 使能 CE 用命令方式开启
  455. // 0:CE 由 CE PIN 控制
  456. // 1:CE 由命令方式控制
  457. uint8_t MUX_PA_IRQ : 1;// 6 0 R/W 选择 IRQ 信号输出还是 EN_PA 信号输出到 PIN
  458. // 0:IRQ 信号输出到 PIN
  459. // 1:EN_PA 信号输出到 PIN
  460. uint8_t Reserved : 1;// 7 0 R/W Only 00 allowed
  461. }bits;
  462. }feature_tu;
  463. // 1E RF_CAL 39:0 48DFFDFB10 R/W 射频参数寄存器
  464. // (可由方案需要来配置)
  465. typedef struct
  466. {
  467. uint8_t value[5];
  468. // struct
  469. // {
  470. // uint8_t HL_SEL : 1;// 0 0 R/W PLL 除 2 或除 3 设置
  471. // // 0:除 2
  472. // // 1:除 3
  473. // uint8_t TST_TEMP : 1;// 1 0 R/W 温度敏感模块使能
  474. // // 0:使能
  475. // // 1:不使能
  476. // uint8_t LS_SEL : 1;// 2 0 R/W 锁相环除 4 或除 6 输出设置
  477. // // 1:除 6
  478. // // 0:除 4
  479. // uint8_t FC_0 : 1;// 3 0 R/W FC 最低位
  480. // uint8_t HS_SEL : 1;// 4 1 R/W PLL 除 2 输出设置
  481. // // HS_SEL LS_SEL=10:高频输出
  482. // // HS_SEL LS_SEL=01:低频输出
  483. // uint8_t HI_LO_SET : 1;// 5 0 R/W 接收高低本振设置
  484. // // 1:高本振
  485. // // 0:低本振
  486. // uint8_t VCO_IB : 3;// 8:6 100 R/W 锁相环 VCO 电流设置
  487. // // 111:高电流
  488. // // 000:低电流
  489. // uint8_t PA1_BC : 2;// 10:9 01 R/W 发射驱动级 PA 电流设置
  490. // // 11:高电流
  491. // // 00:低电流
  492. // uint8_t PA1_LVL : 6;// 16:11 111111 R/W 发射驱动级 PA 输出幅度设置
  493. // // 111111:最大幅度输出
  494. // // 000000:最小幅度输出
  495. // uint8_t PA2_BC : 2;// 18:17 10 R/W 发射输出级 PA 电流设置
  496. // // 11:高电流
  497. // // 00:低电流
  498. // uint8_t PA2_LVL : 6;// 24:19 111111 R/W 发射输出级 PA 输出幅度设置
  499. // // 11111:最大幅度输出
  500. // // 00000:最小幅度输出
  501. // uint8_t LNA_GC : 2;// 26:25 11 R/W LNA 增益选择
  502. // // 11:最大增益
  503. // // 00:最小增益
  504. // uint8_t LNA_BC : 2;// 28:27 11 R/W LNA 电流设置
  505. // // 11:高电流
  506. // // 00:低电流
  507. // uint8_t LO_PH_BC : 1;// 29 0 R/W LO 驱动器电流选择
  508. // // 1:低电流
  509. // // 0:高电流
  510. // uint8_t MIXL_GC_CTR : 1;// 30 1 R/W MIX 增益设置
  511. // // 1:高增益
  512. // // 0:低增益
  513. // uint8_t CTL_BW : 3;// 33:31 001 R/W 滤波器带宽控制:
  514. // // 40kbps:000;
  515. // // 80kbps:001;
  516. // // 200kbps:011;
  517. // // 400kbps:111;
  518. // uint8_t GC_BUF : 2;// 35:34 10 R/W 滤波器模块 3 增益设置
  519. // // 10:高增益
  520. // // 01:低增益
  521. // uint8_t PD_RSSI : 1;// 36 0 R/W RSSI 功能使能
  522. // // 1:使能
  523. // // 0:不使能
  524. // uint8_t RSSI_RES : 2;// 38:37 10 R/W RSSI 的信号增益选择位
  525. // // 00:最小增益
  526. // // 11:最大增益
  527. // uint8_t RESERVED : 1;// 39 1 R/W N/A
  528. // }bits;
  529. }rf_cal1_ts;
  530. // 1F BB_CAL 39:0 041F671C09 R/W 数字基带参数寄存器
  531. // (一般使用默认值)
  532. typedef struct
  533. {
  534. uint8_t value[5];
  535. // struct
  536. // {
  537. // uint8_t RX_ACK_TIME : 6;// 5:0 001001 R/W PTX 转为接收模式后等待 ACK 的最长
  538. // // 时间,超出该时间则认为本次传输失败:
  539. // // 400Kbps 模式下的时间计算:
  540. // // RX_ACK_TIME×40+37us,默认 397us,
  541. // // 37us~2557us
  542. // // 200Kbps 模式下的时间计算:
  543. // // RX_ACK_TIME×80+77us,默认 797us,
  544. // // 77us~5117us
  545. // // 80Kbps 模式下的时间计算:
  546. // // RX_ACK_TIME×160+157,默认 1597us,
  547. // // 157us~10237us
  548. // // 40Kbps 模式下的时间计算:
  549. // // RX_ACK_TIME×320+317,默认 3197us,
  550. // // 317us~20477us
  551. // uint8_t RX_SETUP_TIME : 5;// 10:6 10000 R/W RX 射频通路锁相环稳定时间,时间长度
  552. // // 计算:
  553. // // RX_SETUP_TIME×20,单位为 us,默认
  554. // // 320us,0us~620us
  555. // uint8_t TX_SETUP_TIME : 5;// 15:11 00011 R/W 发射 PA 使能到锁相环开环的时间间隔,
  556. // // 时间长度计算:
  557. // // TX_SETUP_TIME×20,单位为 us,默认
  558. // // 60us,0us~620us
  559. // uint8_t EX_PA_TIME : 5;// 20:16 00111 R/W 发射锁相环使能到 PA 使能的时间间隔,
  560. // // 时间长度计算:
  561. // // EX_PA_TIMEx20,单位为 us
  562. // // 默认 140us,0us~620us
  563. // uint8_t TRX_TIME : 3;// 23:21 011 R/W 锁相环开环到开始发射数据的时间间隔,时间长度计算:
  564. // // TRX_TIMEx10+2.5,单位 us
  565. // // 默认 32.5us, 2.5us~72.5us
  566. // uint8_t DAC_BASAL : 6;// 29:24 011111 R/W 预发送阶段的 DAC 数据输入的初始值
  567. // uint8_t Reserved : 1;// 30 0 R/W N/A
  568. // uint8_t INVERTER : 1;// 31 0 R/W 进入 RX_block 前是否取反 RX 通路数据
  569. // // 1:取反
  570. // // 0:保持不变
  571. // uint8_t ldo_src : 1;// 32 0 R/W 1 :STB2 状态下 LDO_EN 控制线屏蔽LDO 操作;
  572. // // 0 :STB2 状态下 LDO_EN 控制线 LDO
  573. // // 特性受状态机操.
  574. // uint8_t CE_JUST_TIME : 7;// 39:33 0000010 R/W 默认 10us,fast_ mode 下如果不想修改PRX 的 pth ,
  575. // // 可 适 当 加 大 PTX 的
  576. // // CE_JUST_ TIME
  577. // // 时间长度计算:
  578. // // CE_JUST_TIME x 5,单位 us
  579. // // 最小值:0us
  580. // // 最大值:635us
  581. // }bits;
  582. }rf_bb_cal_ts;
  583. #endif
  584. /****************************************end of file********************************************/