• sales

    +86-0755-88291180

Core1121-HF User Guide

Overview

Introduction

This product is a long-range, ultra-low-power transceiver that supports ISM sub GHz (150-960MHz), global 2.4GHz band, and 1.9-2.1GHz satellite band, suitable for terrestrial and satellite communication applications. It supports LoRa®, (G)FSK, and LR-FHSS modulation methods, and can be used in LoRaWAN® standard networks or private protocols to meet the needs of LPWAN applications. The LR1121 integrates a low-power multi-band RF front-end with extremely high frequency configuration flexibility.

Features

  • Adopts the third-generation ultra-low power LoRa® transceiver LR1121 from the Semtech LR11xx series
  • Supports Sub-GHz (150–960 MHz), S band (1.9–2.1 GHz), and 2.4GHz ISM bands
  • Builds a low-power wide-area network through LoRa or LoRaWAN protocol combined with gateway access to the cloud
  • Supports LoRa, (G)FSK, and LR-FHSS modulation modes, and is compatible with the SX126x/SX127x bands, facilitating product upgrades
  • SPI interface communication, supporting mainstream MCU platforms, easy to integrate and port
  • Integrates AES-128 encryption engine to enhance data security
  • Supports TCXO crystal oscillator to ensure frequency stability in high and low temperature conditions
  • Suitable for industrial telemetry, smart home, environmental monitoring, remote data acquisition, and other IoT application scenarios
  • Provide complete supporting manuals (demos and user manuals for ESP32, Raspberry Pi, STM32, Raspberry Pi Pico, etc.)

Specifications

VersionCore1121-HFCore1121-LF
RF characteristics
RF chipLR1121
Operating frequency band850 ~ 930MHz410 ~ 510MHz
1900~2100 MHz, 2400~2500MHz
Signal modulationLoRa, (G)FSK, LR-FHSS
Communication rateLoRa: 0.091 ~ 62.5Kbps
(G)FSK: 0.6 ~ 300Kbps
Transmission power-9~22dBm@Sub-GHz band, -18~13dBm@ISM band
Reception sensitivity-127dBm@Sub-GHz band, SF=7, CR4_5, BWL=125KHz
-111dBm@ISM band, SF=7, CR4_5, BWL=800KHz
Reference communication distanceSub-GHz band, 5km
ISM band, 2km
Spreading factorSF5 ~ SF12
Electrical characteristics
Operating voltage3.3V (up to 3.8V)
Logic voltage3.3V (other logic levels require a level converter)
Module power consumptionTransmission Current: 115mA@22dBm Sub-GHz, 25mA@13dBm ISM
Reception current: 9.2mA@125KHz Sub-GHz, 8.1mA@125KHz ISM
Hardware characteristics
Communication portSPI
Crystal oscillatorTCXO 32MHz
Antenna interfaceIPEX-4 or castellated module (Castellated module requires additional operation, please refer to the Wiki information for details)
Antenna ProtectionTVS protection
Operating temperature-40 ~ 85℃
Port typeCastellated module, 2.54mm pitch
Dimensions19.00mm × 22.00mm

  • The logic level of the module is 3.3V. If using 5V IO levels, level conversion is required; otherwise, the module may be damaged.
  • The communication rate of the module is affected by parameters such as frequency offset and preamble
  • Communication distance can be extended further in open environments.

Hardware Selection


Pinout Definition


  • *_ANT pin is the antenna pin. If you need to use it, you need to remove the IPEX-4 connector and solder a 0Ω 0201 resistor to it. Otherwise, it will be left unconnected, as shown in the figure below:


Communication Introduction

The LR1121 provides a set of APIs that allow the master controller to communicate with the LR1121 through a series of SPI commands/responses. The BUSY signal is used as a handshake mechanism to indicate if the LR1121 is ready to receive commands. Therefore, you must check the status of BUSY before sending a command.

  • Write command
    • During the write command process, LR1121 will return the status register and interrupt register to the controller via the MOSI pin, depending on the command opcode and parameter length.
    • The controller first sends a 16-bit operation code (opcode) and then sends the required parameters.
    • When there is a falling edge on the NSS pin, the LR1121 will automatically pull up the BUSY signal to indicate that the command is being processed.
    • Once the LR1121 finishes processing the command, the BUSY signal is released (pulled low) to indicate that the device is ready to receive the next command.


  • Read command
    • Specific read commands are used to get data from the LR1121, such as internal status results, etc.
    • The main controller sends a 16-bit operation code (opcode) first, and additional parameters if needed.
    • When there is a falling edge on the NSS pin, the BUSY signal automatically pulls up to indicate that the LR1121 is preparing data.
    • Once the data is ready, the BUSY signal is released (pulled low) to indicate that the data can be read.
    • At this point, the controller removes (reads) the returned data from SPI by continuously sending NOP (0x00 bytes).


Dimensions


Demo Introduction

  • Except for lr1121_firmware_update, lr1121_read, and lr1121_write, the following examples are ported from the Semtech official website lr11xx example.
  • Core1121-XF demo
