Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: TYBLE16_simple_data_logger TYBLE16_MP3_Air
s2lpReg.h
00001 /* 00002 * Copyright (c) 2018 ARM Limited. All rights reserved. 00003 * SPDX-License-Identifier: Apache-2.0 00004 * Licensed under the Apache License, Version 2.0 (the License); you may 00005 * not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an AS IS BASIS, WITHOUT 00012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00017 #ifndef S2LPREG_H_ 00018 #define S2LPREG_H_ 00019 #ifdef __cplusplus 00020 extern "C" { 00021 #endif 00022 00023 #define RF_MTU 2047 00024 #define PARTNUM 0x03 00025 #define VERSION 0xC1 00026 #define FIFO_SIZE 128 00027 #define SPI_HEADER_LENGTH 2 00028 #define RSSI_SETTLING_TIME 250 00029 00030 #define S2LP_GPIO0 0 00031 #define S2LP_GPIO1 1 00032 #define S2LP_GPIO2 2 00033 #define S2LP_GPIO3 3 00034 00035 // GPIO modes 00036 #define DIG_IN 1 00037 #define DIG_OUT_LOW 2 00038 #define DIG_OUT_HIGH 3 00039 00040 // Interrupt events 00041 #define RX_DATA_READY 0 00042 #define RX_DATA_DISCARDED 1 00043 #define TX_DATA_SENT 2 00044 #define MAX_RE_TX 3 00045 #define CRC_ERROR 4 00046 #define TX_FIFO_UNF_OVF 5 00047 #define RX_FIFO_UNF_OVF 6 00048 #define TX_FIFO_ALMOST_FULL 7 00049 #define TX_FIFO_ALMOST_EMPTY 8 00050 #define RX_FIFO_ALMOST_FULL 9 00051 #define RX_FIFO_ALMOST_EMPTY 10 00052 #define MAX_CCA_BACKOFFS 11 00053 #define VALID_PREAMBLE 12 00054 #define SYNC_WORD 13 00055 #define RSSI_ABOVE_THR 14 00056 #define WAKE_UP_TIMEOUT 15 00057 #define READY 16 00058 #define STANDBY_SWITCHING 17 00059 #define LOW_BATTERY_LVL 18 00060 #define POWER_ON_RESET 19 00061 #define RX_TIMER_TIMEOUT 28 00062 #define SNIFF_TIMER_TIMEOUT 29 00063 00064 // GPIO signals 00065 #define NIRQ 0 00066 #define POR 1 00067 #define WUT_EXPIRE 2 00068 #define LOW_BATTERY 3 00069 #define TX_DATA_OUTPUT 4 00070 #define TX_STATE 5 00071 #define TXRX_FIFO_ALMOST_EMPTY 6 00072 #define TXRX_FIFO_ALMOST_FULL 7 00073 #define RX_DATA_OUTPUT 8 00074 #define RX_CLOCK_OUTPUT 9 00075 #define RX_STATE 10 00076 #define STATE_OTHER_THAN_SLEEP_OR_STANDBY 11 00077 #define STANDBY_STATE 12 00078 #define ANTENNA_SWITCH 13 00079 #define VALID_PREAMBLE_DETECTED 14 00080 #define SYNC_WORD_DETECTED 15 00081 #define RSSI_ABOVE_THRESHOLD 16 00082 #define TXRX_MODE_INDICATOR 18 00083 #define VDD 19 00084 #define GND 20 00085 #define SMPS_ENABLE 21 00086 #define SLEEP_STATE 22 00087 #define READY_STATE 23 00088 #define LOCK_STATE 24 00089 #define WAIT_LOCK_DETECTOR 25 00090 #define TX_DATA_OOK 26 00091 #define WAIT_READY 27 00092 #define WAIT_TIMER_EXPIRATION 28 00093 #define END_OF_CALIBRATION 29 00094 #define ENABLE_SYNTH_BLOCK 30 00095 00096 // RF registers 00097 #define GPIO0_CONF 0x00 00098 #define GPIO1_CONF 0x01 00099 #define GPIO2_CONF 0x02 00100 #define GPIO3_CONF 0x03 00101 #define SYNT3 0x05 00102 #define SYNT2 0x06 00103 #define SYNT1 0x07 00104 #define SYNT0 0x08 00105 #define IF_OFFSET_ANA 0x09 00106 #define IF_OFFSET_DIG 0x0A 00107 #define CHSPACE 0x0C 00108 #define CHNUM 0x0D 00109 #define MOD4 0x0E 00110 #define MOD3 0x0F 00111 #define MOD2 0x10 00112 #define MOD1 0x11 00113 #define MOD0 0x12 00114 #define CHFLT 0x13 00115 #define AFC2 0x14 00116 #define AFC1 0x15 00117 #define AFC0 0x16 00118 #define RSSI_FLT 0x17 00119 #define RSSI_TH 0x18 00120 #define AGCCTRL4 0x1A 00121 #define AGCCTRL3 0x1B 00122 #define AGCCTRL2 0x1C 00123 #define AGCCTRL1 0x1D 00124 #define AGCCTRL0 0x1E 00125 #define ANT_SELECT_CONF 0x1F 00126 #define CLOCKREC2 0x20 00127 #define CLOCKREC1 0x21 00128 #define PCKTCTRL6 0x2B 00129 #define PCKTCTRL5 0x2C 00130 #define PCKTCTRL4 0x2D 00131 #define PCKTCTRL3 0x2E 00132 #define PCKTCTRL2 0x2F 00133 #define PCKTCTRL1 0x30 00134 #define PCKTLEN1 0x31 00135 #define PCKTLEN0 0x32 00136 #define SYNC3 0x33 00137 #define SYNC2 0x34 00138 #define SYNC1 0x35 00139 #define SYNC0 0x36 00140 #define QI 0x37 00141 #define PCKT_PSTMBL 0x38 00142 #define PROTOCOL2 0x39 00143 #define PROTOCOL1 0x3A 00144 #define PROTOCOL0 0x3B 00145 #define FIFO_CONFIG3 0x3C 00146 #define FIFO_CONFIG2 0x3D 00147 #define FIFO_CONFIG1 0x3E 00148 #define FIFO_CONFIG0 0x3F 00149 #define PCKT_FLT_OPTIONS 0x40 00150 #define PCKT_FLT_GOALS4 0x41 00151 #define PCKT_FLT_GOALS3 0x42 00152 #define PCKT_FLT_GOALS2 0x43 00153 #define PCKT_FLT_GOALS1 0x44 00154 #define PCKT_FLT_GOALS0 0x45 00155 #define TIMERS5 0x46 00156 #define TIMERS4 0x47 00157 #define TIMERS3 0x48 00158 #define TIMERS2 0x49 00159 #define TIMERS1 0x4A 00160 #define TIMERS0 0x4B 00161 #define CSMA_CONF3 0x4C 00162 #define CSMA_CONF2 0x4D 00163 #define CSMA_CONF1 0x4E 00164 #define CSMA_CONF0 0x4F 00165 #define IRQ_MASK3 0x50 00166 #define IRQ_MASK2 0x51 00167 #define IRQ_MASK1 0x52 00168 #define IRQ_MASK0 0x53 00169 #define FAST_RX_TIMER 0x54 00170 #define PA_POWER8 0x5A 00171 #define PA_POWER7 0x5B 00172 #define PA_POWER6 0x5C 00173 #define PA_POWER5 0x5D 00174 #define PA_POWER4 0x5E 00175 #define PA_POWER3 0x5F 00176 #define PA_POWER2 0x60 00177 #define PA_POWER1 0x61 00178 #define PA_POWER0 0x62 00179 #define PA_CONFIG1 0x63 00180 #define PA_CONFIG0 0x64 00181 #define SYNTH_CONFIG2 0x65 00182 #define VCO_CONFIG 0x68 00183 #define VCO_CALIBR_IN2 0x69 00184 #define VCO_CALIBR_IN1 0x6A 00185 #define VCO_CALIBR_IN0 0x6B 00186 #define XO_RCO_CONF1 0x6C 00187 #define XO_RCO_CONF0 0x6D 00188 #define RCO_CALIBR_CONF3 0x6E 00189 #define RCO_CALIBR_CONF2 0x6F 00190 #define PM_CONF4 0x75 00191 #define PM_CONF3 0x76 00192 #define PM_CONF2 0x77 00193 #define PM_CONF1 0x78 00194 #define PM_CONF0 0x79 00195 #define MC_STATE1 0x8D 00196 #define MC_STATE0 0x8E 00197 #define TX_FIFO_STATUS 0x8F 00198 #define RX_FIFO_STATUS 0x90 00199 #define RCO_CALIBR_OUT4 0x94 00200 #define RCO_CALIBR_OUT3 0x95 00201 #define VCO_CALIBR_OUT1 0x99 00202 #define VCO_CALIBR_OUT0 0x9A 00203 #define TX_PCKT_INFO 0x9C 00204 #define RX_PCKT_INFO 0x9D 00205 #define AFC_CORR 0x9E 00206 #define LINK_QUALIF2 0x9F 00207 #define LINK_QUALIF1 0xA0 00208 #define RSSI_LEVEL 0xA2 00209 #define RX_PCKT_LEN1 0xA4 00210 #define RX_PCKT_LEN0 0xA5 00211 #define CRC_FIELD3 0xA6 00212 #define CRC_FIELD2 0xA7 00213 #define CRC_FIELD1 0xA8 00214 #define CRC_FIELD0 0xA9 00215 #define RX_ADDRE_FIELD1 0xAA 00216 #define RX_ADDRE_FIELD0 0xAB 00217 #define RSSI_LEVEL_RUN 0xEF 00218 #define DEVICE_INFO1 0xF0 00219 #define DEVICE_INFO0 0xF1 00220 #define IRQ_STATUS3 0xFA 00221 #define IRQ_STATUS2 0xFB 00222 #define IRQ_STATUS1 0xFC 00223 #define IRQ_STATUS0 0xFD 00224 #define TX_FIFO 0xFF 00225 #define RX_FIFO 0xFF 00226 00227 #define SFD0 0x90 00228 #define SFD1 0x4e 00229 00230 #define DEFAULT_DEVIATION 125000 00231 #define RX_FILTER_BANDWIDTH 540000 00232 #define RSSI_THRESHOLD -85 00233 00234 // PCKTCTRL6 00235 #define PCKT_SYNCLEN_FIELD 0xFC 00236 #define PCKT_SYNCLEN (16 << 2) 00237 00238 // PCKTCTRL5 00239 #define PCKT_PREAMBLE_LEN 32 00240 00241 // PCKTCTRL3 00242 #define PCKT_FORMAT_FIELD 0xC0 00243 #define PCKT_FORMAT_802_15_4 (1 << 6) 00244 #define PCKT_RXMODE_FIELD 0x30 00245 #define PCKT_RXMODE_NORMAL (0 << 4) 00246 #define PCKT_BYTE_SWAP_FIELD 0x04 00247 #define PCKT_BYTE_SWAP_LSB (1 << 2) 00248 00249 // PCKTCTRL2 00250 #define PCKT_FIXVARLEN_FIELD 0x01 00251 #define PCKT_VARIABLE_LEN (1 << 0) 00252 #define PCKT_FCS_TYPE_FIELD 0x20 00253 #define PCKT_FCS_TYPE_4_OCTET (0 << 5) 00254 #define PCKT_FCS_TYPE_2_OCTET (1 << 5) 00255 00256 // PCKTCTRL1 00257 #define PCKT_CRCMODE_FIELD 0xE0 00258 #define PCKT_CRCMODE_0X1021 (3 << 5) 00259 #define PCKT_CRCMODE_0x04C11DB7 (5 << 5) 00260 #define PCKT_TXSOURCE_FIELD 0x0C 00261 #define PCKT_TXSOURCE_NORMAL (0 << 2) 00262 #define PCKT_WHITENING_FIELD 0x10 00263 #define PCKT_WHITENING_ENABLED (1 << 4) 00264 00265 // MOD4 00266 #define DATARATE_M_MSB 0x47 00267 // MOD3 00268 #define DATARATE_M_LSB 0xAE 00269 00270 // MOD2 00271 #define MOD_TYPE_FIELD 0xF0 00272 #define MOD_2FSK (0 << 4) 00273 #define MOD_2GFSK (10 << 4) 00274 #define DATARATE_E_FIELD 0x0F 00275 #define DATARATE_E (10 << 0) 00276 00277 // MOD1 00278 #define FDEV_E_FIELD 0x0F 00279 00280 // QI 00281 #define PQI_TH_FIELD 0x1E 00282 #define PQI_TH (8 << 1) 00283 #define SQI_EN_FIELD 0x01 00284 #define SQI_EN (1 << 0) 00285 00286 // SYNT3 00287 #define SYNT_FIELD 0x0F 00288 00289 // CHFLT 00290 #define CHFLT_M_FIELD 0xF0 00291 #define CHFLT_E_FIELD 0x0F 00292 00293 // LINK_QUALIF1 00294 #define CARRIER_SENSE (1 << 7) 00295 00296 #define SPI_WR_REG 0x00 00297 #define SPI_RD_REG 0x01 00298 #define SPI_CMD 0x80 00299 00300 typedef enum { 00301 S2LP_STATE_STANDBY = 0x02, 00302 S2LP_STATE_SLEEPA = 0x01, 00303 S2LP_STATE_SLEEPB = 0x03, 00304 S2LP_STATE_READY = 0x00, 00305 S2LP_STATE_LOCK = 0x0C, 00306 S2LP_STATE_RX = 0x30, 00307 S2LP_STATE_TX = 0x5C, 00308 S2LP_STATE_SYNTH_SETUP = 0x50 00309 } s2lp_states_e; 00310 00311 #if defined __cplusplus && __cplusplus >= 201103 00312 typedef enum : uint8_t { 00313 #else 00314 typedef enum { 00315 #endif 00316 S2LP_CMD_TX = 0x60, 00317 S2LP_CMD_RX, 00318 S2LP_CMD_READY, 00319 S2LP_CMD_STANDBY, 00320 S2LP_CMD_SLEEP, 00321 S2LP_CMD_LOCKRX, 00322 S2LP_CMD_LOCKTX, 00323 S2LP_CMD_SABORT, 00324 S2LP_CMD_LDC_RELOAD, 00325 S2LP_CMD_SRES = 0x70, 00326 S2LP_CMD_FLUSHRXFIFO, 00327 S2LP_CMD_FLUSHTXFIFO, 00328 S2LP_CMD_SEQUPDATE 00329 } s2lp_commands_e; 00330 00331 typedef enum { 00332 RF_IDLE, 00333 RF_CSMA_STARTED, 00334 RF_TX_STARTED, 00335 RF_RX_STARTED, 00336 RF_TX_ACK 00337 } rf_states_e; 00338 00339 #ifdef __cplusplus 00340 } 00341 #endif 00342 00343 #endif /* S2LPREG_H_ */
Generated on Tue Jul 12 2022 13:54:49 by
