Core1121-XF

From Waveshare Wiki
Jump to: navigation, search
Core1121-HF
Core1121-HF

SPI
Core1121-LF
Core1121-LF

SPI
{{{name3}}}

{{{name4}}}

{{{name5}}}

{{{name6}}}

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

Version Core1121-HF Core1121-LF
RF characteristics
RF chip LR1121
Operating frequency band 850 ~ 930MHz 410 ~ 510MHz
1900~2100 MHz, 2400~2500MHz
Signal modulation LoRa, (G)FSK, LR-FHSS
Communication rate LoRa: 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 distance Sub-GHz band, 5km
ISM band, 2km
Spreading factor SF5 ~ SF12
Electrical characteristics
Operating voltage 3.3V (up to 3.8V)
Logic voltage 3.3V (other logic levels require a level converter)
Module power consumption Transmission Current: 115mA@22dBm Sub-GHz, 25mA@13dBm ISM
Reception current: 9.2mA@125KHz Sub-GHz, 8.1mA@125KHz ISM
Hardware characteristics
Communication port SPI
Crystal oscillator TCXO 32MHz
Antenna interface IPEX-4 or castellated module (Castellated module requires additional operation, please refer to the Wiki information for details)
Antenna Protection TVS protection
Operating temperature -40 ~ 85℃
Port type Castellated module, 2.54mm pitch
Dimensions 19.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

CoreSX1262-868M 006.png

Pinout Definition

Core1121-LF-details-inter.png

  • *_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:

Core1121 XF 03.png

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.

Core1121 XF 01.png

  • 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).

Core1121 XF 02.png

Dimensions

Core1121-LF-details-size.jpg

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
Demo Basic Description
lr1121_cad Execute Channel Activity Detection (CAD) - LoRa only
lr1121_firmware_update LR1121 firmware update tool
lr1121_lr_fhss Transmit LR-FHSS format data packets
lr1121_per Execute data packet error rate (PER) test — Tx and Rx roles
lr1121_ping_pong Initiate data exchange between two devices
lr1121_read Enter receive mode
lr1121_sigfox Send Sigfox-compliant uplinks
lr1121_spectral_scan Get the inst-RSSI values in RX mode to form a heatmap
lr1121_spetrum_display Get the inst-RSSI values in RX mode and form a dynamic spectrum curve
lr1121_tx_cw Tx continuous wave mode
lr1121_tx_infinite_preamble Transmit infinite preamble
lr1121_write Send data periodically
lr1121_LoRaWAN Simple 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
Constant Description
PACKET_TYPE Packet type, which will be LoRa or GFSK
RF_FREQ_IN_HZ Frequency of sending or receiving data packets
TX_OUTPUT_POWER_DBM Power level for sending data packets
FALLBACK_MODE Backup mode setting
ENABLE_RX_BOOST_MODE RX enhanced mode setting
PAYLOAD_LENGTH Packet payload length for LoRa and GFSK modems
LORA_BANDWIDTH Send Sigfox-compliant uplinks
LORA_SPREADING_FACTOR Spreading factor of LoRa data packet
LORA_CODING_RATE Coding rate of LoRa data packets
LORA_PREAMBLE_LENGTH Length of the preamble in LoRa data packet
LORA_PKT_LEN_MODE Header type, explicit (default) or implicit header
LORA_IQ Are I and Q reversed
LORA_CRC CRC on or off
LORA_SYNCWORD Synchronization word used in LoRa packet
FSK_FDEV Frequency deviation of GFSK modulation
FSK_BITRATE Bit rate of GFSK packet
FSK_BANDWIDTH Bandwidth of GFSK packet
FSK_PULSE_SHAPE Define the filtering applied to GFSK packets
FSK_PREAMBLE_LENGTH Length of the preamble in GFSK packet
FSK_PREAMBLE_DETECTOR Length of GFSK packet preamble detector
FSK_SYNCWORD_LENGTH Length of synchronization word in GFSK packet
FSK_ADDRESS_FILTERING Address filtering option
FSK_HEADER_TYPE GFSK packet type, fixed payload length or variable
FSK_CRC_TYPE GFSK packet CRC option
FSK_DC_FREE Option to enable GFSK packet whitening
gfsk_sync_word Synchronization word of GFSK packet
FSK_WHITENING_SEED Whitening seed for GFSK packets, requires enabling FSK_DC_FREE to be effective
FSK_CRC_SEED CRC seed for GFSK packets, requires setting FSK_CRC_TYPE to be effective
FSK_CRC_POLYNOMIAL CRC polynomial for GFSK packets, requires setting FSK_CRC_TYPE to the appropriate mode
FSK_NODE_ADDRESS Node address for GFSK packet filtering, requires FSK_ADDRESS_FILTERING to be set to the corresponding mode
FSK_BROADCAST_ADDRESS Broadcast address for GFSK packet filtering, requires FSK_ADDRESS_FILTERING to be set to the corresponding mode
SIGFOX_RC Sigfox 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-M Core1121-XF
3V3 3.3V
GND GND
GPIO5 MISO
GPIO6 MOSI
GPIO7 CLK
GPIO15 CS
GPIO16 RESET
GPIO39 BUSY
GPIO40 DIO9

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