DemoBasic Description
lr1121_cadExecute Channel Activity Detection (CAD) - LoRa only
lr1121_firmware_updateLR1121 firmware update tool
lr1121_lr_fhssTransmit LR-FHSS format data packets
lr1121_perExecute data packet error rate (PER) test — Tx and Rx roles
lr1121_ping_pongInitiate data exchange between two devices
lr1121_readEnter receive mode
lr1121_sigfoxSend Sigfox-compliant uplinks
lr1121_spectral_scanGet the inst-RSSI values in RX mode to form a heatmap
lr1121_spetrum_displayGet the inst-RSSI values in RX mode and form a dynamic spectrum curve
lr1121_tx_cwTx continuous wave mode
lr1121_tx_infinite_preambleTransmit infinite preamble
lr1121_writeSend data periodically
lr1121_LoRaWANSimple LoRaWAN Class A application

Demo Description

  • Each demo has its own set of parameters, see the .h file in the folder
  • lr1121_config is the configuration file, where you can set the parameters, including:
    • Packet type (PACKET_TYPE)
    • RF frequency (RF_FREQ_IN_HZ)
    • Output power (TX_OUTPUT_POWER_DBM)
    • Packets and modulation parameters of different modulations

lr1121_cad

  • The chip performs CAD operations in LoRa. Define the macro PACKET_TYPE as LR11XX_RADIO_PKT_TYPE_LORA (in the file ../../examples/lr1121_cad/lr1121_config.h) to use this demo code.
  • During the CAD test, there are three exit modes that can be defined to suit different use cases. For the LR11XX_RADIO_CAD_EXIT_MODE_STANDBYRC mode, once it is completed, the chip returns to the STBY_RC mode regardless of whether there is activity on the channel. For the LR11XX_RADIO_CAD_EXIT_MODE_RX mode, if activity is detected, the chip will remain in the RX state until a packet is detected or the timer reaches the timeout time defined by CAD_TIMEOUT_MS. For the LR11XX_RADIO_CAD_EXIT_MODE_TX mode, if no activity is detected, the chip will go to TX mode. This mode is actually an alternative to the TX mode, so the payload data for transmission should be preloaded before setting the chip to LR11XX_RADIO_CAD_EXIT_MODE_TX mode.
  • There are several parameters that can be updated in the lr1121_cad.h header file:
    • CAD_SYMBOL_NUM: Defines the number of symbols used for CAD detection
    • CAD_DETECT_PEAK: Defines the sensitivity of the LoRa modem when attempting to associate symbols
    • CAD_DETECT_MIN: Minimum peak value, used to filter out situations where there is almost no signal or noise
    • CAD_EXIT_MODE: Define the action to be performed after the CAD operation
    • CAD_TIMEOUT_MS: Used only when CAD is executed with CAD_EXIT_MODE = LR11XX_RADIO_CAD_EXIT_MODE_RX or LR11XX_RADIO_CAD_EXIT_MODE_TX
    • USER_PROVIDED_CAD_PARAMETERS: Set to true, the CAD parameters provided by the user will be used
    • DELAY_MS_BEFORE_CAD: Delay between CAD detections

lr1121_firmware_update

  • This demo is used to update the firmware of the LR1121 to the latest version, or to flash the LoRaWan firmware to make it compatible with LoRaWan use
  • You can uncomment the corresponding firmware header file in the lr1121_firmware_update.h header file. After compiling and flashing, the main controller will perform a firmware update on the LR1121. Only one firmware can be selected at a time
  • Different development platforms use different annotation methods, please refer to the following demo instructions

lr1121_lr_fhss

  • The application will automatically configure the device to transmit packets in LR-FHSS
  • The frequency can be updated in the ../../examples/lr1121_lr_fhss/lr1121_config.h header file
  • There are several parameters that can be updated in the lr1121_lr_fhss.h header file:
    • TX_TO_TX_DELAY_IN_MS: The time delay between two transmitted data packets
    • LR_FHSS_BANDWIDTH: Bandwidth
    • LR_FHSS_CODING_RATE: Encoding rate
    • LR_FHSS_ENABLE_HOPPING: Enables or disables frequency hopping
    • LR_FHSS_GRID: Frequency-hopping grid
    • LR_FHSS_HEADER_COUNT: Number of header blocks
    • LR_FHSS_MODULATION_TYPE: Modulation type

