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.
SX1272MB2xAS Class Reference
#include <sx1272-hal.h>
Inherits SX1272.
Public Member Functions | |
virtual uint8_t | DetectBoardType (void) |
Detect the board connected by reading the value of the antenna switch pin. | |
virtual bool | CheckRfFrequency (uint32_t frequency) |
Checks if the given RF frequency is supported by the hardware. | |
virtual void | Write (uint8_t addr, uint8_t data) |
Writes the radio register at the specified address. | |
virtual uint8_t | Read (uint8_t addr) |
Reads the radio register at the specified address. | |
virtual void | Write (uint8_t addr, uint8_t *buffer, uint8_t size) |
Writes multiple radio registers starting at address. | |
virtual void | Read (uint8_t addr, uint8_t *buffer, uint8_t size) |
Reads multiple radio registers starting at address. | |
virtual void | WriteFifo (uint8_t *buffer, uint8_t size) |
Writes the buffer contents to the SX1272 FIFO. | |
virtual void | ReadFifo (uint8_t *buffer, uint8_t size) |
Reads the contents of the SX1272 FIFO. | |
virtual void | Reset (void) |
Reset the SX1272. | |
virtual void | Init (RadioEvents_t *events) |
Initializes the radio. | |
virtual RadioState | GetStatus (void) |
virtual void | SetModem (RadioModems_t modem) |
Configures the SX1272 with the given modem. | |
virtual void | SetChannel (uint32_t freq) |
Sets the channel frequency. | |
virtual bool | IsChannelFree (RadioModems_t modem, uint32_t freq, int16_t rssiThresh) |
Sets the channels configuration. | |
virtual uint32_t | Random (void) |
Generates a 32 bits random value based on the RSSI readings. | |
virtual void | SetRxConfig (RadioModems_t modem, uint32_t bandwidth, uint32_t datarate, uint8_t coderate, uint32_t bandwidthAfc, uint16_t preambleLen, uint16_t symbTimeout, bool fixLen, uint8_t payloadLen, bool crcOn, bool freqHopOn, uint8_t hopPeriod, bool iqInverted, bool rxContinuous) |
Sets the reception parameters. | |
virtual void | SetTxConfig (RadioModems_t modem, int8_t power, uint32_t fdev, uint32_t bandwidth, uint32_t datarate, uint8_t coderate, uint16_t preambleLen, bool fixLen, bool crcOn, bool freqHopOn, uint8_t hopPeriod, bool iqInverted, uint32_t timeout) |
Sets the transmission parameters. | |
virtual uint32_t | TimeOnAir (RadioModems_t modem, uint8_t pktLen) |
Computes the packet time on air for the given payload. | |
virtual void | Send (uint8_t *buffer, uint8_t size) |
Sends the buffer of size. Prepares the packet to be sent and sets the radio in transmission. | |
virtual void | Sleep (void) |
Sets the radio in sleep mode. | |
virtual void | Standby (void) |
Sets the radio in standby mode. | |
virtual void | StartCad (void) |
Sets the radio in CAD mode. | |
virtual void | Rx (uint32_t timeout) |
Sets the radio in reception mode for the given time. | |
virtual void | Tx (uint32_t timeout) |
Sets the radio in transmission mode for the given time. | |
virtual void | SetTxContinuousWave (uint32_t freq, int8_t power, uint16_t time) |
Sets the radio in continuous wave transmission mode. | |
virtual int16_t | GetRssi (RadioModems_t modem) |
Reads the current RSSI value. | |
virtual void | SetMaxPayloadLength (RadioModems_t modem, uint8_t max) |
Sets the maximum payload length. | |
virtual void | SetPublicNetwork (bool enable) |
Sets the network to public or private. Updates the sync byte. | |
Protected Member Functions | |
virtual void | IoInit (void) |
Initializes the radio I/Os pins interface. | |
virtual void | RadioRegistersInit () |
Initializes the radio registers. | |
virtual void | SpiInit (void) |
Initializes the radio SPI. | |
virtual void | IoIrqInit (DioIrqHandler *irqHandlers) |
Initializes DIO IRQ handlers. | |
virtual void | IoDeInit (void) |
De-initializes the radio I/Os pins interface. | |
virtual void | SetRfTxPower (int8_t power) |
Sets the radio output power. | |
virtual uint8_t | GetPaSelect (uint32_t channel) |
Gets the board PA selection configuration. | |
virtual void | SetAntSwLowPower (bool status) |
Set the RF Switch I/Os pins in Low Power mode. | |
virtual void | AntSwInit (void) |
Initializes the RF Switch I/Os pins interface. | |
virtual void | AntSwDeInit (void) |
De-initializes the RF Switch I/Os pins interface. | |
virtual void | SetAntSw (uint8_t opMode) |
Controls the antena switch if necessary. | |
void | RxChainCalibration (void) |
virtual void | SetOpMode (uint8_t opMode) |
Sets the SX1272 operating mode. | |
virtual void | OnDio0Irq (void) |
DIO 0 IRQ callback. | |
virtual void | OnDio1Irq (void) |
DIO 1 IRQ callback. | |
virtual void | OnDio2Irq (void) |
DIO 2 IRQ callback. | |
virtual void | OnDio3Irq (void) |
DIO 3 IRQ callback. | |
virtual void | OnDio4Irq (void) |
DIO 4 IRQ callback. | |
virtual void | OnDio5Irq (void) |
DIO 5 IRQ callback. | |
virtual void | OnTimeoutIrq (void) |
Tx & Rx timeout timer callback. | |
Static Protected Member Functions | |
static uint8_t | GetFskBandwidthRegValue (uint32_t bandwidth) |
Protected Attributes | |
DigitalOut | RfSwitchCntr1 |
SPI | spi |
DigitalInOut | reset |
InterruptIn | dio0 |
DioIrqHandler * | dioIrq |
Timeout | txTimeoutTimer |
Detailed Description
Actual implementation of a SX1272 radio, includes some modifications to make it compatible with the MB1 LAS board
Definition at line 48 of file sx1272-hal.h.
Member Function Documentation
void AntSwDeInit | ( | void | ) | [protected, virtual] |
De-initializes the RF Switch I/Os pins interface.
- Remarks:
- Needed to decrease the power consumption in MCU lowpower modes
Implements SX1272.
Definition at line 330 of file sx1272-hal.cpp.
void AntSwInit | ( | void | ) | [protected, virtual] |
Initializes the RF Switch I/Os pins interface.
Implements SX1272.
Definition at line 316 of file sx1272-hal.cpp.
bool CheckRfFrequency | ( | uint32_t | frequency ) | [virtual] |
Checks if the given RF frequency is supported by the hardware.
- Parameters:
-
[IN] frequency RF frequency to be checked
- Return values:
-
isSupported [true: supported, false: unsupported]
Implements SX1272.
Definition at line 398 of file sx1272-hal.cpp.
uint8_t DetectBoardType | ( | void | ) | [virtual] |
Detect the board connected by reading the value of the antenna switch pin.
Definition at line 135 of file sx1272-hal.cpp.
uint8_t GetFskBandwidthRegValue | ( | uint32_t | bandwidth ) | [static, protected, inherited] |
Returns the known FSK bandwidth registers value
- Parameters:
-
[IN] bandwidth Bandwidth value in Hz
- Return values:
-
regValue Bandwidth register value.
Definition at line 161 of file sx1272.cpp.
uint8_t GetPaSelect | ( | uint32_t | channel ) | [protected, virtual] |
Gets the board PA selection configuration.
- Parameters:
-
[IN] channel Channel frequency in Hz
- Return values:
-
PaSelect RegPaConfig PaSelect value
Implements SX1272.
Definition at line 287 of file sx1272-hal.cpp.
int16_t GetRssi | ( | RadioModems_t | modem ) | [virtual, inherited] |
Reads the current RSSI value.
- Return values:
-
rssiValue Current RSSI value in [dBm]
Implements Radio.
Definition at line 824 of file sx1272.cpp.
RadioState GetStatus | ( | void | ) | [virtual, inherited] |
Return current radio status
- Parameters:
-
status Radio status. [RF_IDLE, RX_RUNNING, TX_RUNNING]
Implements Radio.
Definition at line 82 of file sx1272.cpp.
void Init | ( | RadioEvents_t * | events ) | [virtual, inherited] |
Initializes the radio.
- Parameters:
-
[IN] events Structure containing the driver callback functions
Implements Radio.
Definition at line 77 of file sx1272.cpp.
void IoDeInit | ( | void | ) | [protected, virtual] |
De-initializes the radio I/Os pins interface.
- Remarks:
- Useful when going in MCU lowpower modes
Implements SX1272.
Definition at line 208 of file sx1272-hal.cpp.
void IoInit | ( | void | ) | [protected, virtual] |
Initializes the radio I/Os pins interface.
Implements SX1272.
Definition at line 161 of file sx1272-hal.cpp.
void IoIrqInit | ( | DioIrqHandler * | irqHandlers ) | [protected, virtual] |
Initializes DIO IRQ handlers.
- Parameters:
-
[IN] irqHandlers Array containing the IRQ callback functions
Implements SX1272.
Definition at line 192 of file sx1272-hal.cpp.
bool IsChannelFree | ( | RadioModems_t | modem, |
uint32_t | freq, | ||
int16_t | rssiThresh | ||
) | [virtual, inherited] |
Sets the channels configuration.
- Parameters:
-
[IN] modem Radio modem to be used [0: FSK, 1: LoRa] [IN] freq Channel RF frequency [IN] rssiThresh RSSI threshold
- Return values:
-
isFree [true: Channel is free, false: Channel is not free]
Implements Radio.
Definition at line 96 of file sx1272.cpp.
void OnDio0Irq | ( | void | ) | [protected, virtual, inherited] |
DIO 0 IRQ callback.
Definition at line 998 of file sx1272.cpp.
void OnDio1Irq | ( | void | ) | [protected, virtual, inherited] |
DIO 1 IRQ callback.
Definition at line 1185 of file sx1272.cpp.
void OnDio2Irq | ( | void | ) | [protected, virtual, inherited] |
DIO 2 IRQ callback.
Definition at line 1262 of file sx1272.cpp.
void OnDio3Irq | ( | void | ) | [protected, virtual, inherited] |
DIO 3 IRQ callback.
Definition at line 1332 of file sx1272.cpp.
void OnDio4Irq | ( | void | ) | [protected, virtual, inherited] |
DIO 4 IRQ callback.
Definition at line 1363 of file sx1272.cpp.
void OnDio5Irq | ( | void | ) | [protected, virtual, inherited] |
DIO 5 IRQ callback.
Definition at line 1382 of file sx1272.cpp.
void OnTimeoutIrq | ( | void | ) | [protected, virtual, inherited] |
Tx & Rx timeout timer callback.
Definition at line 928 of file sx1272.cpp.
void RadioRegistersInit | ( | ) | [protected, virtual] |
uint32_t Random | ( | void | ) | [virtual, inherited] |
Generates a 32 bits random value based on the RSSI readings.
- Remarks:
- This function sets the radio in LoRa modem mode and disables all interrupts. After calling this function either Radio.SetRxConfig or Radio.SetTxConfig functions must be called.
- Return values:
-
randomValue 32 bits random value
Implements Radio.
Definition at line 119 of file sx1272.cpp.
void Read | ( | uint8_t | addr, |
uint8_t * | buffer, | ||
uint8_t | size | ||
) | [virtual] |
Reads multiple radio registers starting at address.
- Parameters:
-
[IN] addr First Radio register address [OUT] buffer Buffer where to copy the registers data [IN] size Number of registers to be read
Implements SX1272.
Definition at line 438 of file sx1272-hal.cpp.
uint8_t Read | ( | uint8_t | addr ) | [virtual] |
Reads the radio register at the specified address.
- Parameters:
-
[IN],: addr Register address
- Return values:
-
data Register value
Implements SX1272.
Definition at line 418 of file sx1272-hal.cpp.
void ReadFifo | ( | uint8_t * | buffer, |
uint8_t | size | ||
) | [virtual] |
Reads the contents of the SX1272 FIFO.
- Parameters:
-
[OUT] buffer Buffer where to copy the FIFO read data. [IN] size Number of bytes to be read from the FIFO
Implements SX1272.
Definition at line 456 of file sx1272-hal.cpp.
void Reset | ( | void | ) | [virtual] |
void Rx | ( | uint32_t | timeout ) | [virtual, inherited] |
Sets the radio in reception mode for the given time.
- Parameters:
-
[IN] timeout Reception timeout [ms] [0: continuous, others timeout]
Implements Radio.
Definition at line 593 of file sx1272.cpp.
void RxChainCalibration | ( | void | ) | [protected, inherited] |
Performs the Rx chain calibration for LF and HF bands
- Remarks:
- Must be called just after the reset so all registers are at their default values
void Send | ( | uint8_t * | buffer, |
uint8_t | size | ||
) | [virtual, inherited] |
Sends the buffer of size. Prepares the packet to be sent and sets the radio in transmission.
- Parameters:
-
[IN],: buffer Buffer pointer [IN],: size Buffer size
Implements Radio.
Definition at line 501 of file sx1272.cpp.
void SetAntSw | ( | uint8_t | opMode ) | [protected, virtual] |
Controls the antena switch if necessary.
- Remarks:
- see errata note
- Parameters:
-
[IN] opMode Current radio operating mode
Implements SX1272.
Definition at line 344 of file sx1272-hal.cpp.
void SetAntSwLowPower | ( | bool | status ) | [protected, virtual] |
Set the RF Switch I/Os pins in Low Power mode.
- Parameters:
-
[IN] status enable or disable
Implements SX1272.
Definition at line 299 of file sx1272-hal.cpp.
void SetChannel | ( | uint32_t | freq ) | [virtual, inherited] |
Sets the channel frequency.
- Parameters:
-
[IN] freq Channel RF frequency
Implements Radio.
Definition at line 87 of file sx1272.cpp.
void SetMaxPayloadLength | ( | RadioModems_t | modem, |
uint8_t | max | ||
) | [virtual, inherited] |
Sets the maximum payload length.
- Parameters:
-
[IN] modem Radio modem to be used [0: FSK, 1: LoRa] [IN] max Maximum payload length in bytes
Implements Radio.
Definition at line 894 of file sx1272.cpp.
void SetModem | ( | RadioModems_t | modem ) | [virtual, inherited] |
Configures the SX1272 with the given modem.
- Parameters:
-
[IN] modem Modem to be used [0: FSK, 1: LoRa]
Implements Radio.
Definition at line 857 of file sx1272.cpp.
void SetOpMode | ( | uint8_t | opMode ) | [protected, virtual, inherited] |
Sets the SX1272 operating mode.
- Parameters:
-
[IN] opMode New operating mode
Definition at line 843 of file sx1272.cpp.
void SetPublicNetwork | ( | bool | enable ) | [virtual, inherited] |
Sets the network to public or private. Updates the sync byte.
- Remarks:
- Applies to LoRa modem only
- Parameters:
-
[IN] enable if true, it enables a public network
Implements Radio.
Definition at line 912 of file sx1272.cpp.
void SetRfTxPower | ( | int8_t | power ) | [protected, virtual] |
Sets the radio output power.
- Parameters:
-
[IN] power Sets the RF output power
Implements SX1272.
Definition at line 213 of file sx1272-hal.cpp.
void SetRxConfig | ( | RadioModems_t | modem, |
uint32_t | bandwidth, | ||
uint32_t | datarate, | ||
uint8_t | coderate, | ||
uint32_t | bandwidthAfc, | ||
uint16_t | preambleLen, | ||
uint16_t | symbTimeout, | ||
bool | fixLen, | ||
uint8_t | payloadLen, | ||
bool | crcOn, | ||
bool | freqHopOn, | ||
uint8_t | hopPeriod, | ||
bool | iqInverted, | ||
bool | rxContinuous | ||
) | [virtual, inherited] |
Sets the reception parameters.
- Parameters:
-
[IN] modem Radio modem to be used [0: FSK, 1: LoRa] [IN] bandwidth Sets the bandwidth FSK : >= 2600 and <= 250000 Hz LoRa: [0: 125 kHz, 1: 250 kHz, 2: 500 kHz, 3: Reserved] [IN] datarate Sets the Datarate FSK : 600..300000 bits/s LoRa: [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips] [IN] coderate Sets the coding rate ( LoRa only ) FSK : N/A ( set to 0 ) LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] [IN] bandwidthAfc Sets the AFC Bandwidth ( FSK only ) FSK : >= 2600 and <= 250000 Hz LoRa: N/A ( set to 0 ) [IN] preambleLen Sets the Preamble length ( LoRa only ) FSK : N/A ( set to 0 ) LoRa: Length in symbols ( the hardware adds 4 more symbols ) [IN] symbTimeout Sets the RxSingle timeout value FSK : timeout number of bytes LoRa: timeout in symbols [IN] fixLen Fixed length packets [0: variable, 1: fixed] [IN] payloadLen Sets payload length when fixed lenght is used [IN] crcOn Enables/Disables the CRC [0: OFF, 1: ON] [IN] freqHopOn Enables disables the intra-packet frequency hopping [0: OFF, 1: ON] (LoRa only) [IN] hopPeriod Number of symbols bewteen each hop (LoRa only) [IN] iqInverted Inverts IQ signals ( LoRa only ) FSK : N/A ( set to 0 ) LoRa: [0: not inverted, 1: inverted] [IN] rxContinuous Sets the reception in continuous mode [false: single mode, true: continuous mode]
Implements Radio.
Definition at line 176 of file sx1272.cpp.
void SetTxConfig | ( | RadioModems_t | modem, |
int8_t | power, | ||
uint32_t | fdev, | ||
uint32_t | bandwidth, | ||
uint32_t | datarate, | ||
uint8_t | coderate, | ||
uint16_t | preambleLen, | ||
bool | fixLen, | ||
bool | crcOn, | ||
bool | freqHopOn, | ||
uint8_t | hopPeriod, | ||
bool | iqInverted, | ||
uint32_t | timeout | ||
) | [virtual, inherited] |
Sets the transmission parameters.
- Parameters:
-
[IN] modem Radio modem to be used [0: FSK, 1: LoRa] [IN] power Sets the output power [dBm] [IN] fdev Sets the frequency deviation ( FSK only ) FSK : [Hz] LoRa: 0 [IN] bandwidth Sets the bandwidth ( LoRa only ) FSK : 0 LoRa: [0: 125 kHz, 1: 250 kHz, 2: 500 kHz, 3: Reserved] [IN] datarate Sets the Datarate FSK : 600..300000 bits/s LoRa: [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips] [IN] coderate Sets the coding rate ( LoRa only ) FSK : N/A ( set to 0 ) LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] [IN] preambleLen Sets the preamble length [IN] fixLen Fixed length packets [0: variable, 1: fixed] [IN] crcOn Enables disables the CRC [0: OFF, 1: ON] [IN] freqHopOn Enables disables the intra-packet frequency hopping [0: OFF, 1: ON] (LoRa only) [IN] hopPeriod Number of symbols bewteen each hop (LoRa only) [IN] iqInverted Inverts IQ signals ( LoRa only ) FSK : N/A ( set to 0 ) LoRa: [0: not inverted, 1: inverted] [IN] timeout Transmission timeout [ms]
Implements Radio.
Definition at line 319 of file sx1272.cpp.
void SetTxContinuousWave | ( | uint32_t | freq, |
int8_t | power, | ||
uint16_t | time | ||
) | [virtual, inherited] |
Sets the radio in continuous wave transmission mode.
- Parameters:
-
[IN],: freq Channel RF frequency [IN],: power Sets the output power [dBm] [IN],: time Transmission mode timeout [s]
Implements Radio.
Definition at line 806 of file sx1272.cpp.
void Sleep | ( | void | ) | [virtual, inherited] |
void SpiInit | ( | void | ) | [protected, virtual] |
void Standby | ( | void | ) | [virtual, inherited] |
void StartCad | ( | void | ) | [virtual, inherited] |
uint32_t TimeOnAir | ( | RadioModems_t | modem, |
uint8_t | pktLen | ||
) | [virtual, inherited] |
Computes the packet time on air for the given payload.
Can only be called once SetRxConfig or SetTxConfig have been called
- Parameters:
-
[IN] modem Radio modem to be used [0: FSK, 1: LoRa] [IN] pktLen Packet payload length
- Return values:
-
airTime Computed airTime for the given packet payload length
Implements Radio.
Definition at line 444 of file sx1272.cpp.
void Tx | ( | uint32_t | timeout ) | [virtual, inherited] |
Sets the radio in transmission mode for the given time.
- Parameters:
-
[IN] timeout Transmission timeout [ms] [0: continuous, others timeout]
Implements Radio.
Definition at line 711 of file sx1272.cpp.
void Write | ( | uint8_t | addr, |
uint8_t * | buffer, | ||
uint8_t | size | ||
) | [virtual] |
Writes multiple radio registers starting at address.
- Parameters:
-
[IN] addr First Radio register address [IN] buffer Buffer containing the new register's values [IN] size Number of registers to be written
Implements SX1272.
Definition at line 425 of file sx1272-hal.cpp.
void Write | ( | uint8_t | addr, |
uint8_t | data | ||
) | [virtual] |
Writes the radio register at the specified address.
- Parameters:
-
[IN],: addr Register address [IN],: data New register value
Implements SX1272.
Definition at line 413 of file sx1272-hal.cpp.
void WriteFifo | ( | uint8_t * | buffer, |
uint8_t | size | ||
) | [virtual] |
Writes the buffer contents to the SX1272 FIFO.
- Parameters:
-
[IN] buffer Buffer containing data to be put on the FIFO. [IN] size Number of bytes to be written to the FIFO
Implements SX1272.
Definition at line 451 of file sx1272-hal.cpp.
Field Documentation
DioIrqHandler* dioIrq [protected, inherited] |
DigitalOut RfSwitchCntr1 [protected] |
Antenna switch GPIO pins objects
Definition at line 55 of file sx1272-hal.h.
Timeout txTimeoutTimer [protected, inherited] |
Generated on Tue Jul 12 2022 19:00:55 by
