uwb2  2.1.0.0
uwb2.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** Copyright (C) 2020 MikroElektronika d.o.o.
3 ** Contact: https://www.mikroe.com/contact
4 **
5 ** Permission is hereby granted, free of charge, to any person obtaining a copy
6 ** of this software and associated documentation files (the "Software"), to deal
7 ** in the Software without restriction, including without limitation the rights
8 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 ** copies of the Software, and to permit persons to whom the Software is
10 ** furnished to do so, subject to the following conditions:
11 ** The above copyright notice and this permission notice shall be
12 ** included in all copies or substantial portions of the Software.
13 **
14 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 ** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19 ** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 ** USE OR OTHER DEALINGS IN THE SOFTWARE.
21 ****************************************************************************/
22 
28 #ifndef UWB2_H
29 #define UWB2_H
30 
31 #ifdef __cplusplus
32 extern "C"{
33 #endif
34 
35 #include "mikrosdk_version.h"
36 
37 #ifdef __GNUC__
38 #if mikroSDK_GET_VERSION < 20800ul
39 #include "rcu_delays.h"
40 #else
41 #include "delays.h"
42 #endif
43 #endif
44 
45 #include "drv_digital_out.h"
46 #include "drv_digital_in.h"
47 #include "drv_spi_master.h"
48 #include "spi_specifics.h"
49 
70 #define UWB2_CMD_TXRXOFF 0x00
71 #define UWB2_CMD_TX 0x01
72 #define UWB2_CMD_RX 0x02
73 #define UWB2_CMD_DTX 0x03
74 #define UWB2_CMD_DRX 0x04
75 #define UWB2_CMD_DTX_TS 0x05
76 #define UWB2_CMD_DRX_TS 0x06
77 #define UWB2_CMD_DTX_RS 0x07
78 #define UWB2_CMD_DRX_RS 0x08
79 #define UWB2_CMD_DTX_REF 0x09
80 #define UWB2_CMD_DRX_REF 0x0A
81 #define UWB2_CMD_CCA_TX 0x0B
82 #define UWB2_CMD_TX_W4R 0x0C
83 #define UWB2_CMD_DTX_W4R 0x0D
84 #define UWB2_CMD_DTX_TS_W4R 0x0E
85 #define UWB2_CMD_DTX_RS_W4R 0x0F
86 #define UWB2_CMD_DTX_REF_W4R 0x10
87 #define UWB2_CMD_CCA_TX_W4R 0x11
88 #define UWB2_CMD_CLR_IRQS 0x12
89 #define UWB2_CMD_DB_TOGGLE 0x13
90 
97 #define UWB2_REG_DEV_ID 0x0000u
98 #define UWB2_REG_EUI_64 0x0004u
99 #define UWB2_REG_PANADR 0x000Cu
100 #define UWB2_REG_SYS_CFG 0x0010u
101 #define UWB2_REG_FF_CFG 0x0014u
102 #define UWB2_REG_SPI_RD_CRC 0x0018u
103 #define UWB2_REG_SYS_TIME 0x001Cu
104 #define UWB2_REG_TX_FCTRL_LO 0x0024u
105 #define UWB2_REG_TX_FCTRL_HI 0x0028u
106 #define UWB2_REG_DX_TIME 0x002Cu
107 #define UWB2_REG_DREF_TIME 0x0030u
108 #define UWB2_REG_RX_FWTO 0x0034u
109 #define UWB2_REG_SYS_CTRL 0x0038u
110 #define UWB2_REG_SYS_ENABLE_LO 0x003Cu
111 #define UWB2_REG_SYS_ENABLE_HI 0x0040u
112 #define UWB2_REG_SYS_STATUS_LO 0x0044u
113 #define UWB2_REG_SYS_STATUS_HI 0x0048u
114 #define UWB2_REG_RX_FINFO 0x004Cu
115 #define UWB2_REG_RX_TIME 0x0064u
116 #define UWB2_REG_TX_TIME 0x0074u
117 #define UWB2_REG_TX_RAWST 0x0100u
118 #define UWB2_REG_TX_ANTD 0x0104u
119 #define UWB2_REG_ACK_RESP_T 0x0108u
120 #define UWB2_REG_TX_POWER 0x010Cu
121 #define UWB2_REG_CHAN_CTRL 0x0114u
122 #define UWB2_REG_LE_PEND_01 0x0118u
123 #define UWB2_REG_LE_PEND_23 0x011Cu
124 #define UWB2_REG_SPI_COLLISION 0x0120u
125 #define UWB2_REG_RDB_STATUS 0x0124u
126 #define UWB2_REG_RDB_DIAG 0x0128u
127 #define UWB2_REG_AES_CFG 0x0130u
128 #define UWB2_REG_AES_IV0 0x0134u
129 #define UWB2_REG_AES_IV1 0x0138u
130 #define UWB2_REG_AES_IV2 0x013Cu
131 #define UWB2_REG_AES_IV3 0x0140u
132 #define UWB2_REG_DMA_CFG 0x0144u
133 #define UWB2_REG_AES_START 0x014Cu
134 #define UWB2_REG_AES_STS 0x0150u
135 #define UWB2_REG_AES_KEY 0x0154u
136 #define UWB2_REG_STS_CFG 0x0200u
137 #define UWB2_REG_STS_CTRL 0x0204u
138 #define UWB2_REG_STS_STS 0x0208u
139 #define UWB2_REG_STS_KEY 0x020Cu
140 #define UWB2_REG_STS_IV 0x021Cu
141 #define UWB2_REG_DGC_CFG 0x0318u
142 #define UWB2_REG_DGC_CFG_0 0x031Cu
143 #define UWB2_REG_DGC_CFG_1 0x0320u
144 #define UWB2_REG_DGC_LUT_0 0x0338u
145 #define UWB2_REG_DGC_LUT_1 0x033Cu
146 #define UWB2_REG_DGC_LUT_2 0x0340u
147 #define UWB2_REG_DGC_LUT_3 0x0344u
148 #define UWB2_REG_DGC_LUT_4 0x0348u
149 #define UWB2_REG_DGC_LUT_5 0x034Cu
150 #define UWB2_REG_DGC_LUT_6 0x0350u
151 #define UWB2_REG_DGC_DBG 0x0360u
152 #define UWB2_REG_EC_CTRL 0x0400u
153 #define UWB2_REG_RX_CAL 0x040Cu
154 #define UWB2_REG_RX_CAL_RESI 0x0414u
155 #define UWB2_REG_RX_CAL_RESQ 0x041Cu
156 #define UWB2_REG_RX_CAL_STS 0x0420u
157 #define UWB2_REG_GPIO_MODE 0x0500u
158 #define UWB2_REG_GPIO_PULL_EN 0x0504u
159 #define UWB2_REG_GPIO_DIR 0x0508u
160 #define UWB2_REG_GPIO_OUT 0x050Cu
161 #define UWB2_REG_GPIO_IRQE 0x0510u
162 #define UWB2_REG_GPIO_ISTS 0x0514u
163 #define UWB2_REG_GPIO_ISEN 0x0518u
164 #define UWB2_REG_GPIO_IMODE 0x051Cu
165 #define UWB2_REG_GPIO_IBES 0x0520u
166 #define UWB2_REG_GPIO_ICLR 0x0524u
167 #define UWB2_REG_GPIO_IDBE 0x0528u
168 #define UWB2_REG_GPIO_RAW 0x052Cu
169 #define UWB2_REG_DTUNE_0 0x0600u
170 #define UWB2_REG_RX_SFD_TOC 0x0602u
171 #define UWB2_REG_PRE_TOC 0x0604u
172 #define UWB2_REG_DTUNE_3 0x060Cu
173 #define UWB2_REG_DTUNE_4 0x0610u
174 #define UWB2_REG_DTUNE_5 0x0614u
175 #define UWB2_REG_DRX_CAR_INT 0x0629u
176 #define UWB2_REG_RF_ENABLE 0x0700u
177 #define UWB2_REG_RF_CTRL_MASK 0x0704u
178 #define UWB2_REG_RF_SWITCH 0x0714u
179 #define UWB2_REG_RF_TX_CTRL_1 0x071Au
180 #define UWB2_REG_RF_TX_CTRL_2 0x071Cu
181 #define UWB2_REG_TX_TEST 0x0728u
182 #define UWB2_REG_SAR_TEST 0x0734u
183 #define UWB2_REG_LDO_TUNE_LO 0x0740u
184 #define UWB2_REG_LDO_TUNE_HI 0x0744u
185 #define UWB2_REG_LDO_CTRL 0x0748u
186 #define UWB2_REG_LDO_RLOAD 0x0751u
187 #define UWB2_REG_SAR_CTRL 0x0800u
188 #define UWB2_REG_SAR_STATUS 0x0804u
189 #define UWB2_REG_SAR_READING 0x0808u
190 #define UWB2_REG_SAR_WAKE_RD 0x080Cu
191 #define UWB2_REG_PGC_CTRL 0x0810u
192 #define UWB2_REG_PGC_STATUS 0x0814u
193 #define UWB2_REG_PG_TEST 0x0818u
194 #define UWB2_REG_PG_CAL_TARGET 0x081Cu
195 #define UWB2_REG_PLL_CFG 0x0900u
196 #define UWB2_REG_PLL_CC 0x0904u
197 #define UWB2_REG_PLL_CAL 0x0908u
198 #define UWB2_REG_XTAL 0x0914u
199 #define UWB2_REG_AON_DIG_CFG 0x0A00u
200 #define UWB2_REG_AON_CTRL 0x0A04u
201 #define UWB2_REG_AON_RDATA 0x0A08u
202 #define UWB2_REG_AON_ADDR 0x0A0Cu
203 #define UWB2_REG_AON_WDATA 0x0A10u
204 #define UWB2_REG_AON_CFG 0x0A14u
205 #define UWB2_REG_OTP_WDATA 0x0B00u
206 #define UWB2_REG_OTP_ADDR 0x0B04u
207 #define UWB2_REG_OTP_CFG 0x0B08u
208 #define UWB2_REG_OTP_STAT 0x0B0Cu
209 #define UWB2_REG_OTP_RDATA 0x0B10u
210 #define UWB2_REG_OTP_SRDATA 0x0B14u
211 #define UWB2_REG_IP_TS 0x0C00u
212 #define UWB2_REG_STS_TS 0x0C08u
213 #define UWB2_REG_STS1_TS 0x0C10u
214 #define UWB2_REG_TDOA 0x0C18u
215 #define UWB2_REG_PDOA 0x0C1Eu
216 #define UWB2_REG_CIA_DIAG_0 0x0C20u
217 #define UWB2_REG_IP_DIAG_0 0x0C28u
218 #define UWB2_REG_IP_DIAG_1 0x0C2Cu
219 #define UWB2_REG_IP_DIAG_2 0x0C30u
220 #define UWB2_REG_IP_DIAG_3 0x0C34u
221 #define UWB2_REG_IP_DIAG_4 0x0C38u
222 #define UWB2_REG_IP_DIAG_8 0x0C48u
223 #define UWB2_REG_IP_DIAG_12 0x0C58u
224 #define UWB2_REG_STS_DIAG_0 0x0C5Cu
225 #define UWB2_REG_STS_DIAG_1 0x0C60u
226 #define UWB2_REG_STS_DIAG_2 0x0C64u
227 #define UWB2_REG_STS_DIAG_3 0x0C68u
228 #define UWB2_REG_STS_DIAG_4 0x0D00u
229 #define UWB2_REG_STS_DIAG_8 0x0D10u
230 #define UWB2_REG_STS_DIAG_12 0x0D20u
231 #define UWB2_REG_STS1_DIAG_0 0x0D38u
232 #define UWB2_REG_STS1_DIAG_1 0x0D3Cu
233 #define UWB2_REG_STS1_DIAG_2 0x0D40u
234 #define UWB2_REG_STS1_DIAG_3 0x0D44u
235 #define UWB2_REG_STS1_DIAG_4 0x0D48u
236 #define UWB2_REG_STS1_DIAG_8 0x0D58u
237 #define UWB2_REG_STS1_DIAG_12 0x0D68u
238 #define UWB2_REG_CIA_CONF 0x0E00u
239 #define UWB2_REG_FP_CONF 0x0E04u
240 #define UWB2_REG_IP_CONF 0x0E0Cu
241 #define UWB2_REG_STS_CONF_0 0x0E12u
242 #define UWB2_REG_STS_CONF_1 0x0E16u
243 #define UWB2_REG_CIA_ADJUST 0x0E1Au
244 #define UWB2_REG_EVC_CTRL 0x0F00u
245 #define UWB2_REG_EVC_PHE 0x0F04u
246 #define UWB2_REG_EVC_RSE 0x0F06u
247 #define UWB2_REG_EVC_FCG 0x0F08u
248 #define UWB2_REG_EVC_FCE 0x0F0Au
249 #define UWB2_REG_EVC_FFR 0x0F0Cu
250 #define UWB2_REG_EVC_OVR 0x0F0Eu
251 #define UWB2_REG_EVC_STO 0x0F10u
252 #define UWB2_REG_EVC_PTO 0x0F12u
253 #define UWB2_REG_EVC_FWTO 0x0F14u
254 #define UWB2_REG_EVC_TXFS 0x0F16u
255 #define UWB2_REG_EVC_HPW 0x0F18u
256 #define UWB2_REG_EVC_SWCE 0x0F1Au
257 #define UWB2_REG_EVC_RES1 0x0F1Cu
258 #define UWB2_REG_DIAG_TMC 0x0F24u
259 #define UWB2_REG_EVC_CPQE 0x0F28u
260 #define UWB2_REG_EVC_VWARN 0x0F2Au
261 #define UWB2_REG_SPI_MODE 0x0F2Cu
262 #define UWB2_REG_SYS_STATE 0x0F30u
263 #define UWB2_REG_FCMD_STAT 0x0F3Cu
264 #define UWB2_REG_CTR_DBG 0x0F48u
265 #define UWB2_REG_SPICRCINIT 0x0F4Cu
266 #define UWB2_REG_SOFT_RST 0x1100u
267 #define UWB2_REG_CLK_CTRL 0x1104u
268 #define UWB2_REG_SEQ_CTRL 0x1108u
269 #define UWB2_REG_TXFSEQ 0x1112u
270 #define UWB2_REG_LED_CTRL 0x1116u
271 #define UWB2_REG_RX_SNIFF 0x111Au
272 #define UWB2_REG_BIAS_CTRL 0x111Fu
273 #define UWB2_REG_RX_BUFFER_0 0x1200u
274 #define UWB2_REG_RX_BUFFER_1 0x1300u
275 #define UWB2_REG_TX_BUFFER 0x1400u
276 #define UWB2_REG_ACC_MEM 0x1500u
277 #define UWB2_REG_SCRATCH_RAM 0x1600u
278 #define UWB2_REG_AES_KEY_1 0x1700u
279 #define UWB2_REG_AES_KEY_2 0x1710u
280 #define UWB2_REG_AES_KEY_3 0x1720u
281 #define UWB2_REG_AES_KEY_4 0x1730u
282 #define UWB2_REG_AES_KEY_5 0x1740u
283 #define UWB2_REG_AES_KEY_6 0x1750u
284 #define UWB2_REG_AES_KEY_7 0x1760u
285 #define UWB2_REG_AES_KEY_8 0x1770u
286 #define UWB2_REG_SET1_SET2 0x1800u
287 #define UWB2_REG_INDIRECT_PTR_A 0x1D00u
288 #define UWB2_REG_INDIRECT_PTR_B 0x1E00u
289 #define UWB2_REG_FINT_STAT 0x1F00u
290 #define UWB2_REG_PTR_ADDR_A 0x1F04u
291 #define UWB2_REG_PTR_OFFSET_A 0x1F08u
292 #define UWB2_REG_PTR_ADDR_B 0x1F0Cu
293 #define UWB2_REG_PTR_OFFSET_B 0x1F10u
294 
299 #define UWB2_OTP_ADR_EUID_LO 0x0000u
300 #define UWB2_OTP_ADR_EUID_HI 0x0001u
301 #define UWB2_OTP_ADR_AEUID_LO 0x0002u
302 #define UWB2_OTP_ADR_AEUID_HI 0x0003u
303 #define UWB2_OTP_ADR_LDOTUNE_LO 0x0004u
304 #define UWB2_OTP_ADR_LDOTUNE_HI 0x0005u
305 #define UWB2_OTP_ADR_PART_ID 0x0006u
306 #define UWB2_OTP_ADR_LOT_ID 0x0007u
307 #define UWB2_OTP_ADR_VBAT 0x0008u
308 #define UWB2_OTP_ADR_TEMP 0x0009u
309 #define UWB2_OTP_ADR_BIASTUNE 0x000Au
310 #define UWB2_OTP_ADR_ANTENNA_DELAY 0x000Bu
311 #define UWB2_OTP_ADR_AOA_ISO 0x000Cu
312 #define UWB2_OTP_ADR_WS_LOT_ID_LO 0x000Du
313 #define UWB2_OTP_ADR_WS_LOT_ID_HI 0x000Eu
314 #define UWB2_OTP_ADR_WS_LOC 0x000Fu
315 #define UWB2_OTP_ADR_XTAL_TRIM 0x001Eu
316 #define UWB2_OTP_ADR_OTP_REVISION 0x001Fu
317 #define UWB2_OTP_ADR_DGC_TUNE 0x0020u
318 #define UWB2_OTP_ADR_PLL_LOCK_CODE 0x0035u
319 #define UWB2_OTP_ADR_AES_KEY_START 0x0078u
320 #define UWB2_OTP_ADR_AES_KEY_END 0x007Fu
321  // uwb2_reg
323 
338 #define UWB2_SYS_CFG_FAST_AAT_MASK 0x00040000ul
339 #define UWB2_SYS_CFG_PDOA_MODE_MASK 0x00030000ul
340 #define UWB2_SYS_CFG_CP_SDC_SPC_MASK 0x0000B000ul
341 #define UWB2_SYS_CFG_AUTO_ACK_MASK 0x00000800ul
342 #define UWB2_SYS_CFG_RXAUTR_MASK 0x00000400ul
343 #define UWB2_SYS_CFG_RXWTOE_MASK 0x00000200ul
344 #define UWB2_SYS_CFG_CIA_STS_MASK 0x00000100ul
345 #define UWB2_SYS_CFG_CIA_IPATOV_MASK 0x00000080ul
346 #define UWB2_SYS_CFG_SPI_CRCEN_MASK 0x00000040ul
347 #define UWB2_SYS_CFG_PHR_6M8_MASK 0x00000020ul
348 #define UWB2_SYS_CFG_PHR_MODE_MASK 0x00000010ul
349 #define UWB2_SYS_CFG_DIS_DRXB_MASK 0x00000008ul
350 #define UWB2_SYS_CFG_DIS_FCE_MASK 0x00000004ul
351 #define UWB2_SYS_CFG_DIS_FCS_TX_MASK 0x00000002ul
352 #define UWB2_SYS_CFG_FFEN_MASK 0x00000001ul
353 
358 #define UWB2_TX_FCTRL_LO_TXB_OFFSET_MASK 0x03FF0000ul
359 #define UWB2_TX_FCTRL_LO_TXPSR_MASK 0x0000F000ul
360 #define UWB2_TX_FCTRL_LO_TR_MASK 0x00000800ul
361 #define UWB2_TX_FCTRL_LO_TX_BR_MASK 0x00000400ul
362 #define UWB2_TX_FCTRL_LO_TXFLEN_MASK 0x000003FFul
363 
368 #define UWB2_TX_FCTRL_HI_FINE_PLEN_MASK 0xFF00u
369 
374 #define UWB2_SYS_ENABLE_LO_ARFE_EN_MASK 0x20000000ul
375 #define UWB2_SYS_ENABLE_LO_CPERR_EN_MASK 0x10000000ul
376 #define UWB2_SYS_ENABLE_LO_HPDWARN_EN_MASK 0x08000000ul
377 #define UWB2_SYS_ENABLE_LO_RXSTO_EN_MASK 0x04000000ul
378 #define UWB2_SYS_ENABLE_LO_PLLHILO_EN_MASK 0x02000000ul
379 #define UWB2_SYS_ENABLE_LO_RCINIT_EN_MASK 0x01000000ul
380 #define UWB2_SYS_ENABLE_LO_SPIRDY_EN_MASK 0x00800000ul
381 #define UWB2_SYS_ENABLE_LO_RXPTO_EN_MASK 0x00200000ul
382 #define UWB2_SYS_ENABLE_LO_RXOVRR_EN_MASK 0x00100000ul
383 #define UWB2_SYS_ENABLE_LO_VWARN_EN_MASK 0x00080000ul
384 #define UWB2_SYS_ENABLE_LO_CIAERR_EN_MASK 0x00040000ul
385 #define UWB2_SYS_ENABLE_LO_RXFTO_EN_MASK 0x00020000ul
386 #define UWB2_SYS_ENABLE_LO_RXFSL_EN_MASK 0x00010000ul
387 #define UWB2_SYS_ENABLE_LO_RXFCE_EN_MASK 0x00008000ul
388 #define UWB2_SYS_ENABLE_LO_RXFCG_EN_MASK 0x00004000ul
389 #define UWB2_SYS_ENABLE_LO_RXFR_EN_MASK 0x00002000ul
390 #define UWB2_SYS_ENABLE_LO_RXPHE_EN_MASK 0x00001000ul
391 #define UWB2_SYS_ENABLE_LO_RXPHD_EN_MASK 0x00000800ul
392 #define UWB2_SYS_ENABLE_LO_CIADONE_EN_MASK 0x00000400ul
393 #define UWB2_SYS_ENABLE_LO_RXSFDD_EN_MASK 0x00000200ul
394 #define UWB2_SYS_ENABLE_LO_RXPRD_EN_MASK 0x00000100ul
395 #define UWB2_SYS_ENABLE_LO_TXFRS_EN_MASK 0x00000080ul
396 #define UWB2_SYS_ENABLE_LO_TXPHS_EN_MASK 0x00000040ul
397 #define UWB2_SYS_ENABLE_LO_TXPRS_EN_MASK 0x00000020ul
398 #define UWB2_SYS_ENABLE_LO_TXFRB_EN_MASK 0x00000010ul
399 #define UWB2_SYS_ENABLE_LO_AAT_EN_MASK 0x00000008ul
400 #define UWB2_SYS_ENABLE_LO_SPICRCE_EN_MASK 0x00000004ul
401 #define UWB2_SYS_ENABLE_LO_CPLOCK_EN_MASK 0x00000002ul
402 
407 #define UWB2_SYS_STATUS_LO_ARFE_MASK 0x20000000ul
408 #define UWB2_SYS_STATUS_LO_CPERR_MASK 0x10000000ul
409 #define UWB2_SYS_STATUS_LO_HPDWARN_MASK 0x08000000ul
410 #define UWB2_SYS_STATUS_LO_RXSTO_MASK 0x04000000ul
411 #define UWB2_SYS_STATUS_LO_PLLHILO_MASK 0x02000000ul
412 #define UWB2_SYS_STATUS_LO_RCINIT_MASK 0x01000000ul
413 #define UWB2_SYS_STATUS_LO_SPIRDY_MASK 0x00800000ul
414 #define UWB2_SYS_STATUS_LO_RXPTO_MASK 0x00200000ul
415 #define UWB2_SYS_STATUS_LO_RXOVRR_MASK 0x00100000ul
416 #define UWB2_SYS_STATUS_LO_VWARN_MASK 0x00080000ul
417 #define UWB2_SYS_STATUS_LO_CIAERR_MASK 0x00040000ul
418 #define UWB2_SYS_STATUS_LO_RXFTO_MASK 0x00020000ul
419 #define UWB2_SYS_STATUS_LO_RXFSL_MASK 0x00010000ul
420 #define UWB2_SYS_STATUS_LO_RXFCE_MASK 0x00008000ul
421 #define UWB2_SYS_STATUS_LO_RXFCG_MASK 0x00004000ul
422 #define UWB2_SYS_STATUS_LO_RXFR_MASK 0x00002000ul
423 #define UWB2_SYS_STATUS_LO_RXPHE_MASK 0x00001000ul
424 #define UWB2_SYS_STATUS_LO_RXPHD_MASK 0x00000800ul
425 #define UWB2_SYS_STATUS_LO_CIADONE_MASK 0x00000400ul
426 #define UWB2_SYS_STATUS_LO_RXSFDD_MASK 0x00000200ul
427 #define UWB2_SYS_STATUS_LO_RXPRD_MASK 0x00000100ul
428 #define UWB2_SYS_STATUS_LO_TXFRS_MASK 0x00000080ul
429 #define UWB2_SYS_STATUS_LO_TXPHS_MASK 0x00000040ul
430 #define UWB2_SYS_STATUS_LO_TXPRS_MASK 0x00000020ul
431 #define UWB2_SYS_STATUS_LO_TXFRB_MASK 0x00000010ul
432 #define UWB2_SYS_STATUS_LO_AAT_MASK 0x00000008ul
433 #define UWB2_SYS_STATUS_LO_SPICRCE_MASK 0x00000004ul
434 #define UWB2_SYS_STATUS_LO_CPLOCK_MASK 0x00000002ul
435 #define UWB2_SYS_STATUS_LO_IRQS_MASK 0x00000001ul
436 
441 #define UWB2_SYS_STATUS_HI_CCA_FAIL_MASK 0x1000u
442 #define UWB2_SYS_STATUS_HI_SPIERR_MASK 0x0800u
443 #define UWB2_SYS_STATUS_HI_SPI_UNF_MASK 0x0400u
444 #define UWB2_SYS_STATUS_HI_SPI_OVF_MASK 0x0200u
445 #define UWB2_SYS_STATUS_HI_CMD_ERR_MASK 0x0100u
446 #define UWB2_SYS_STATUS_HI_AER_ERR_MASK 0x0080u
447 #define UWB2_SYS_STATUS_HI_AES_DONE_MASK 0x0040u
448 #define UWB2_SYS_STATUS_HI_GPIOIRQ_MASK 0x0020u
449 #define UWB2_SYS_STATUS_HI_VT_DET_MASK 0x0010u
450 #define UWB2_SYS_STATUS_HI_RXPREJ_MASK 0x0002u
451 
456 #define UWB2_CHAN_CTRL_RX_PCODE_MASK 0x1F00u
457 #define UWB2_CHAN_CTRL_TX_PCODE_MASK 0x00F8u
458 #define UWB2_CHAN_CTRL_SFD_TYPE_IEEE_4A 0x0000u
459 #define UWB2_CHAN_CTRL_SFD_TYPE_DW_8 0x0002u
460 #define UWB2_CHAN_CTRL_SFD_TYPE_DW_16 0x0004u
461 #define UWB2_CHAN_CTRL_SFD_TYPE_IEEE_4Z 0x0006u
462 #define UWB2_CHAN_CTRL_SFD_TYPE_MASK 0x0006u
463 #define UWB2_CHAN_CTRL_RF_CHAN_MASK 0x0001u
464 
469 #define UWB2_RX_FINFO_RXPACC_MASK 0xFFF00000ul
470 #define UWB2_RX_FINFO_RXPSR_MASK 0x000C0000ul
471 #define UWB2_RX_FINFO_RXPRF_MASK 0x00030000ul
472 #define UWB2_RX_FINFO_RNG_MASK 0x00008000ul
473 #define UWB2_RX_FINFO_RXBR_MASK 0x00002000ul
474 #define UWB2_RX_FINFO_RXNSPL_MASK 0x00001800ul
475 #define UWB2_RX_FINFO_RXFLEN_MASK 0x000003FFul
476 
481 #define UWB2_STS_CFG_CPS_LEN_64 0x0007u
482 #define UWB2_STS_CFG_CPS_LEN_MASK 0x00FFu
483 #define UWB2_STS_CFG_RESERVED_BITS 0x1000u
484 
489 #define UWB2_RX_TUNE_DGC_CFG_THR_64_OPTIMISED 0x6400u
490 #define UWB2_RX_TUNE_DGC_CFG_THR_64_MASK 0x7E00u
491 #define UWB2_RX_TUNE_DGC_CFG_RX_TUNE_EN_MASK 0x0001u
492 #define UWB2_RX_TUNE_DGC_CFG_RESERVED_BITS 0x80F4u
493 #define UWB2_RX_TUNE_DGC_CFG_0 0x10000240ul
494 #define UWB2_RX_TUNE_DGC_CFG_1 0x1B6DA489ul
495 #define UWB2_RX_TUNE_DGC_LUT_0_CH5 0x0001C0FDul
496 #define UWB2_RX_TUNE_DGC_LUT_0_CH9 0x0002A8FEul
497 #define UWB2_RX_TUNE_DGC_LUT_1_CH5 0x0001C43Eul
498 #define UWB2_RX_TUNE_DGC_LUT_1_CH9 0x0002AC36ul
499 #define UWB2_RX_TUNE_DGC_LUT_2_CH5 0x0001C6BEul
500 #define UWB2_RX_TUNE_DGC_LUT_2_CH9 0x0002A5FEul
501 #define UWB2_RX_TUNE_DGC_LUT_3_CH5 0x0001C77Eul
502 #define UWB2_RX_TUNE_DGC_LUT_3_CH9 0x0002AF3Eul
503 #define UWB2_RX_TUNE_DGC_LUT_4_CH5 0x0001C736ul
504 #define UWB2_RX_TUNE_DGC_LUT_4_CH9 0x0002AF7Dul
505 #define UWB2_RX_TUNE_DGC_LUT_5_CH5 0x0001CFB5ul
506 #define UWB2_RX_TUNE_DGC_LUT_5_CH9 0x0002AFB5ul
507 #define UWB2_RX_TUNE_DGC_LUT_6_CH5 0x0001CFF5ul
508 #define UWB2_RX_TUNE_DGC_LUT_6_CH9 0x0002AFB5ul
509 
514 #define UWB2_RX_CAL_COMP_DLY_EN_READ 0x00010000ul
515 #define UWB2_RX_CAL_COMP_DLY_OPTIMAL 0x00020000ul
516 #define UWB2_RX_CAL_COMP_DLY_MASK 0x000F0000ul
517 #define UWB2_RX_CAL_CAL_EN_MASK 0x00000010ul
518 #define UWB2_RX_CAL_CAL_MODE_NORMAL 0x00000000ul
519 #define UWB2_RX_CAL_CAL_MODE_CALIBRATION 0x00000001ul
520 #define UWB2_RX_CAL_CAL_MODE_MASK 0x00000003ul
521 
526 #define UWB2_RX_CAL_STS_CALIBRATION_DONE 0x01
527 
532 #define UWB2_RX_CAL_RESI_CALIBRATION_FAILED 0x1FFFFFFFul
533 
538 #define UWB2_RX_CAL_RESQ_CALIBRATION_FAILED 0x1FFFFFFFul
539 
544 #define UWB2_GPIO_MODE_MSGP8_GPIO8 0x01000000ul
545 #define UWB2_GPIO_MODE_MSGP8_IRQ 0x00000000ul
546 #define UWB2_GPIO_MODE_MSGP8_MASK 0x07000000ul
547 #define UWB2_GPIO_MODE_MSGP7_GPIO7 0x00200000ul
548 #define UWB2_GPIO_MODE_MSGP7_SYNC 0x00000000ul
549 #define UWB2_GPIO_MODE_MSGP7_MASK 0x00E00000ul
550 #define UWB2_GPIO_MODE_MSGP6_EXTRXE 0x00040000ul
551 #define UWB2_GPIO_MODE_MSGP6_GPIO6 0x00000000ul
552 #define UWB2_GPIO_MODE_MSGP6_MASK 0x001C0000ul
553 #define UWB2_GPIO_MODE_MSGP5_EXTTXE 0x00008000ul
554 #define UWB2_GPIO_MODE_MSGP5_GPIO5 0x00000000ul
555 #define UWB2_GPIO_MODE_MSGP5_MASK 0x00038000ul
556 #define UWB2_GPIO_MODE_MSGP4_IRQ 0x00002000ul
557 #define UWB2_GPIO_MODE_MSGP4_EXTPA 0x00001000ul
558 #define UWB2_GPIO_MODE_MSGP4_GPIO4 0x00000000ul
559 #define UWB2_GPIO_MODE_MSGP4_MASK 0x00007000ul
560 #define UWB2_GPIO_MODE_MSGP3_PDOA_SW_3 0x00000400ul
561 #define UWB2_GPIO_MODE_MSGP3_TXLED 0x00000200ul
562 #define UWB2_GPIO_MODE_MSGP3_GPIO3 0x00000000ul
563 #define UWB2_GPIO_MODE_MSGP3_MASK 0x00000E00ul
564 #define UWB2_GPIO_MODE_MSGP2_PDOA_SW_2 0x00000080ul
565 #define UWB2_GPIO_MODE_MSGP2_RXLED 0x00000040ul
566 #define UWB2_GPIO_MODE_MSGP2_GPIO2 0x00000000ul
567 #define UWB2_GPIO_MODE_MSGP2_MASK 0x000001C0ul
568 #define UWB2_GPIO_MODE_MSGP1_PDOA_SW_1 0x00000010ul
569 #define UWB2_GPIO_MODE_MSGP1_SFDLED 0x00000008ul
570 #define UWB2_GPIO_MODE_MSGP1_GPIO1 0x00000000ul
571 #define UWB2_GPIO_MODE_MSGP1_MASK 0x00000038ul
572 #define UWB2_GPIO_MODE_MSGP0_PDOA_SW_0 0x00000002ul
573 #define UWB2_GPIO_MODE_MSGP0_RXOKLED 0x00000001ul
574 #define UWB2_GPIO_MODE_MSGP0_GPIO0 0x00000000ul
575 #define UWB2_GPIO_MODE_MSGP0_MASK 0x00000007ul
576 
581 #define UWB2_DTUNE_0_DTOB4_MASK 0x0010u
582 #define UWB2_DTUNE_0_PAC_MASK 0x0003u
583 #define UWB2_DTUNE_0_RESERVED_BITS 0x100Cu
584 
589 #define UWB2_RX_SFD_TOC_DEFAULT 0x0081u
590 
595 #define UWB2_DTUNE_3_DEFAULT 0xAF5F584Cul
596 #define UWB2_DTUNE_3_OPTIMAL 0xAF5F35CCul
597 
602 #define UWB2_DTUNE_4_RX_SFD_HLDOFF 0x20000000ul
603 #define UWB2_DTUNE_4_RX_SFD_HLDOFF_DEFAULT 0x14000000ul
604 #define UWB2_DTUNE_4_RX_SFD_HLDOFF_MASK 0xFF000000ul
605 
610 #define UWB2_RF_TX_CTRL_1_OPTIMAL 0x0E
611 
616 #define UWB2_RF_TX_CTRL_2_CHANNEL_5 0x1C071134ul
617 #define UWB2_RF_TX_CTRL_2_CHANNEL_9 0x1C010034ul
618 
623 #define UWB2_LDO_CTRL_VDDHVTX_VREF_MASK 0x08000000ul
624 #define UWB2_LDO_CTRL_VDDTX2_VREF_MASK 0x00400000ul
625 #define UWB2_LDO_CTRL_VDDTX1_VREF_MASK 0x00200000ul
626 #define UWB2_LDO_CTRL_VDDHVTX_EN_MASK 0x00000800ul
627 #define UWB2_LDO_CTRL_VDDIF2_EN_MASK 0x00000100ul
628 #define UWB2_LDO_CTRL_VDDTX2_EN_MASK 0x00000040ul
629 #define UWB2_LDO_CTRL_VDDTX1_EN_MASK 0x00000020ul
630 #define UWB2_LDO_CTRL_VDDPLL_EN_MASK 0x00000010ul
631 #define UWB2_LDO_CTRL_VDDMS3_EN_MASK 0x00000004ul
632 #define UWB2_LDO_CTRL_VDDMS2_EN_MASK 0x00000002ul
633 #define UWB2_LDO_CTRL_VDDMS1_EN_MASK 0x00000001ul
634 
639 #define UWB2_LDO_RLOAD_OPTIMAL 0x14
640 
645 #define UWB2_PLL_CFG_CHANNEL_5 0x1F3Cu
646 #define UWB2_PLL_CFG_CHANNEL_9 0x0F3Cu
647 
652 #define UWB2_PLL_CAL_CAL_EN_MASK 0x0100u
653 #define UWB2_PLL_CAL_PLL_CFG_LD_MASK 0x0030u
654 #define UWB2_PLL_CAL_USE_OLD_MASK 0x0002u
655 #define UWB2_PLL_CAL_RESERVED_BITS 0x0001u
656 #define UWB2_PLL_CAL_OPTIMAL 0x0081u
657 
662 #define UWB2_XTAL_TRIM_DEFAULT 0x2E
663 #define UWB2_XTAL_TRIM_MASK 0x3F
664 
669 #define UWB2_OTP_CFG_DGC_SEL_MASK 0x2000u
670 #define UWB2_OTP_CFG_OPS_SEL_LONG 0x0000u
671 #define UWB2_OTP_CFG_OPS_SEL_SHORT 0x1000u
672 #define UWB2_OTP_CFG_OPS_SEL_MASK 0x1800u
673 #define UWB2_OTP_CFG_OPS_KICK_MASK 0x0400u
674 #define UWB2_OTP_CFG_BIAS_KICK_MASK 0x0100u
675 #define UWB2_OTP_CFG_LDO_KICK_MASK 0x0080u
676 #define UWB2_OTP_CFG_DGC_KICK_MASK 0x0040u
677 #define UWB2_OTP_CFG_OTP_WRITE_MR_MASK 0x0008u
678 #define UWB2_OTP_CFG_OTP_WRITE_MASK 0x0004u
679 #define UWB2_OTP_CFG_OTP_READ_MASK 0x0002u
680 #define UWB2_OTP_CFG_OTP_MAN_MASK 0x0001u
681 
686 #define UWB2_STS_CONF_1_STS_PGR_EN_MASK 0x80000000ul
687 #define UWB2_STS_CONF_1_STS_SS_EN_MASK 0x40000000ul
688 #define UWB2_STS_CONF_1_STS_CQ_EN_MASK 0x20000000ul
689 #define UWB2_STS_CONF_1_FP_AGREED_EN_MASK 0x10000000ul
690 #define UWB2_STS_CONF_1_RES_B0_DEFAULT 0x00000094ul
691 #define UWB2_STS_CONF_1_RES_B0_MASK 0x000000FFul
692 #define UWB2_STS_CONF_1_RESERVED_BITS 0x003EED00ul
693 
698 #define UWB2_DIAG_TMC_CIA_RUN_MASK 0x04000000ul
699 #define UWB2_DIAG_TMC_CIA_WDEN_MASK 0x01000000ul
700 #define UWB2_DIAG_TMC_HIRQ_POL_MASK 0x00200000ul
701 #define UWB2_DIAG_TMC_TX_PSTM_MASK 0x00000010ul
702 
707 #define UWB2_SYS_STATE_PMSC_STATE_WAKEUP 0x00000000ul
708 #define UWB2_SYS_STATE_PMSC_STATE_IDLE_RC 0x00010000ul
709 #define UWB2_SYS_STATE_PMSC_STATE_IDLE 0x00030000ul
710 #define UWB2_SYS_STATE_PMSC_STATE_TX 0x00080000ul
711 #define UWB2_SYS_STATE_PMSC_STATE_RX 0x00120000ul
712 #define UWB2_SYS_STATE_PMSC_STATE_MASK 0x001F0000ul
713 #define UWB2_SYS_STATE_RX_STATE_IDLE 0x00000000ul
714 #define UWB2_SYS_STATE_RX_STATE_START_ANALOG 0x00000100ul
715 #define UWB2_SYS_STATE_RX_STATE_RX_RDY 0x00000400ul
716 #define UWB2_SYS_STATE_RX_STATE_PREAMBLE_FND 0x00000500ul
717 #define UWB2_SYS_STATE_RX_STATE_PREAMBLE_TO 0x00000600ul
718 #define UWB2_SYS_STATE_RX_STATE_SFD_FND 0x00000700ul
719 #define UWB2_SYS_STATE_RX_STATE_CNFG_PHR_RX 0x00000800ul
720 #define UWB2_SYS_STATE_RX_STATE_PHR_RX_STRT 0x00000900ul
721 #define UWB2_SYS_STATE_RX_STATE_DATA_RATE_RDY 0x00000A00ul
722 #define UWB2_SYS_STATE_RX_STATE_DATA_RX_SEQ 0x00000C00ul
723 #define UWB2_SYS_STATE_RX_STATE_CNFG_DATA_RX 0x00000D00ul
724 #define UWB2_SYS_STATE_RX_STATE_PHR_NOT_OK 0x00000E00ul
725 #define UWB2_SYS_STATE_RX_STATE_LAST_SYMBOL 0x00000F00ul
726 #define UWB2_SYS_STATE_RX_STATE_WAIT_RSD_DONE 0x00001000ul
727 #define UWB2_SYS_STATE_RX_STATE_RSP_OK 0x00001100ul
728 #define UWB2_SYS_STATE_RX_STATE_RSP_NOT_OK 0x00001200ul
729 #define UWB2_SYS_STATE_RX_STATE_MASK 0x00003F00ul
730 #define UWB2_SYS_STATE_TX_STATE_IDLE 0x00000000ul
731 #define UWB2_SYS_STATE_TX_STATE_PREAMBLE 0x00000001ul
732 #define UWB2_SYS_STATE_TX_STATE_SFD 0x00000002ul
733 #define UWB2_SYS_STATE_TX_STATE_PHR 0x00000003ul
734 #define UWB2_SYS_STATE_TX_STATE_SDE 0x00000004ul
735 #define UWB2_SYS_STATE_TX_STATE_DATA 0x00000005ul
736 #define UWB2_SYS_STATE_TX_STATE_MASK 0x0000000Ful
737 
742 #define UWB2_CLK_CTRL_LP_CLK_EN_MASK 0x00800000ul
743 #define UWB2_CLK_CTRL_GPIO_DRST_N_MASK 0x00080000ul
744 #define UWB2_CLK_CTRL_GPIO_DCLK_EN_MASK 0x00040000ul
745 #define UWB2_CLK_CTRL_GPIO_CLK_EN_MASK 0x00010000ul
746 #define UWB2_CLK_CTRL_ACC_MCLK_EN_MASK 0x00008000ul
747 #define UWB2_CLK_CTRL_SAR_CLK_EN_MASK 0x00000400ul
748 #define UWB2_CLK_CTRL_CIA_CLK_EN_MASK 0x00000100ul
749 #define UWB2_CLK_CTRL_ACC_CLK_EN_MASK 0x00000040ul
750 #define UWB2_CLK_CTRL_TX_CLK_AUTO 0x00000000ul
751 #define UWB2_CLK_CTRL_TX_CLK_FORCE 0x00000010ul
752 #define UWB2_CLK_CTRL_TX_CLK_MASK 0x00000030ul
753 #define UWB2_CLK_CTRL_RX_CLK_AUTO 0x00000000ul
754 #define UWB2_CLK_CTRL_RX_CLK_FORCE 0x00000004ul
755 #define UWB2_CLK_CTRL_RX_CLK_MASK 0x0000000Cul
756 #define UWB2_CLK_CTRL_SYS_CLK_AUTO 0x00000000ul
757 #define UWB2_CLK_CTRL_SYS_CLK_FORCE_FC_4 0x00000001ul
758 #define UWB2_CLK_CTRL_SYS_CLK_FORCE_PLL 0x00000002ul
759 #define UWB2_CLK_CTRL_SYS_CLK_FORCE_FC 0x00000003ul
760 #define UWB2_CLK_CTRL_SYS_CLK_MASK 0x00000003ul
761 #define UWB2_CLK_CTRL_RESERVED_BITS 0xF0300200ul
762 
767 #define UWB2_SEQ_CTRL_LP_CLK_DIV_MASK 0xFC000000ul
768 #define UWB2_SEQ_CTRL_FORCE2INIT_MASK 0x00800000ul
769 #define UWB2_SEQ_CTRL_CIARUNE_MASK 0x00020000ul
770 #define UWB2_SEQ_CTRL_PLL_SYNC_MASK 0x00008000ul
771 #define UWB2_SEQ_CTRL_ARXSLP_MASK 0x00001000ul
772 #define UWB2_SEQ_CTRL_ATXSLP_MASK 0x00000800ul
773 #define UWB2_SEQ_CTRL_AINIT2IDLE_MASK 0x00000100ul
774 #define UWB2_SEQ_CTRL_RESERVED_BITS 0x00010638ul
775 
780 #define UWB2_LED_CTRL_FORCE_TRIG_MASK 0x000F0000ul
781 #define UWB2_LED_CTRL_BLINK_EN_MASK 0x00000100ul
782 #define UWB2_LED_CTRL_BLINK_TIM_200MS 0x00000010ul
783 #define UWB2_LED_CTRL_BLINK_TIM_400MS 0x00000020ul
784 #define UWB2_LED_CTRL_BLINK_TIM_MASK 0x000000FFul
785 
790 #define UWB2_BIAS_CTRL_MASK 0x1F
791 
796 #define UWB2_CHANNEL_5 0x05
797 #define UWB2_CHANNEL_9 0x09
798 #define UWB2_TX_PLEN_32 0x04
799 #define UWB2_TX_PLEN_64 0x01
800 #define UWB2_TX_PLEN_128 0x05
801 #define UWB2_TX_PLEN_256 0x09
802 #define UWB2_TX_PLEN_512 0x0D
803 #define UWB2_TX_PLEN_1024 0x02
804 #define UWB2_TX_PLEN_1536 0x06
805 #define UWB2_TX_PLEN_2048 0x0A
806 #define UWB2_TX_PLEN_4096 0x03
807 #define UWB2_PAC_SIZE_4 0x03
808 #define UWB2_PAC_SIZE_8 0x00
809 #define UWB2_PAC_SIZE_16 0x01
810 #define UWB2_PAC_SIZE_32 0x02
811 #define UWB2_TX_CODE_MIN 0x01
812 #define UWB2_TX_CODE_9 0x09
813 #define UWB2_TX_CODE_24 0x18
814 #define UWB2_TX_CODE_MAX 0x1D
815 #define UWB2_RX_CODE_MIN 0x01
816 #define UWB2_RX_CODE_9 0x09
817 #define UWB2_RX_CODE_24 0x18
818 #define UWB2_RX_CODE_MAX 0x1D
819 #define UWB2_SFD_TYPE_IEEE_4A 0x00
820 #define UWB2_SFD_TYPE_DW_8 0x01
821 #define UWB2_SFD_TYPE_DW_16 0x02
822 #define UWB2_SFD_TYPE_IEEE_4Z 0x03
823 #define UWB2_DATA_RATE_850KBS 0x00
824 #define UWB2_DATA_RATE_6800KBS 0x01
825 
830 #define UWB2_DEFAULT_CHANNEL UWB2_CHANNEL_5
831 #define UWB2_DEFAULT_TX_PLEN UWB2_TX_PLEN_128
832 #define UWB2_DEFAULT_PAC UWB2_PAC_SIZE_8
833 #define UWB2_DEFAULT_TX_CODE UWB2_TX_CODE_9
834 #define UWB2_DEFAULT_RX_CODE UWB2_RX_CODE_9
835 #define UWB2_DEFAULT_SFD_TYPE UWB2_SFD_TYPE_DW_8
836 #define UWB2_DEFAULT_DATA_RATE UWB2_DATA_RATE_6800KBS
837 #define UWB2_DEFAULT_SFD_TO ( 128 + 1 + 8 - 8 ) // preamble length + 1 + SFD length - PAC size.
838 
843 #define UWB2_RX_TX_LEDS_DISABLE 0
844 #define UWB2_RX_TX_LEDS_ENABLE 1
845 
850 #define UWB2_IC_STATE_INIT 0
851 #define UWB2_IC_STATE_IDLE 1
852 #define UWB2_IC_STATE_IDLE_RC 2
853 
858 #define UWB2_DEV_ID 0xDECA0302ul
859 #define UWB2_DEV_ID_RIDTAG_MASK 0xFFFF0000ul
860 #define UWB2_DEV_ID_MODEL_MASK 0x0000FF00ul
861 #define UWB2_DEV_ID_VER_MASK 0x000000F0ul
862 #define UWB2_DEV_ID_REV_MASK 0x0000000Ful
863 
868 #define UWB2_MASK_ALL_32 0xFFFFFFFFul
869 #define UWB2_MASK_NONE_32 0x00000000ul
870 #define UWB2_MASK_ALL_16 0xFFFFu
871 #define UWB2_MASK_NONE_16 0x0000u
872 #define UWB2_MASK_ALL_8 0xFF
873 #define UWB2_MASK_NONE_8 0x00
874 
879 #define UWB2_SPI_WRITE 0x8000u
880 #define UWB2_SPI_16BIT_ADDR 0x4000u
881 #define UWB2_SPI_FAST_CMD 0x0100u
882 #define UWB2_SPI_MASKED_WRITE_8BIT 0x0001u
883 #define UWB2_SPI_MASKED_WRITE_16BIT 0x0002u
884 #define UWB2_SPI_MASKED_WRITE_32BIT 0x0003u
885 #define UWB2_SPI_BASE_ADDR_MASK 0x3E00u
886 #define UWB2_SPI_SUB_ADDR_MASK 0x01FCu
887 #define UWB2_SPI_MODE_MASK 0x0003u
888 
893 #define UWB2_WAIT_TIMEOUT_MS 5000u
894 
903 #define UWB2_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
904 #define UWB2_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
905  // uwb2_set
907 
922 #define UWB2_MAP_MIKROBUS( cfg, mikrobus ) \
923  cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
924  cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
925  cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
926  cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
927  cfg.wup = MIKROBUS( mikrobus, MIKROBUS_AN ); \
928  cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
929  cfg.ext = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
930  cfg.irq = MIKROBUS( mikrobus, MIKROBUS_INT )
931  // uwb2_map // uwb2
934 
939 typedef struct
940 {
941  uint8_t channel;
942  uint8_t tx_plen;
943  uint8_t pac;
944  uint8_t tx_code;
945  uint8_t rx_code;
946  uint8_t sfd_type;
947  uint8_t data_rate;
948  uint16_t sfd_to;
951 
956 typedef struct
957 {
958  // Output pins
959  digital_out_t wup;
960  digital_out_t rst;
962  // Input pins
963  digital_in_t ext;
964  digital_in_t irq;
966  // Modules
967  spi_master_t spi;
969  pin_name_t chip_select;
971 } uwb2_t;
972 
977 typedef struct
978 {
979  // Communication gpio pins
980  pin_name_t miso;
981  pin_name_t mosi;
982  pin_name_t sck;
983  pin_name_t cs;
985  // Additional gpio pins
986  pin_name_t wup;
987  pin_name_t rst;
988  pin_name_t ext;
989  pin_name_t irq;
991  // static variable
992  uint32_t spi_speed;
993  spi_master_mode_t spi_mode;
994  spi_master_chip_select_polarity_t cs_polarity;
996 } uwb2_cfg_t;
997 
1002 typedef enum
1003 {
1004  UWB2_OK = 0,
1005  UWB2_ERROR = -1
1006 
1008 
1025 
1039 err_t uwb2_init ( uwb2_t *ctx, uwb2_cfg_t *cfg );
1040 
1053 err_t uwb2_default_cfg ( uwb2_t *ctx );
1054 
1066 err_t uwb2_send_cmd ( uwb2_t *ctx, uint8_t cmd );
1067 
1082 err_t uwb2_read_reg ( uwb2_t *ctx, uint16_t reg, uint8_t *data_out, uint16_t len );
1083 
1098 err_t uwb2_write_reg ( uwb2_t *ctx, uint16_t reg, uint8_t *data_in, uint16_t len );
1099 
1112 err_t uwb2_read_reg_8bit ( uwb2_t *ctx, uint16_t reg, uint8_t *data_out );
1113 
1126 err_t uwb2_read_reg_16bit ( uwb2_t *ctx, uint16_t reg, uint16_t *data_out );
1127 
1140 err_t uwb2_read_reg_32bit ( uwb2_t *ctx, uint16_t reg, uint32_t *data_out );
1141 
1154 err_t uwb2_write_reg_8bit ( uwb2_t *ctx, uint16_t reg, uint8_t data_in );
1155 
1168 err_t uwb2_write_reg_16bit ( uwb2_t *ctx, uint16_t reg, uint16_t data_in );
1169 
1182 err_t uwb2_write_reg_32bit ( uwb2_t *ctx, uint16_t reg, uint32_t data_in );
1183 
1197 err_t uwb2_modify_reg_8bit ( uwb2_t *ctx, uint16_t reg, uint8_t and_mask, uint8_t or_mask );
1198 
1212 err_t uwb2_modify_reg_16bit ( uwb2_t *ctx, uint16_t reg, uint16_t and_mask, uint16_t or_mask );
1213 
1227 err_t uwb2_modify_reg_32bit ( uwb2_t *ctx, uint16_t reg, uint32_t and_mask, uint32_t or_mask );
1228 
1242 err_t uwb2_read_otp ( uwb2_t *ctx, uint16_t address, uint32_t *data_out, uint16_t len );
1243 
1253 void uwb2_set_rst_pin ( uwb2_t *ctx, uint8_t state );
1254 
1264 void uwb2_set_wup_pin ( uwb2_t *ctx, uint8_t state );
1265 
1274 uint8_t uwb2_get_ext_pin ( uwb2_t *ctx );
1275 
1284 uint8_t uwb2_get_irq_pin ( uwb2_t *ctx );
1285 
1295 
1307 
1319 err_t uwb2_power_up_ic ( uwb2_t *ctx );
1320 
1334 
1347 err_t uwb2_configure_ic ( uwb2_t *ctx, uwb2_chip_cfg_t *config );
1348 
1363 err_t uwb2_set_ic_state ( uwb2_t *ctx, uint8_t state );
1364 
1378 err_t uwb2_load_ic_rx_lut ( uwb2_t *ctx, uint8_t channel );
1379 
1392 
1407 err_t uwb2_set_rx_tx_leds ( uwb2_t *ctx, uint8_t mode );
1408 
1422 err_t uwb2_wait_for_status_lo ( uwb2_t *ctx, uint32_t status );
1423 
1434 err_t uwb2_clear_status ( uwb2_t *ctx );
1435 
1449 err_t uwb2_send_message ( uwb2_t *ctx, uint8_t *data_in, uint16_t len );
1450 
1466 err_t uwb2_read_message ( uwb2_t *ctx, uint8_t *data_out, uint16_t *len );
1467 
1468 #ifdef __cplusplus
1469 }
1470 #endif
1471 #endif // UWB2_H
1472  // uwb2
1474 
1475 // ------------------------------------------------------------------------ END
uwb2_modify_reg_32bit
err_t uwb2_modify_reg_32bit(uwb2_t *ctx, uint16_t reg, uint32_t and_mask, uint32_t or_mask)
UWB 2 modify register 32bit function.
uwb2_read_reg_32bit
err_t uwb2_read_reg_32bit(uwb2_t *ctx, uint16_t reg, uint32_t *data_out)
UWB 2 read register 32bit function.
uwb2_get_ext_pin
uint8_t uwb2_get_ext_pin(uwb2_t *ctx)
UWB 2 get ext pin function.
uwb2_power_up_ic
err_t uwb2_power_up_ic(uwb2_t *ctx)
UWB 2 power up IC function.
uwb2_chip_cfg_t
UWB 2 Click chip configuration object.
Definition: uwb2.h:940
uwb2_t::irq
digital_in_t irq
Definition: uwb2.h:964
uwb2_send_cmd
err_t uwb2_send_cmd(uwb2_t *ctx, uint8_t cmd)
UWB 2 send cmd function.
uwb2_t::chip_select
pin_name_t chip_select
Definition: uwb2.h:969
uwb2_cfg_setup
void uwb2_cfg_setup(uwb2_cfg_t *cfg)
UWB 2 configuration object setup function.
spi_specifics.h
This file contains SPI specific macros, functions, etc.
uwb2_send_message
err_t uwb2_send_message(uwb2_t *ctx, uint8_t *data_in, uint16_t len)
UWB 2 send message function.
uwb2_write_reg_8bit
err_t uwb2_write_reg_8bit(uwb2_t *ctx, uint16_t reg, uint8_t data_in)
UWB 2 write register 8bit function.
uwb2_cfg_t::ext
pin_name_t ext
Definition: uwb2.h:988
uwb2_read_otp
err_t uwb2_read_otp(uwb2_t *ctx, uint16_t address, uint32_t *data_out, uint16_t len)
UWB 2 read otp function.
uwb2_calibrate_ic_pgf
err_t uwb2_calibrate_ic_pgf(uwb2_t *ctx)
UWB 2 calibrate IC PGF function.
uwb2_chip_cfg_t::sfd_to
uint16_t sfd_to
Definition: uwb2.h:948
uwb2_clear_status
err_t uwb2_clear_status(uwb2_t *ctx)
UWB 2 clear status function.
uwb2_t::wup
digital_out_t wup
Definition: uwb2.h:959
uwb2_chip_cfg_t::sfd_type
uint8_t sfd_type
Definition: uwb2.h:946
uwb2_modify_reg_16bit
err_t uwb2_modify_reg_16bit(uwb2_t *ctx, uint16_t reg, uint16_t and_mask, uint16_t or_mask)
UWB 2 modify register 16bit function.
uwb2_cfg_t::miso
pin_name_t miso
Definition: uwb2.h:980
UWB2_ERROR
@ UWB2_ERROR
Definition: uwb2.h:1005
uwb2_set_rx_tx_leds
err_t uwb2_set_rx_tx_leds(uwb2_t *ctx, uint8_t mode)
UWB 2 set RX TX LEDs function.
uwb2_cfg_t::mosi
pin_name_t mosi
Definition: uwb2.h:981
uwb2_write_reg
err_t uwb2_write_reg(uwb2_t *ctx, uint16_t reg, uint8_t *data_in, uint16_t len)
UWB 2 write register function.
uwb2_cfg_t::cs_polarity
spi_master_chip_select_polarity_t cs_polarity
Definition: uwb2.h:994
uwb2_initialize_ic
err_t uwb2_initialize_ic(uwb2_t *ctx)
UWB 2 initialize IC function.
uwb2_read_message
err_t uwb2_read_message(uwb2_t *ctx, uint8_t *data_out, uint16_t *len)
UWB 2 read message function.
uwb2_load_ic_rx_lut
err_t uwb2_load_ic_rx_lut(uwb2_t *ctx, uint8_t channel)
UWB 2 load IC RX lut function.
uwb2_get_irq_pin
uint8_t uwb2_get_irq_pin(uwb2_t *ctx)
UWB 2 get irq pin function.
uwb2_t
UWB 2 Click context object.
Definition: uwb2.h:957
uwb2_read_reg_8bit
err_t uwb2_read_reg_8bit(uwb2_t *ctx, uint16_t reg, uint8_t *data_out)
UWB 2 read register 8bit function.
uwb2_reset_device
void uwb2_reset_device(uwb2_t *ctx)
UWB 2 reset device function.
uwb2_cfg_t::sck
pin_name_t sck
Definition: uwb2.h:982
uwb2_cfg_t::spi_speed
uint32_t spi_speed
Definition: uwb2.h:992
uwb2_read_reg
err_t uwb2_read_reg(uwb2_t *ctx, uint16_t reg, uint8_t *data_out, uint16_t len)
UWB 2 read register function.
uwb2_write_reg_16bit
err_t uwb2_write_reg_16bit(uwb2_t *ctx, uint16_t reg, uint16_t data_in)
UWB 2 write register 16bit function.
uwb2_set_wup_pin
void uwb2_set_wup_pin(uwb2_t *ctx, uint8_t state)
UWB 2 set wup pin function.
uwb2_cfg_t::wup
pin_name_t wup
Definition: uwb2.h:986
uwb2_chip_cfg_t::pac
uint8_t pac
Definition: uwb2.h:943
uwb2_default_cfg
err_t uwb2_default_cfg(uwb2_t *ctx)
UWB 2 default configuration function.
uwb2_return_value_t
uwb2_return_value_t
UWB 2 Click return value data.
Definition: uwb2.h:1003
uwb2_set_ic_state
err_t uwb2_set_ic_state(uwb2_t *ctx, uint8_t state)
UWB 2 set IC state function.
uwb2_t::spi
spi_master_t spi
Definition: uwb2.h:967
uwb2_chip_cfg_t::rx_code
uint8_t rx_code
Definition: uwb2.h:945
uwb2_cfg_t::irq
pin_name_t irq
Definition: uwb2.h:989
uwb2_cfg_t::spi_mode
spi_master_mode_t spi_mode
Definition: uwb2.h:993
uwb2_chip_cfg_t::tx_code
uint8_t tx_code
Definition: uwb2.h:944
uwb2_check_communication
err_t uwb2_check_communication(uwb2_t *ctx)
UWB 2 check communication function.
uwb2_t::rst
digital_out_t rst
Definition: uwb2.h:960
uwb2_modify_reg_8bit
err_t uwb2_modify_reg_8bit(uwb2_t *ctx, uint16_t reg, uint8_t and_mask, uint8_t or_mask)
UWB 2 modify register 8bit function.
uwb2_chip_cfg_t::data_rate
uint8_t data_rate
Definition: uwb2.h:947
uwb2_configure_ic
err_t uwb2_configure_ic(uwb2_t *ctx, uwb2_chip_cfg_t *config)
UWB 2 configure IC function.
uwb2_chip_cfg_t::tx_plen
uint8_t tx_plen
Definition: uwb2.h:942
uwb2_chip_cfg_t::channel
uint8_t channel
Definition: uwb2.h:941
uwb2_cfg_t
UWB 2 Click configuration object.
Definition: uwb2.h:978
uwb2_init
err_t uwb2_init(uwb2_t *ctx, uwb2_cfg_t *cfg)
UWB 2 initialization function.
uwb2_cfg_t::rst
pin_name_t rst
Definition: uwb2.h:987
UWB2_OK
@ UWB2_OK
Definition: uwb2.h:1004
uwb2_cfg_t::cs
pin_name_t cs
Definition: uwb2.h:983
uwb2_wait_for_status_lo
err_t uwb2_wait_for_status_lo(uwb2_t *ctx, uint32_t status)
UWB 2 wait for status lo function.
uwb2_read_reg_16bit
err_t uwb2_read_reg_16bit(uwb2_t *ctx, uint16_t reg, uint16_t *data_out)
UWB 2 read register 16bit function.
uwb2_write_reg_32bit
err_t uwb2_write_reg_32bit(uwb2_t *ctx, uint16_t reg, uint32_t data_in)
UWB 2 write register 32bit function.
uwb2_t::ext
digital_in_t ext
Definition: uwb2.h:963
uwb2_set_rst_pin
void uwb2_set_rst_pin(uwb2_t *ctx, uint8_t state)
UWB 2 set rst pin function.