ll_aon_rf.h
Go to the documentation of this file.
1 /**
2  ****************************************************************************************
3  *
4  * @file ll_aon_rf.h
5  * @author BLE Driver Team
6  * @brief Header file containing functions prototypes of AON RF LL library.
7  *
8  ****************************************************************************************
9  * @attention
10  #####Copyright (c) 2019 GOODIX
11  All rights reserved.
12 
13  Redistribution and use in source and binary forms, with or without
14  modification, are permitted provided that the following conditions are met:
15  * Redistributions of source code must retain the above copyright
16  notice, this list of conditions and the following disclaimer.
17  * Redistributions in binary form must reproduce the above copyright
18  notice, this list of conditions and the following disclaimer in the
19  documentation and/or other materials provided with the distribution.
20  * Neither the name of GOODIX nor the names of its contributors may be used
21  to endorse or promote products derived from this software without
22  specific prior written permission.
23 
24  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27  ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
28  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34  POSSIBILITY OF SUCH DAMAGE.
35  ****************************************************************************************
36  */
37 
38 /** @addtogroup PERIPHERAL Peripheral Driver
39  * @{
40  */
41 
42 /** @addtogroup LL_DRIVER LL Driver
43  * @{
44  */
45 
46 /** @defgroup LL_AON_RF AON RF Module Driver
47  * @brief AON_RF LL module driver.
48  * @{
49  */
50 
51 /* Define to prevent recursive inclusion -------------------------------------*/
52 #ifndef _LL_AON_RF_H_
53 #define _LL_AON_RF_H_
54 
55 #ifdef __cplusplus
56 extern "C" {
57 #endif
58 
59 /* Includes ------------------------------------------------------------------*/
60 #include "hal.h"
61 
62 /** @defgroup AON_PMU_LL_DRIVER_FUNCTIONS Functions
63  * @{
64  */
65 
66 /**
67  * @brief Enable the test mux 0 tri state
68  *
69  * Register|BitsName
70  * --------|--------
71  * RF5 | TEST_MUX_EN
72  *
73  */
74 __STATIC_INLINE void ll_aon_rf_enable_test_mux(void)
75 {
76  SET_BITS(AON_RF->RF5, AON_RF_RF5_TEST_MUX_EN);
77 }
78 
79 /**
80  * @brief Disable the test mux 0 tri state
81  *
82  * Register|BitsName
83  * --------|--------
84  * RF5 | TEST_MUX_EN
85  *
86  */
87 __STATIC_INLINE void ll_aon_rf_disable_test_mux(void)
88 {
89  CLEAR_BITS(AON_RF->RF5, AON_RF_RF5_TEST_MUX_EN);
90 }
91 
92 /**
93  * @brief Enable the cpll reset
94  *
95  * Register|BitsName
96  * --------|--------
97  * RF6 | CPLL_CP_EN
98  *
99  */
100 __STATIC_INLINE void ll_aon_rf_enable_cpll_cp_reset(void)
101 {
102  SET_BITS(AON_RF->RF6, AON_RF_RF6_CPLL_CP_EN);
103 }
104 
105 /**
106  * @brief Disable the cpll reset
107  *
108  * Register|BitsName
109  * --------|--------
110  * RF6 | CPLL_CP_EN
111  *
112  */
113 __STATIC_INLINE void ll_aon_rf_disable_cpll_cp_reset(void)
114 {
115  CLEAR_BITS(AON_RF->RF6, AON_RF_RF6_CPLL_CP_EN);
116 }
117 
118 /**
119  * @brief Enable the cpll drift detection
120  *
121  * Register|BitsName
122  * --------|--------
123  * RF6 | PLL_LOCK_DET_EN
124  *
125  */
126 __STATIC_INLINE void ll_aon_rf_enable_cpll_drift_detection(void)
127 {
128  SET_BITS(AON_RF->RF6, AON_RF_RF6_PLL_LOCK_DET_EN);
129 }
130 
131 /**
132  * @brief Disable the cpll drift detection
133  *
134  * Register|BitsName
135  * --------|--------
136  * RF6 | PLL_LOCK_DET_EN
137  *
138  */
139 __STATIC_INLINE void ll_aon_rf_disable_cpll_drift_detection(void)
140 {
141  CLEAR_BITS(AON_RF->RF6, AON_RF_RF6_PLL_LOCK_DET_EN);
142 }
143 
144 /**
145  * @brief Set the cpll m div,Pre division before CP (00- no division / 11 divide by 16).
146  *
147  * Register|BitsName
148  * --------|--------
149  * RF6 | CPLL_M_DIV_CTRL
150  *
151  * @param value: The cpll m div value.
152  *
153  */
154 __STATIC_INLINE void ll_aon_rf_set_cpll_m_div(uint32_t value)
155 {
156  MODIFY_REG(AON_RF->RF6, AON_RF_RF6_CPLL_M_DIV_CTRL, (value << AON_RF_RF6_CPLL_M_DIV_CTRL_Pos));
157 }
158 
159 /**
160  * @brief Set the cpll drift detection.
161  *
162  * Register|BitsName
163  * --------|--------
164  * RF7 | L_H_THRESHOLD
165  *
166  * @param l_threshold: L Threshold.
167  * @param h_threshold: H Threshold.
168  *
169  */
170 __STATIC_INLINE void ll_aon_rf_set_threshold(uint32_t l_threshold, uint32_t h_threshold)
171 {
172  MODIFY_REG(AON_RF->RF7, AON_RF_RF7_L_H_THRESHOLD, (((h_threshold << 2) | l_threshold) << AON_RF_RF7_L_H_THRESHOLD_Pos));
173 }
174 
175 
176 /**
177  * @brief Set XO core current programmability.
178  *
179  * Register|BitsName
180  * --------|--------
181  * RF8 | XO_IBIAS_CTRL_4_0
182  *
183  * @param hi_value: hi value
184  * @param lo_value: lo value
185  * @retval None
186  *
187  */
188 __STATIC_INLINE void ll_aon_rf_set_xo_ibias(uint32_t hi_value,uint32_t lo_value)
189 {
190  MODIFY_REG(AON_RF->RF_XO_BIAS_VAL, AON_RF_XO_BIAS_HI, (hi_value << AON_RF_XO_BIAS_HI_Pos));
191  MODIFY_REG(AON_RF->RF_XO_BIAS_VAL, AON_RF_XO_BIAS_LO, (lo_value << AON_RF_XO_BIAS_LO_Pos));
192 }
193 
194 /**
195  * @brief Set the RF_REG9
196  *
197  * Register|BitsName
198  * --------|--------
199  * RF9 | ALL
200  *
201  * @param value: The RF_REG9 value.
202  *
203  */
204 __STATIC_INLINE void ll_aon_rf_set_rf_reg9(uint32_t value)
205 {
206  WRITE_REG(AON_RF->RF9, value);
207 }
208 
209 /**
210  * @brief Get the RF_REG9
211  *
212  * Register|BitsName
213  * --------|--------
214  * RF9 | ALL
215  *
216  * @retval The RF_REG9 value.
217  *
218  */
219 __STATIC_INLINE uint32_t ll_aon_rf_get_rf_reg9(void)
220 {
221  return READ_REG(AON_RF->RF9);
222 }
223 
224 
225 /**
226  * @brief Set the xo cap value,cload programmability from 50fF to 26pF on each side.
227  *
228  * Register|BitsName
229  * --------|--------
230  * RF9 | XO_CAP
231  *
232  * @param value: The xo cap value.
233  *
234  */
235 __STATIC_INLINE void ll_aon_rf_set_xo_cap(uint32_t value)
236 {
237  MODIFY_REG(AON_RF->RF9, AON_RF_RF9_XO_CAP_CTRL, (value << AON_RF_RF9_XO_CAP_CTRL_Pos));
238 }
239 
240 /**
241  * @brief Get the cpll crscde
242  *
243  * Register|BitsName
244  * --------|--------
245  * RF_RD_REG_0 | CPLL_CRSCDE
246  *
247  * @retval cpll crscde.
248  *
249  */
250 __STATIC_INLINE uint32_t ll_aon_rf_get_cpll_crscde(void)
251 {
252  return (READ_BITS(AON_RF->RF_RD_REG_0, AON_RF_RF_RD_REG_0_CPLL_CRSCDE) >> AON_RF_RF_RD_REG_0_CPLL_CRSCDE_Pos);
253 }
254 /**
255  * @brief Set SU enable.
256  *
257  * Register|BitsName
258  * --------|--------
259  * RF8 | SU_ENABLE
260  *
261  *
262  */
263 __STATIC_INLINE void ll_aon_rf_set_su_enable(void)
264 {
265  SET_BITS(AON_RF->RF8, AON_RF_RF8_SU_EN | AON_RF_RF8_SU_NOISE_VCO_EN | AON_RF_RF8_SU_GM_IBOOT_EN);
266 }
267 /**
268  * @brief Set cpll drift irq enable.
269  *
270  * Register|BitsName
271  * --------|--------
272  * CPLL_IRQ_CFG | MCU_SUB_CPLL_IRQ_CFG_DRIFT_IRQ_EN
273  *
274  *
275  */
276 __STATIC_INLINE void ll_mcu_set_cpll_drift_irq_enable(void)
277 {
278  SET_BITS(MCU_SUB->CPLL_IRQ_CFG, MCU_SUB_CPLL_IRQ_CFG_DRIFT_IRQ_EN);
279 }
280 /**
281  * @brief Set cpll drift irq disable.
282  *
283  * Register|BitsName
284  * --------|--------
285  * CPLL_IRQ_CFG | MCU_SUB_CPLL_IRQ_CFG_DRIFT_IRQ_EN
286  *
287  *
288  */
289 __STATIC_INLINE void ll_mcu_set_cpll_drift_irq_disable(void)
290 {
291  CLEAR_BITS(MCU_SUB->CPLL_IRQ_CFG, MCU_SUB_CPLL_IRQ_CFG_DRIFT_IRQ_EN);
292 }
293 
294 /** @} */
295 
296 #ifdef __cplusplus
297 }
298 #endif
299 
300 #endif
301 
302 /** @} */
303 /** @} */
304 /** @} */
305 
ll_aon_rf_enable_test_mux
__STATIC_INLINE void ll_aon_rf_enable_test_mux(void)
Enable the test mux 0 tri state.
Definition: ll_aon_rf.h:74
ll_aon_rf_set_rf_reg9
__STATIC_INLINE void ll_aon_rf_set_rf_reg9(uint32_t value)
Set the RF_REG9.
Definition: ll_aon_rf.h:204
ll_aon_rf_enable_cpll_drift_detection
__STATIC_INLINE void ll_aon_rf_enable_cpll_drift_detection(void)
Enable the cpll drift detection.
Definition: ll_aon_rf.h:126
hal.h
This file contains all the functions prototypes for the HAL module driver.
ll_mcu_set_cpll_drift_irq_disable
__STATIC_INLINE void ll_mcu_set_cpll_drift_irq_disable(void)
Set cpll drift irq disable.
Definition: ll_aon_rf.h:289
ll_aon_rf_disable_test_mux
__STATIC_INLINE void ll_aon_rf_disable_test_mux(void)
Disable the test mux 0 tri state.
Definition: ll_aon_rf.h:87
ll_aon_rf_enable_cpll_cp_reset
__STATIC_INLINE void ll_aon_rf_enable_cpll_cp_reset(void)
Enable the cpll reset.
Definition: ll_aon_rf.h:100
ll_aon_rf_set_xo_ibias
__STATIC_INLINE void ll_aon_rf_set_xo_ibias(uint32_t hi_value, uint32_t lo_value)
Set XO core current programmability.
Definition: ll_aon_rf.h:188
ll_aon_rf_set_cpll_m_div
__STATIC_INLINE void ll_aon_rf_set_cpll_m_div(uint32_t value)
Set the cpll m div,Pre division before CP (00- no division / 11 divide by 16).
Definition: ll_aon_rf.h:154
ll_aon_rf_get_cpll_crscde
__STATIC_INLINE uint32_t ll_aon_rf_get_cpll_crscde(void)
Get the cpll crscde.
Definition: ll_aon_rf.h:250
ll_aon_rf_set_su_enable
__STATIC_INLINE void ll_aon_rf_set_su_enable(void)
Set SU enable.
Definition: ll_aon_rf.h:263
ll_aon_rf_disable_cpll_drift_detection
__STATIC_INLINE void ll_aon_rf_disable_cpll_drift_detection(void)
Disable the cpll drift detection.
Definition: ll_aon_rf.h:139
ll_aon_rf_set_threshold
__STATIC_INLINE void ll_aon_rf_set_threshold(uint32_t l_threshold, uint32_t h_threshold)
Set the cpll drift detection.
Definition: ll_aon_rf.h:170
ll_aon_rf_get_rf_reg9
__STATIC_INLINE uint32_t ll_aon_rf_get_rf_reg9(void)
Get the RF_REG9.
Definition: ll_aon_rf.h:219
ll_aon_rf_set_xo_cap
__STATIC_INLINE void ll_aon_rf_set_xo_cap(uint32_t value)
Set the xo cap value,cload programmability from 50fF to 26pF on each side.
Definition: ll_aon_rf.h:235
ll_mcu_set_cpll_drift_irq_enable
__STATIC_INLINE void ll_mcu_set_cpll_drift_irq_enable(void)
Set cpll drift irq enable.
Definition: ll_aon_rf.h:276
ll_aon_rf_disable_cpll_cp_reset
__STATIC_INLINE void ll_aon_rf_disable_cpll_cp_reset(void)
Disable the cpll reset.
Definition: ll_aon_rf.h:113