lr1121_per

  • Used to perform PER testing of LoRa and FSK modems. Define the macro PACKET_TYPE as LR11XX_RADIO_PKT_TYPE_LORA or LR11XX_RADIO_PKT_TYPE_GFSK (in the file .. /.. /examples/lr1121_per/lr1121_config.h) to enable each modem in the test.
  • In the PER test, the device can be set as either a TX device or an RX device. In addition, there are macros used to control the compilation. To set the device as an RX device, the macro (RECEIVER) must be set to 1; to set the device as a TX device, set it to 0. If set to RX device mode, this application will automatically start PER test reception to receive packets in multiples of NB_FRAME. If set as a TX device, it will start sending data packets infinitely after startup.
  • The first byte of the payload is reserved for the rolling counter, which will be used to detect packets that are completely lost in the PER statistic. Keeping the counter in the first byte allows for the minimum payload size. The receiver will inspect the rest of the payload to ensure that the received packets are not unwanted. per_msg is a per_msg that holds the contents of this part of the payload. If PAYLOAD_LENGTH (defined in ../../examples/lr1121_per/lr1121_config.h) is less than 1, the payload check will not be performed because the payload contains only a counter.
  • There are several parameters that can be updated in the lr1121_per.h header file:
    • RECEIVER: Set to RX or TX device
    • RX_TIMEOUT_VALUE: Receive timeout value
    • TX_TO_TX_DELAY_IN_MS: The time delay between two transmitted data packets
    • NB_FRAME: Conduct a Per Second Error Rate (PER) test on the number of data packets

lr1121_ping_pong

  • Set the device to ping-pong mode.
  • The demo code will be used to perform LoRa and FSK modem testing. Define the macro PACKET_TYPE as LR11XX_RADIO_PKT_TYPE_LORA or LR11XX_RADIO_PKT_TYPE_GFSK (in the file .. /.. /examples/lr1121_ping_pong/lr1121_config.h) to enable each modem in the test.
  • This application allows devices to operate in either master or slave mode during a ping-pong test When the device starts, it assumes the master mode and alternates between sending "PING" packets and receiving "PONG" packets. When it receives a "PING" packet, the device switches to slave mode, then sends a "PONG" packet and waits to receive a "PING" packet. In slave mode, if the device receives a "non-PING" packet, it resets to master mode and restarts the previous process.
  • There are several parameters that can be updated in the lr1121_ping_pong.h header file:
    • RX_TIMEOUT_VALUE: Receive timeout value

lr1121_read

  • Set the device to receive mode.
  • The demo code will be used to perform LoRa and FSK modem testing. Define the macro PACKET_TYPE as LR11XX_RADIO_PKT_TYPE_LORA or LR11XX_RADIO_PKT_TYPE_GFSK (in the file .. /.. /examples/lr1121_read/lr1121_config.h) to enable each modem in the test.
  • Continuously read information, which can be paired with another device for testing with lr1121_write

lr1121_sigfox

  • This demo code illustrates the transmission of an uplink that complies with the Sigfox standard.
  • There is currently a predefined physical payload (corresponding to the "0x01" application payload).
  • To send another payload, you can update the sample0 array and SIGFOX_PAYLOAD_LENGTH macro in lr1121_sigfox.*.
  • There are several parameters that can be updated in the lr1121_sigfox.h header file:
    • TX_TO_TX_DELAY_IN_MS: The time delay between two transmitted data packets

lr1121_spectral_scan

  • The application achieves spectrum scanning operations by setting the device to Rx continuous mode and periodically reading the instantaneous RSSI value for each frequency channel one by one. For each channel, the RSSI value is sampled NB_SCAN times using the GetRssiInst function. The chip then switches to the next channel to repeat the same process. Each frequency channel has a statistics displayed as a histogram. On the terminal screen, the histogram is shown as a numerical array following the corresponding frequency values. All these statistics together form the electromagnetic environment heatmap. In each histogram statistic, each number represents the height of the histogram column, and the order of the array indicates the range of RSSI values from 0 dBm to -128 dBm. The length of the array depends on the scale of the RSSI level RSSI_SCALE. The X-axis represents the background electromagnetic noise level, while the Y-axis represents the probability of the result falling into a level slot.
  • For example: Assume we see a line "INFO: 2400.000 MHz: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 76 8 0 0 0 0 0" in the terminal. We can calculate that the length of this array is 33, so it is RSSI_SCALE = (RSSI_TOP_LEVEL-RSSI_BOTTOM_LEVEL)/(33-1) = (0-(-128))/32 = 4dBm. This is equivalent to the histogram below.
   0   0   0   0 ... 0   16  76  8   0   0   0   0   0
 ^
 |                            _
 |                           | |
 |                           | |
 |                           | |
 |                           | |
 |                        _  | |
 |                       | | | |  _
 | _____________._._.____| |_| |_| |__________________
 +-------------- ... -------------------------------------->
  /0dBm   /-8dBm ... /-96dBm /-104dBm/-112dBm/-120dBm/-128dBm
  • The demo code will be used for testing under LoRa and FSK modems, but there should be no difference if the bandwidth is the same. Define the macro PACKET_TYPE as LR11XX_RADIO_PKT_TYPE_LORA or LR11XX_RADIO_PKT_TYPE_GFSK (in the file .. /.. /examples/lr1121_spectral_scan/lr1121_config.h) to enable each modem in the test.
  • Several parameters can be updated in the header file ../../examples/lr1121_spectral_scan/lr1121_config.h:
    • PACKET_TYPE: Set the modem that will be used
    • LORA_BANDWIDTH: The bandwidth of LoRa packets
    • FSK_BANDWIDTH: The bandwidth of GFSK packets
  • There are several parameters that can be updated in the lr1121_spectral_scan.h header file:
    • FREQ_START_HZ: The frequency of the first channel for scanning
    • NB_CHAN: The number of channels that need to be scanned
    • NB_SCAN: The number of scan points per frequency scan
    • PACE-S: The number of seconds between two scans in a thread
    • WIDTH_CHAN_HZ: The width between each channel
    • RSSI_TOP_LEVEL_DBM: The highest RSSI value, default: 0dBm
    • RSSI_BOTTOM_LEVEL_DBM: The lowest RSSI value, default: -128dBm
    • RSSI_SCALE: The RSSI scale displayed in the spectrum scan

