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.
alpha433.h
00001 /******************************************************************************************* 00002 * 00003 * University of York Robot Lab Pi Swarm Library: 433MHz Alpha Transceiver Driver 00004 * 00005 * (C) Dr James Hilder, Dept. Electronics & Computer Science, University of York 00006 * 00007 * Version 0.5 February 2014 00008 * 00009 * Designed for use with the Pi Swarm Board (enhanced MBED sensor board) v1.2 00010 * 00011 ******************************************************************************************/ 00012 00013 #ifndef ALPHA433_H 00014 #define ALPHA433_H 00015 00016 00017 // 00018 // Defines 00019 // 00020 #define ALPHA433_FREQUENCY_315 0x0000 00021 #define ALPHA433_FREQUENCY_433 0x0010 00022 #define ALPHA433_FREQUENCY_868 0x0020 00023 #define ALPHA433_FREQUENCY_915 0x0030 00024 #define ALPHA433_CRYSTAL_LOAD_85 0x0000 00025 #define ALPHA433_CRYSTAL_LOAD_90 0x0001 00026 #define ALPHA433_CRYSTAL_LOAD_95 0x0002 00027 #define ALPHA433_CRYSTAL_LOAD_100 0x0003 00028 #define ALPHA433_CRYSTAL_LOAD_105 0x0004 00029 #define ALPHA433_CRYSTAL_LOAD_110 0x0005 00030 #define ALPHA433_CRYSTAL_LOAD_115 0x0006 00031 #define ALPHA433_CRYSTAL_LOAD_120 0x0007 00032 #define ALPHA433_CRYSTAL_LOAD_125 0x0008 00033 #define ALPHA433_CRYSTAL_LOAD_130 0x0009 00034 #define ALPHA433_CRYSTAL_LOAD_135 0x000A 00035 #define ALPHA433_CRYSTAL_LOAD_140 0x000B 00036 #define ALPHA433_CRYSTAL_LOAD_145 0x000C 00037 #define ALPHA433_CRYSTAL_LOAD_150 0x000D 00038 #define ALPHA433_CRYSTAL_LOAD_155 0x000E 00039 #define ALPHA433_CRYSTAL_LOAD_160 0x000F 00040 #define ALPHA433_USE_FIFO_YES 0x00C0 00041 #define ALPHA433_USE_FIFO_NO 0x0000 00042 #define ALPHA433_PIN20_INTERRUPT_IN 0x0000 00043 #define ALPHA433_PIN20_VDI_OUT 0x0400 00044 #define ALPHA433_VDI_RESPONSE_FAST 0x0000 00045 #define ALPHA433_VDI_RESPONSE_MEDIUM 0x0100 00046 #define ALPHA433_VDI_RESPONSE_SLOW 0x0200 00047 #define ALPHA433_VDI_RESPONSE_ALWAYS 0x0300 00048 #define ALPHA433_BANDWIDTH_400 0x0020 00049 #define ALPHA433_BANDWIDTH_340 0x0040 00050 #define ALPHA433_BANDWIDTH_270 0x0060 00051 #define ALPHA433_BANDWIDTH_200 0x0080 00052 #define ALPHA433_BANDWIDTH_134 0x00A0 00053 #define ALPHA433_BANDWIDTH_67 0x00C0 00054 #define ALPHA433_LNA_GAIN_0 0x0000 00055 #define ALPHA433_LNA_GAIN_6 0x0080 00056 #define ALPHA433_LNA_GAIN_14 0x0100 00057 #define ALPHA433_LNA_GAIN_20 0x0180 00058 #define ALPHA433_RSSI_103 0x0000 00059 #define ALPHA433_RSSI_97 0x0001 00060 #define ALPHA433_RSSI_91 0x0002 00061 #define ALPHA433_RSSI_85 0x0003 00062 #define ALPHA433_RSSI_79 0x0004 00063 #define ALPHA433_RSSI_73 0x0005 00064 #define ALPHA433_RSSI_67 0x0006 00065 #define ALPHA433_RSSI_61 0x0007 00066 #define ALPHA433_CLOCK_RECOVERY_AUTO 0x0080 00067 #define ALPHA433_CLOCK_RECOVERY_FAST 0x0040 00068 #define ALPHA433_CLOCK_RECOVERY_SLOW 0x0000 00069 #define ALPHA433_FILTER_DIGITAL 0x0000 00070 #define ALPHA433_FILTER_ANALOG 0x0010 00071 #define ALPHA433_DQD_0 0x0000 00072 #define ALPHA433_DQD_1 0x0001 00073 #define ALPHA433_DQD_2 0x0002 00074 #define ALPHA433_DQD_3 0x0003 00075 #define ALPHA433_DQD_4 0x0004 00076 #define ALPHA433_DQD_5 0x0005 00077 #define ALPHA433_DQD_6 0x0006 00078 #define ALPHA433_DQD_7 0x0007 00079 #define ALPHA433_FIFO_LEVEL_0 0x0000 00080 #define ALPHA433_FIFO_LEVEL_1 0x0010 00081 #define ALPHA433_FIFO_LEVEL_2 0x0020 00082 #define ALPHA433_FIFO_LEVEL_3 0x0030 00083 #define ALPHA433_FIFO_LEVEL_4 0x0040 00084 #define ALPHA433_FIFO_LEVEL_5 0x0050 00085 #define ALPHA433_FIFO_LEVEL_6 0x0060 00086 #define ALPHA433_FIFO_LEVEL_7 0x0070 00087 #define ALPHA433_FIFO_LEVEL_8 0x0080 00088 #define ALPHA433_FIFO_LEVEL_9 0x0090 00089 #define ALPHA433_FIFO_LEVEL_10 0x00A0 00090 #define ALPHA433_FIFO_LEVEL_11 0x00B0 00091 #define ALPHA433_FIFO_LEVEL_12 0x00C0 00092 #define ALPHA433_FIFO_LEVEL_13 0x00D0 00093 #define ALPHA433_FIFO_LEVEL_14 0x00E0 00094 #define ALPHA433_FIFO_LEVEL_15 0x00F0 00095 #define ALPHA433_FIFO_FILL_PATTERN 0x0000 00096 #define ALPHA433_FIFO_FILL_ALWAYS 0x0004 00097 #define ALPHA433_HI_SENS_RESET_ENABLE 0x0000 00098 #define ALPHA433_HI_SENS_RESET_DISABLE 0x0001 00099 #define ALPHA433_AFC_MODE_NOAUTO 0x0000 00100 #define ALPHA433_AFC_MODE_ONCE 0x0040 00101 #define ALPHA433_AFC_MODE_VDI 0x0080 00102 #define ALPHA433_AFC_MODE_INDEPENDENT 0x00C0 00103 #define ALPHA433_AFC_RANGE_3TO4 0x0030 00104 #define ALPHA433_AFC_RANGE_7TO8 0x0020 00105 #define ALPHA433_AFC_RANGE_15TO16 0x0010 00106 #define ALPHA433_AFC_RANGE_NO_RES 0x0000 00107 #define ALPHA433_AFC_FINE_ENABLE 0x0004 00108 #define ALPHA433_AFC_FINE_DISABLE 0x0000 00109 #define ALPHA433_AFC_ENABLE 0x0003 00110 #define ALPHA433_AFC_DISABLE 0x0000 00111 #define ALPHA433_MOD_POLARITY_P 0x0000 00112 #define ALPHA433_MOD_POLARITY_N 0x0100 00113 #define ALPHA433_MOD_FREQUENCY_15 0x0000 00114 #define ALPHA433_MOD_FREQUENCY_30 0x0010 00115 #define ALPHA433_MOD_FREQUENCY_45 0x0020 00116 #define ALPHA433_MOD_FREQUENCY_60 0x0030 00117 #define ALPHA433_MOD_FREQUENCY_75 0x0040 00118 #define ALPHA433_MOD_FREQUENCY_90 0x0050 00119 #define ALPHA433_MOD_FREQUENCY_105 0x0060 00120 #define ALPHA433_MOD_FREQUENCY_120 0x0070 00121 #define ALPHA433_MOD_FREQUENCY_135 0x0080 00122 #define ALPHA433_MOD_FREQUENCY_150 0x0090 00123 #define ALPHA433_MOD_FREQUENCY_165 0x00A0 00124 #define ALPHA433_MOD_FREQUENCY_180 0x00B0 00125 #define ALPHA433_MOD_FREQUENCY_195 0x00C0 00126 #define ALPHA433_MOD_FREQUENCY_210 0x00D0 00127 #define ALPHA433_MOD_FREQUENCY_225 0x00E0 00128 #define ALPHA433_MOD_FREQUENCY_240 0x00F0 00129 #define ALPHA433_TX_POWER_0 0x0000 00130 #define ALPHA433_TX_POWER_3 0x0001 00131 #define ALPHA433_TX_POWER_6 0x0002 00132 #define ALPHA433_TX_POWER_9 0x0003 00133 #define ALPHA433_TX_POWER_12 0x0004 00134 #define ALPHA433_TX_POWER_15 0x0005 00135 #define ALPHA433_TX_POWER_18 0x0006 00136 #define ALPHA433_TX_POWER_21 0x0007 00137 #define ALPHA433_CLK_OUT_1 0x0000 00138 #define ALPHA433_CLK_OUT_125 0x0020 00139 #define ALPHA433_CLK_OUT_166 0x0040 00140 #define ALPHA433_CLK_OUT_2 0x0060 00141 #define ALPHA433_CLK_OUT_25 0x0080 00142 #define ALPHA433_CLK_OUT_333 0x00A0 00143 #define ALPHA433_CLK_OUT_5 0x00C0 00144 #define ALPHA433_CLK_OUT_10 0x00E0 00145 #define ALPHA433_LOW_BAT22 0x0000 00146 #define ALPHA433_STATUS_TX_NEXT_BYTE 0x8000 00147 #define ALPHA433_STATUS_FIFO_LIMIT_REACHED 0x8000 00148 #define ALPHA433_STATUS_POWER_ON_RESET 0x4000 00149 #define ALPHA433_STATUS_RX_OVERFLOW 0x2000 00150 #define ALPHA433_STATUS_TX_UNDERRUN 0x2000 00151 #define ALPHA433_STATUS_WAKEUP 0x1000 00152 #define ALPHA433_STATUS_EXT 0x0800 00153 #define ALPHA433_STATUS_LOW_BATTERY 0x0400 00154 #define ALPHA433_STATUS_FIFO_EMPTY 0x0200 00155 #define ALPHA433_STATUS_STRONG_SIGNAL 0x0100 00156 #define ALPHA433_STATUS_RSSI 0x0100 00157 #define ALPHA433_STATUS_DQD 0x0080 00158 #define ALPHA433_STATUS_CLOCK_LOCKED 0x0040 00159 #define ALPHA433_TRANSMIT_OK 0 00160 #define ALPHA433_TRANSMIT_TIMEOUT 1 00161 #define ALPHA433_TRANSMIT_PARITY_ERROR 2 00162 #define ALPHA433_RECEIVE_OK 0 00163 #define ALPHA433_RECEIVE_TIMEOUT 1 00164 #define ALPHA433_RECEIVE_PARITY_ERROR 2 00165 #define ALPHA433_NODATA 0 00166 #define ALPHA433_DATA_AVAIABLE 1 00167 #define ALPHA433_MODE_TRANSMITTING 1 00168 #define ALPHA433_MODE_RECEIVING 2 00169 #define ALPHA433_MODE_SWITCHING 0 00170 00171 // ----------------------------- default user configuration -------------------------------- 00172 00173 #define ALPHA433_FREQUENCY ALPHA433_FREQUENCY_433 00174 #define ALPHA433_CRYSTAL_LOAD ALPHA433_CRYSTAL_LOAD_100 00175 #define ALPHA433_USE_FIFO ALPHA433_USE_FIFO_YES 00176 #define ALPHA433_PIN20 ALPHA433_PIN20_INTERRUPT_IN 00177 #define ALPHA433_VDI_RESPONSE ALPHA433_VDI_RESPONSE_SLOW 00178 #define ALPHA433_BANDWIDTH ALPHA433_BANDWIDTH_134 00179 #define ALPHA433_LNA_GAIN ALPHA433_LNA_GAIN_0 00180 #define ALPHA433_RSSI ALPHA433_RSSI_97 00181 #define ALPHA433_CLOCK_RECOVERY ALPHA433_CLOCK_RECOVERY_SLOW 00182 #define ALPHA433_FILTER ALPHA433_FILTER_DIGITAL 00183 #define ALPHA433_DQD ALPHA433_DQD_4 00184 #define ALPHA433_FIFO_LEVEL ALPHA433_FIFO_LEVEL_8 00185 #define ALPHA433_FIFO_FILL ALPHA433_FIFO_FILL_PATTERN 00186 #define ALPHA433_HI_SENS_RESET ALPHA433_HI_SENS_RESET_DISABLE 00187 #define ALPHA433_AFC_MODE ALPHA433_AFC_MODE_INDEPENDENT 00188 #define ALPHA433_AFC_RANGE ALPHA433_AFC_RANGE_3TO4 00189 #define ALPHA433_AFC_FINE_MODE ALPHA433_AFC_FINE_DISABLE 00190 #define ALPHA433_AFC ALPHA433_AFC_DISABLE 00191 #define ALPHA433_MOD_POLARITY ALPHA433_MOD_POLARITY_P 00192 #define ALPHA433_MOD_FREQUENCY ALPHA433_MOD_FREQUENCY_90 00193 #define ALPHA433_TX_POWER ALPHA433_TX_POWER_0 00194 #define ALPHA433_CLK_OUT ALPHA433_CLK_OUT_2 00195 #define ALPHA433_LOW_BAT ALPHA433_LOW_BAT22 00196 #define ALPHA433_TIMEOUT 100 00197 #define TIMEOUT 8.0 00198 00199 class Alpha433 : public Stream 00200 { 00201 00202 // Public Functions 00203 00204 public: 00205 00206 /** Create the alpha433 object connected to the default pins 00207 * 00208 * @param mosi pin - default is p5 00209 * @param miso pin - default is p6 00210 * @param sck pin - default is p7 00211 * @param fss pin - default is p8 00212 * @param nirq pin - default is p11 00213 */ 00214 Alpha433(); 00215 00216 /** Create the alpha433 object connected to specific pins 00217 * 00218 */ 00219 Alpha433(PinName mosi, PinName miso, PinName sck, PinName fss, PinName nirq); 00220 00221 00222 // Send a string to the RF transmitter 00223 unsigned long sendString(char ucCount, char* ucBuffer); 00224 00225 // Enable RF Transmitter 00226 void enableTransmitter(void); 00227 00228 // Disable RF Transmitter 00229 void disableTransmitter(void); 00230 00231 // Enable RF Receiver 00232 void enableReceiver(void); 00233 00234 // Disable RF Receiver 00235 void disableReceiver(void); 00236 00237 // SSI FiFo Clear 00238 void clearBuffer(void); 00239 00240 // Reset RF 00241 void rf_reset(void); 00242 00243 // Initialise RF 00244 void rf_init(void); 00245 00246 // RF Interrupt 00247 void interrupt(void); 00248 00249 // RF Set Datarate 00250 void setDatarate(unsigned long ulValue); 00251 00252 // RF Set Frequency 00253 void setFrequency(unsigned long ulValue); 00254 00255 // Enable RF Receiver FiFo fill 00256 void enableFifoFill(void); 00257 00258 // Disable RF Receiver FiFo fill 00259 void disableFifoFill(void); 00260 00261 // Handle new RF Data 00262 void dataAvailable(char cCount, char* cBuffer); 00263 00264 // Read status byte 00265 int readStatusByte(); 00266 00267 // Reset timeout: stops hanging on bad receive; resets alpha 433 00268 void timeout(); 00269 00270 private : 00271 00272 SPI _spi; 00273 DigitalOut _fss; 00274 DigitalIn _nirq_test; 00275 InterruptIn _nirq; 00276 00277 //Write a byte (data) to address 00278 void _write(int address); 00279 00280 //Read a byte (return val) from address 00281 int _read(int address); 00282 00283 virtual int _putc(int c); 00284 virtual int _getc(); 00285 00286 }; 00287 00288 #endif // ALPHA433_H
Generated on Wed Jul 27 2022 21:17:49 by
1.7.2