ESP32-S3-AMOLED-1.91-Ar-lib-06.png

  • 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

Core1121 XF 09.png

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:

900px-Core1121 XF 17.png

  • 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

Core1121 XF 18.png

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:

Core1121 XF 20.png

  • 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
Core1121 XF 19.png

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 Pico Core1121-XF
3V3 3.3V
GND GND
GP12 MISO
GP11 MOSI
GP10 CLK
GP13 CS
GP5 RESET
GP14 BUSY
GP15 DIO9

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:

Core1121 XF 22.png

  • 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
Core1121 XF 21.png

  • 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
Core1121 XF 23.png

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
3V3 3.3V
GND GND
9 MISO
10 MOSI
11 CLK
8 CS
22 RESET
23 DIO9
24 BUSY

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/
sudo chmod 777 -R .
  • 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:

Core1121 XF 24.png

  • 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. Core1121 XF 25.png

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-F446RE Core1121-XF
3V3 3.3V
GND GND
PA6 MISO
PA7 MOSI
PA5 CLK
PA8 CS
PA0 RESET
PB3 BUSY
PB4 DIO9

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:

Core1121 XF 26.png

  • 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
Core1121 XF 27.png

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:

Core1121 XF 06.png

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:

Core1121 XF 07.png

lr1121_lr_fhss

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

Core1121 XF 08.png

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:

Core1121 XF 10.png

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:

Core1121 XF 12.png

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:

Core1121 XF 12.png

lr1121_sigfox

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

Core1121 XF 13.png

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:

Core1121 XF 14.png


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:

Core1121 XF 15.png

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

Core1121 XF 16.png

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

SX1262-LoRa-HAT-021.png

  • 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

1350px-SX1268-LoRa-HAT-021.png

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.

Core1121 XF LoRaWAN 08.png

Add Gateway

  • After the server configuration is complete and the IP address is obtained, power off the Raspberry Pi and disconnect the power. Connect the SX1303-868M-LoRaWAN-Gateway-HAT (gateway device) to the Raspberry Pi and attach 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. Once connected, enter the previously obtained IP address in a browser to access the ChirpStack management interface. Navigate to ChirpStack -> Concentratord 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:


  • In the terminal, enter the following command to obtain the gateway ID: gateway-id. The system will output the current device's gateway ID. Please note this ID, as it will be needed later when adding the gateway.

Core1121 XF LoRaWAN 09.png

  • 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:

Core1121 XF LoRaWAN 22.png

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

Core1121 XF LoRaWAN 23.png

  • 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

Core1121 XF LoRaWAN 21.png

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
Core1121 XF LoRaWAN 27.png

  • 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
Core1121 XF LoRaWAN 28.png

Resources

Documents

Demo

Datasheets

FAQ

Support




Technical Support

If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)