lr1121_spetrum_display

  • The application achieves spectrum display operations by setting the device to Rx continuous mode and periodically reading the instantaneous RSSI of each channel one by one. The spectrum covering all the channels being scanned will be plotted on the terminal screen. Starting from the start channel frequency defined by FREQ_START_HZ, the GetRssiInst function will be used to obtain one sampling point at the RSSI level for each channel. Once all channel RSSI values have been collected, a spectral curve is plotted on the terminal screen. This curve will be refreshed every PACE_S seconds, repeating the previous steps.
  • The following is an example of the curve displayed on the terminal screen. The bottom of the curve indicates the background noise around the antenna within the scan band. Peaks indicate which channels have RF activity. The frequency box displayed below the X-axis indicates the band being scanned. The Y-axis represents the RSSI level.
   ^
   0|
  -4|
  -8|
 -12|
 -16|
    .
    .
    .
 -76|
 -80|                          _
 -84|                    _    | |
 -88|                  _| |   | |
 -92|_                |   |   | |              _
 -96| |               |   |   | |             | |              _
-100| |               |   |   | |             | |             |
-104| |            _  |   |_._| |_     _     _| |             |
-108| |_._._._._._| |_|           |_._| |_._|   |_._._._._._._|
-112|
-116|
-120|
-124|
-128|
/dBmx------------------------------------------------------------>
    2400 --> 2406 MHz
  • The drawing function requires support from VT100 control code. Therefore, in order for this demonstration to run normally, a terminal that supports VT100 control codes (such as MobaXterm) is needed.
  • The demo code will be used for testing under LoRa and FSK modems, but there should be no difference if the bandwidth is the same. Define the macro PACKET_TYPE as LR11XX_RADIO_PKT_TYPE_LORA or LR11XX_RADIO_PKT_TYPE_GFSK (in the file .. /.. /examples/lr1121_spetrum_display/lr1121_config.h) to enable each modem in the test.
  • Several parameters can be updated in the header file ../../examples/lr1121_spetrum_display/lr1121_config.h:
    • PACKET_TYPE: Set the modem that will be used
    • LORA_BANDWIDTH: The bandwidth of LoRa packets
    • FSK_BANDWIDTH: The bandwidth of GFSK packets
  • There are several parameters that can be updated in the lr1121_spectral_scan.h header file:
    • FREQ_START_HZ: The frequency of the first channel for scanning
    • NB_CHAN: The number of channels that need to be scanned
    • PACE-S: The number of seconds between two scans in a thread
    • WIDTH_CHAN_HZ: The width between each channel
    • RSSI_TOP_LEVEL_DBM: The highest RSSI value, default: 0dBm
    • RSSI_BOTTOM_LEVEL_DBM: The lowest RSSI value, default: -128dBm
    • RSSI_SCALE: The RSSI scale displayed in the spectrum

lr1121_tx_cw

  • Set the device to Tx continuous wave mode.
  • General parameters can be updated in the ../../examples/lr1121_tx_cw/lr1121_config.h header file.

lr1121_tx_infinite_preamble

  • Set the device to transmit infinite preamble.
  • General parameters can be updated in the ../../examples/lr1121_tx_infinite_preamble/lr1121_config.h header file.

lr1121_write

  • Set the device to send mode.
  • The demo code will be used to perform LoRa and FSK modem testing. Define the macro PACKET_TYPE as LR11XX_RADIO_PKT_TYPE_LORA or LR11XX_RADIO_PKT_TYPE_GFSK (in the file .. /.. /examples/lr1121_write/lr1121_config.h) to enable each modem in the test.
  • Periodically send information, which can be paired with another device for testing with lr1121_read

lr1121_LoRaWAN

  • This demo demonstrates how to send uplinks periodically in a LoRaWAN Class A application and manually trigger an uplink by pressing a button.
  • The application automatically submits a join request to the LoRa network server.
  • Once a join acceptance message is received, the uplink is sent periodically.
  • Pressing the button or connecting the designated pin to GND will immediately send an uplink on port 102.
  • There are some constants set in lr1121_LoRaWAN.h, and their values can be set to define the LoRaWAN configuration of the application.
    • PERIODICAL_UPLINK_DELAY_S: Periodic uplink link alarm delay (seconds)
    • EXTI_BUTTON: The pin number of the button
    • LORAWAN_APP_DATA_MAX_SIZE: The size of the user application data buffer.
    • LORAWAN_REGION_USED: LoRaWAN regulatory area.
  • LR1121 is pre-configured with ChipEUI/DevEUI and JoinEUI. If the USE_LR11XX_CREDENTIALS in the lorawan_comissioning.h file is set to true, the application will use these identifiers.
  • Alternatively, you can provide your own EUI in Inc/apps/lorawan_commissioning/lorawan_commissioning.h by setting USE_LR11XX_CREDENTIALS to false and changing the values of LORAWAN_DEVICE_EUI, LORAWAN_JOIN_EUI, LORAWAN_NWK_KEY, and LORAWAN_APP_KEY.
  • User button settings
    • ESP32: GPIO0
    • Pico: GP0
    • Raspberry Pi: BCM26
    • STM32: PC13

General Parameters Introduction

  • The general parameters are stored in the lr1121_config.h of each demo, and the role of each parameter is described below
  • lr1121_config parameter description
ConstantDescription
PACKET_TYPEPacket type, which will be LoRa or GFSK
RF_FREQ_IN_HZFrequency of sending or receiving data packets
TX_OUTPUT_POWER_DBMPower level for sending data packets
FALLBACK_MODEBackup mode setting
ENABLE_RX_BOOST_MODERX enhanced mode setting
PAYLOAD_LENGTHPacket payload length for LoRa and GFSK modems
LORA_BANDWIDTHSend Sigfox-compliant uplinks
LORA_SPREADING_FACTORSpreading factor of LoRa data packet
LORA_CODING_RATECoding rate of LoRa data packets
LORA_PREAMBLE_LENGTHLength of the preamble in LoRa data packet
LORA_PKT_LEN_MODEHeader type, explicit (default) or implicit header
LORA_IQAre I and Q reversed
LORA_CRCCRC on or off
LORA_SYNCWORDSynchronization word used in LoRa packet
FSK_FDEVFrequency deviation of GFSK modulation
FSK_BITRATEBit rate of GFSK packet
FSK_BANDWIDTHBandwidth of GFSK packet
FSK_PULSE_SHAPEDefine the filtering applied to GFSK packets
FSK_PREAMBLE_LENGTHLength of the preamble in GFSK packet
FSK_PREAMBLE_DETECTORLength of GFSK packet preamble detector
FSK_SYNCWORD_LENGTHLength of synchronization word in GFSK packet
FSK_ADDRESS_FILTERINGAddress filtering option
FSK_HEADER_TYPEGFSK packet type, fixed payload length or variable
FSK_CRC_TYPEGFSK packet CRC option
FSK_DC_FREEOption to enable GFSK packet whitening
gfsk_sync_wordSynchronization word of GFSK packet
FSK_WHITENING_SEEDWhitening seed for GFSK packets, requires enabling FSK_DC_FREE to be effective
FSK_CRC_SEEDCRC seed for GFSK packets, requires setting FSK_CRC_TYPE to be effective
FSK_CRC_POLYNOMIALCRC polynomial for GFSK packets, requires setting FSK_CRC_TYPE to the appropriate mode
FSK_NODE_ADDRESSNode address for GFSK packet filtering, requires FSK_ADDRESS_FILTERING to be set to the corresponding mode
FSK_BROADCAST_ADDRESSBroadcast address for GFSK packet filtering, requires FSK_ADDRESS_FILTERING to be set to the corresponding mode
SIGFOX_RCSigfox RC mode - can be 1 or 2

Demo Usage

  • The following example requires two Core1121-XF modules for communication testing

ESP32

  • The installation of the development environment will not be explained in detail. If there are any uncertainties, you can refer to our relevant development board materials for installation. For example: ESP32-S3-Touch-LCD-7B

Hardware Connection

ESP32-S3-DEV-KIT-N16R8-MCore1121-XF
3V33.3V
GNDGND
GPIO5MISO
GPIO6MOSI
GPIO7CLK
GPIO15CS
GPIO16RESET
GPIO39BUSY
GPIO40DIO9

Arduino

  • Download the Demo, go to ../Core1121_XF_Demo/esp32s3/Arduino, copy waveshare_lroa_1121 to to the libraries folder in the project folder. The project folder path can be found under File->Preferences->Sketchbook location


  • After copying, open the Arduino IDE and you can see all the examples under File->Examples->waveshare lora spi and then you can flash and test
  • After setting up the environment, choose the correct port for the development board. If you are unsure about how to flash it, refer to the following diagram:

①: Compile the demo

②: Complie and upload


ESP-IDF

  • Download the Demo, go to ../Core1121_XF_Demo/esp32s3/ESP-IDF, use vs code to open the demo
  • The demo usage for ESP-IDF requires configuring the script file in ../Core1121_XF_Demo/esp32s3/ESP-IDF/main/CMakeLists.txt. By default, it is set to the lr1121_ping_pong demo. If you need other demos, simply uncomment as shown in the figure below:


  • After setting up the environment, choose the correct port for the development board. If you are unsure about how to flash it, refer to the following diagram:

①: Select UART
②: Select port
③: Select chip
④: Compile and flash


PlatformIO

  • Download the Demo, go to ../Core1121_XF_Demo/esp32s3/PlatformIO, use vs code to open the demo
  • The demo usage for PlatformIO requires configuring the main.h file in ../Core1121_XF_Demo/esp32s3/PlatformIO/src. By default, it is set to the lr1121_ping_pong demo. If you need other demos, simply uncomment as shown in the figure below:


  • After setting up the environment, choose the correct port for the development board. If you are unsure about how to flash it, refer to the following diagram:

①: Select port
②: Compile and flash

Pico

  • The installation of the development environment will not be explained in detail. If there are any uncertainties, you can refer to our relevant development board materials for installation. For example: Raspberry Pi Pico

Hardware Connection

Raspberry Pi PicoCore1121-XF
3V33.3V
GNDGND
GP12MISO
GP11MOSI
GP10CLK
GP13CS
GP5RESET
GP14BUSY
GP15DIO9

C

  • Download the Demo, go to ../Core1121_XF_Demo/pico, use vs code to open the demo
  • The demo usage requires configuring the script file in ../Core1121_XF_Demo/pico/CMakeLists.txt. By default, it is set to the lr1121_ping_pong demo. If you need other demos, simply uncomment as shown in the figure below:


  • After setting up the environment, opening the demo will automatically load the tool. If you are unsure about how to flash it, refer to the following diagram:

①: Compile
②: Flash: Pico needs to be put into boot mode to flash. If it cannot be flashed even after entering boot mode, you can manually drag the UF2 file into the build folder to flash

  • If you are using Pico w, Pico2 and Pico2 w, you can switch by following the steps shown in the figure below:

①: Modify the development board
②: Select the required development board

RPI

  • The installation of the development environment will not be explained in detail. If there are any uncertainties, you can refer to our relevant development board materials for installation. For example:

Raspberry Pi Documentation

  • This demo has been verified on PI4 and PI5

Hardware Connection

Raspberry Pi (BCM)Core1121-XF
3V33.3V
GNDGND
9MISO
10MOSI
11CLK
8CS
22RESET
23BUSY
24DIO9

WiringPi

  • Open SPI with the following command:
sudo raspi-config nonint do_spi 0
  • Download the WiringPi library:
sudo git clone https://github.com/WiringPi/WiringPi
cd WiringPi
sudo ./build
gpio -v
# Run gpio -v and version 2.70 or higher will appear. If it does not appear, there is an installation error
  • Download the demo:
sudo apt-get install unzip -y
sudo wget https://files.waveshare.com/wiki/Core1121/Core1121_XF_Demo.zip
sudo unzip ./Core1121_XF_Demo.zip
cd Core1121_XF_Demo/raspberrypi/
  • The demo usage requires configuring the script file in ../Core1121_XF_Demo/raspberrypi/Makefile. By default, it is set to the lr1121_ping_pong demo. If you need other demos, simply uncomment as shown in the figure below:


  • After entering the project path, you can compile and run the demo. The steps are as follows:
make -B -j
./main

The appearance of the following content indicates that the compilation is complete, then you can run the demo by executing ./main. 


STM32

  • The development board used is NUCLEO-F446RE
  • The installation of the development environment will not be explained in detail. If there are any uncertainties, you can refer to our relevant development environment materials for installation. For example: STM32CubeIDE

Hardware Connection

NUCLEO-F446RECore1121-XF
3V33.3V
GNDGND
PA6MISO
PA7MOSI
PA5CLK
PA8CS
PA0RESET
PB3BUSY
PB4DIO9

STM32CubeIDE

  • Download the Demo, go to ../Core1121_XF_Demo/stm32, click .project file to open the demo
  • The demo usage requires configuring the ../Core1121_XF_Demo/stm32/Core/inc/main.h file. By default, it is set to the lr1121_ping_pong demo. If you need other demos, simply uncomment as shown in the figure below:


  • After opening the project, connect the development board. If you don't know how to flash it, refer to the following image:

①: Compile and flash

Demo Effect Demonstration

lr1121_cad

  • For CAD testing, one device flashes the CAD_EXIT_MODE to TX and the other CAD_EXIT_MODE to RX, and the test can be started
  • The effect is as follows:


lr1121_firmware_update

  • Flash the transmitter/receiver version 0101 firmware by default. If you need to test other firmware versions, comment out the #include "lr1121_transceiver_0101.h" in lr1121_firmware_update.h and uncomment other header files to compile and flash. Only one firmware can be selected for flashing at a time.
  • The effect is as follows:


lr1121_lr_fhss

  • The application will configure the device to transmit packets in LR-FHSS
  • The effect is as follows:


lr1121_per

  • PER (Packet Error Rate) testing, in lr1121_per.h set one device to send by defining #define RECEIVER 1, and the other device to receive by defining #define RECEIVER 0
  • The effect is as follows:


lr1121_ping_pong

  • The application sets the device to ping-pong mode (point-to-point bidirectional communication test).
  • The effect is as follows:

Core1121 XF 11.png

lr1121_read

  • The application sets the device to read mode, automatically recognizing strings and hexadecimal numbers, and can be used in conjunction with lr1121_write to achieve point-to-point communication.
  • The effect is as follows:


lr1121_write The application sets the device to write mode, automatically sends data, and paired with lr1121_read, it can achieve point-to-point communication.

  • The effect is as follows:


lr1121_sigfox

  • This demo code illustrates the transmission of an uplink that complies with the Sigfox standard.
  • The effect is as follows:


lr1121_spectral_scan

  • The application achieves spectrum scanning operations by setting the device to Rx continuous mode and periodically reading the instantaneous RSSI value for each frequency channel one by one.
  • It can be tested with lr1121_tx_cw.
  • Use lr1121_tx_cw to send a signal at 868MHz with 22dBm power for testing. The results are as follows:



lr1121_spetrum_display

  • The application achieves spectrum display operations by setting the device to Rx continuous mode and periodically reading the instantaneous RSSI of each channel one by one.
  • It can be tested with lr1121_tx_cw.
  • The drawing function requires support from VT100 control code, such as MobaXterm
  • Use lr1121_tx_cw to send a signal at 868MHz with 22dBm power for testing. The results are as follows:


lr1121_tx_cw

  • This demo will automatically set the device to Tx continuous wave mode.
  • It will continuously emit a waveform, which is an unmodulated sine wave (pure carrier), mainly for testing power, frequency accuracy, and EMC
  • No communication capability (no data transmission), non-LoRa protocol format
  • The waveform power has attenuated by 10 dBm


lr1121_tx_infinite_preamble

  • This demo will configure the device to continuously transmit a wireless preamble signal (Preamble).
  • It will continuously transmit a waveform that is modulated (in LoRa format), primarily for testing LoRa transmission performance, spectrum, and certification (LoRa mode).
  • It does not transmit a full packet, but uses a valid LoRa preamble code modulation.

LoRa and LoRaWAN

What is LoRa?

LoRa from Semtech is a long-range, low-power IoT wireless platform, generally referring to RF chips that use LoRa technology. The main features are as follows:

  • LoRa (short for long range) uses spread spectrum modulation technology derived from Chirp Spread Spectrum (CSS) technology, which is a type of long-distance wireless transmission technology and LPWAN communication technology. Spread spectrum technology trades bandwidth for sensitivity. Wi-Fi, ZigBee, and others all use spread spectrum technology, but the characteristic of LoRa modulation is that it approaches the limit of Shannon's theorem and maximizes sensitivity. Compared to traditional FSK technology, under the same communication rate, LoRa is 8 to 12 dBm more sensitive than FSK. Currently, LoRa primarily operates in the Sub-GHz ISM frequency band.
  • LoRa technology integrates technologies such as digital spread spectrum, digital signal processing, and forward error correction coding, significantly improving long-distance communication performance. The link budget of LoRa is superior to any other standardized communication technology, and the link budget refers to the main factors that determine the distance in a given environment.
  • LoRa RF chips mainly include the SX127X series, SX126X series, and SX130X series, where the SX127X and SX126X series are used for LoRa nodes, and the SX130X is used for LoRa gateways. For more details, please refer to the product list of Semtech.

What is LoRaWAN?

  • LoRaWAN is a low-power wide-area network open protocol built on top of LoRa radio modulation technology. It aims to wirelessly connect battery-powered "things" to the Internet in regional, national, or global networks, and is tailored to key IoT requirements such as two-way directional communication, end-to-end security, mobility, and localized services. Among them, the node is wirelessly connected to the Internet and has network access authentication, which is equivalent to establishing an encrypted communication channel between the node and the server, as shown in the following figure of the LoRaWAN protocol layer.
    • Class A/B/C three types of node devices in the MAC layer basically cover all the application scenarios of the Internet of Things. The difference among the three lies in the different time slots for node reception and transmission
    • In the Modulation layer, EU868, AS430, etc., indicate that different countries use different frequency parameters. For regional parameters, please refer to link


  • To achieve LoRaWAN network coverage in a city or other areas, it requires four components: nodes (LoRa nodes RF chips), gateways (or base stations, with LoRa gateways RF chips), servers, and clouds, as shown in the following diagram.
    • DEVICE (node device) must first send an access request data packet to the GATEWAY (gateway), which then forwards it to the server. After authentication is successful, it can then normally exchange application data with the server.
    • GATEWAY (gateway) can communicate with the server via wired networks, 3/4/5G wireless networks
        • The main operators on the server side are TTN, etc. For setting up your own cloud service, please refer to lorawan-stack and chirpstack


Applications

Components Preparation

Server Setup

  • The demo uses ChirpStack as the LoRaWAN network server. Please configure it according to the official installation steps provided for Raspberry Pi.
  • After the writing is completed, please refer to the official documentation for detailed configuration. This Wiki only provides a brief installation process. For detailed information, please see: ChirpStack Gateway OS Getting started.
  • Insert the TF card into the Raspberry Pi and power it on. Once booted, the computer Wi-Fi will scan for a wireless hotspot named ChirpStackAP-XXXXXX with the password ChirpStackAP. After the connection is successful, visit 192.168.0.1 in the browser to open the ChirpStack management interface, and you can log in for the first time without a password.


  • It can access external networks via Ethernet or Wi-Fi after startup. Here is an example of connecting to Ethernet. If you need to configure Wi-Fi, please refer to: Wi-Fi Configuration. After networking is set up, you can view the current IP address in the Web management interface.


Add Gateway

After the server configuration is completed and an IP address is obtained, turn off the Raspberry Pi and power off, then connect the SX1303-868M-LoRaWAN-Gateway-HAT (gateway device) to the Raspberry Pi, and connect the antenna. After powering on the Raspberry Pi, use the obtained IP address to remotely access the device via an SSH tool (such as MobaXterm). The default username is root. After a successful connection, enter the following command in the terminal to get the gateway ID: gateway-id. The system will output the gateway ID of the current device, please note down this ID as it will be needed when adding the gateway later. 


  • Access the obtained IP address in your browser and enter the ChirpStack management interface. Click ChirpStack -> Concentratord sequentially and enable the gateway function. Take SX1303 (868 MHz) as an example, configure it as follows, and click "Save and Apply" after completing the configuration:
  • Enter the application: Applications -> ChirpStack, you need to log in when you enter it for the first time, and the default account and password are admin. After logging in, click Gateways -> Add gateway, fill in the gateway-id obtained earlier on the Add page, and save it. Return to the Gateway page to see if the gateway has been successfully launched.

Add Node

  • First, add a device configuration profile in the Web interface: Device Profiles -> Add device profile, configure as shown in the following figure:


  • Then add an application: Applications -> Add application, fill in the relevant information and save:


  • Then add an end device, click Add device, the relevant information (e.g. DevEUI, AppKey) can be automatically generated by clicking the "Random" button, which will be used in the demo later
  • Note: The Core1121-HF module defaults to Transceiver mode. To run the LoRaWAN protocol, you need to flash the corresponding firmware onto the development board first.

For a demo, refer to the lr1121_firmware_update demo in the Demo, and run lr1121_firmware_update + lr1121_modem_05020001.

  • The successful flashing effect is shown in the following figure


If you need to restore the transceiver mode (non-LoRaWAN) later, please reflash the lr1121_transceiver_0101 firmware.

After firmware flashing is completed, download the LoRaWAN demo. Open it and enter the directory: ../Core1121-XF-Demo\...\lr1121_LoRaWAN, edit the lorawan_commissioning.h file, and fill in the corresponding positions with the generated EUI and key information. Compile and flash after completion.

  • After the flashing is complete, the node will automatically request to join the LoRaWAN network. After joining successfully, the node will periodically send uplink data. Device events and communication status can be viewed through the Web interface:

①. Click Events to view the running status of the node
②. Observe if the joining failed
③. If the join is successful, you will see the network join event
④. Check the data reported by the node
⑤. View the debug information via the serial port

  • The server also supports sending data to nodes:

①. Click Queue
②. Enter the hexadecimal data to be sent
③. Click Send
④. The node receives data and prints it via the serial port

Resources

Documents

Demo

Datasheets

FAQ

Support

Monday-Friday (9:30-6:30) Saturday (9:30-5:30)

Email: services01@spotpear.com

TAG: Industrial USB TO RS485 2CH Converter FT2232HL Grade Isolated Raspberry Pi 1.54inch OLED ESP32 S3 4.3inch LCD (B) 800x480 Captive TouchScreen Display Board LVGL with Sensor CAN I2C RS485 Milk-V Duo S Usage of USB Type A interface Sipeed NanoCluster Mini Cluster Board mini data center For Raspberry Pi CM45 / Computer /LM3H /M4N UART Pi5-Pcie-Fish-Boar ESP32-P4 ESP32-C6 Development Board RISC-V WiFi6 MIPI CSI Camera 7/10.1 inch DSI Display /RJ45 Ethernet /Mic /Audio Size Compatible with Raspberry Pi Smart Car Spotpear SPI Communication Raspberry Pi CM5 IO BASE A Mini Board a Base Development Platform Compute Module 5 IO Board Raspberry Pi 5 PD Induction Raspberry Pi Monitor Official Original DisplayScreen 15.6 inch LCD Full HD 1920x1080 15.6inch Raspberry Pi USB Camera 12MP IMX378 30fps onboard dual microphones Also For Jeston / RDK Raspberry Pi 5 Aluminium Case 800x480 SpotPear Jetson Nano 5G module ADXL357BEZ