STM32CubeWL/Projects/NUCLEO-WL55JC1/Applications/Sigfox/Sigfox_AT_Slave
Rania JMAI 9d77b66f25 Release v1.3.1 2025-01-30 09:55:17 +01:00
..
Core Release v1.3.1 2025-01-30 09:55:17 +01:00
EWARM Release v1.3.1 2025-01-30 09:55:17 +01:00
MDK-ARM Release v1.3.1 2025-01-30 09:55:17 +01:00
STM32CubeIDE Release v1.3.1 2025-01-30 09:55:17 +01:00
Sigfox Release v1.3.1 2025-01-30 09:55:17 +01:00
.extSettings Release v1.3.1 2025-01-30 09:55:17 +01:00
Sigfox_AT_Slave.ioc Release v1.3.1 2025-01-30 09:55:17 +01:00
readme.txt Release v1.3.1 2025-01-30 09:55:17 +01:00

readme.txt

/**
  @page Sigfox_AT_Slave Readme file

  @verbatim
  ******************************************************************************
  * @file    Applications/Sigfox/Sigfox_AT_Slave/readme.txt
  * @author  MCD Application Team
  * @brief   This application is a simple demo application software of a Sigfox
  *          modem controlled though AT command interface over UART by an
  *          external host
  ******************************************************************************
  *
  * Copyright (c) 2020-2021 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  @endverbatim

@par Description

This directory contains a set of source files that implements a Sigfox application
modem that is controlled though AT command interface over UART by an external host,
like a computer executing a terminal.

This application is targeting the NUCLEO-WL55JC1 (HIGH-BAND) embedding the STM32WLxx.
  ******************************************************************************

@par Keywords

Applications, SubGHz_Phy, Sigfox, AT_Slave, SingleCore

@par Directory contents


  - Sigfox_AT_Slave/Core/Inc/adc.h                                              This file contains all the function prototypes for
                                                                                the adc.c file
  - Sigfox_AT_Slave/Core/Inc/adc_if.h                                           Header for ADC interface configuration
  - Sigfox_AT_Slave/Core/Inc/dma.h                                              This file contains all the function prototypes for
                                                                                the dma.c file
  - Sigfox_AT_Slave/Core/Inc/flash_if.h                                         This file contains definitions for FLASH Interface functionalities.
  - Sigfox_AT_Slave/Core/Inc/gpio.h                                             This file contains all the function prototypes for
                                                                                the gpio.c file
  - Sigfox_AT_Slave/Core/Inc/lptim.h                                            This file contains all the function prototypes for
                                                                                the lptim.c file
  - Sigfox_AT_Slave/Core/Inc/main.h                                             : Header for main.c file.
                                                                                This file contains the common defines of the application.
  - Sigfox_AT_Slave/Core/Inc/mn_lptim_if.h                                      Header for between Sigfox monarch and lptim
  - Sigfox_AT_Slave/Core/Inc/platform.h                                         Header for General HW instances configuration
  - Sigfox_AT_Slave/Core/Inc/rtc.h                                              This file contains all the function prototypes for
                                                                                the rtc.c file
  - Sigfox_AT_Slave/Core/Inc/stm32wlxx_hal_conf.h                               HAL configuration file.
  - Sigfox_AT_Slave/Core/Inc/stm32wlxx_it.h                                     This file contains the headers of the interrupt handlers.
  - Sigfox_AT_Slave/Core/Inc/stm32wlxx_nucleo_conf.h                            STM32WLxx_Nucleo board configuration file.
  - Sigfox_AT_Slave/Core/Inc/stm32_lpm_if.h                                     Header for Low Power Manager interface configuration
  - Sigfox_AT_Slave/Core/Inc/subghz.h                                           This file contains all the function prototypes for
                                                                                the subghz.c file
  - Sigfox_AT_Slave/Core/Inc/sys_app.h                                          Function prototypes for sys_app.c file
  - Sigfox_AT_Slave/Core/Inc/sys_conf.h                                         Applicative configuration, e.g. : debug, trace, low power, sensors
  - Sigfox_AT_Slave/Core/Inc/sys_debug.h                                        Configuration of the debug.c instances
  - Sigfox_AT_Slave/Core/Inc/timer_if.h                                         configuration of the timer_if.c instances
  - Sigfox_AT_Slave/Core/Inc/usart.h                                            This file contains all the function prototypes for
                                                                                the usart.c file
  - Sigfox_AT_Slave/Core/Inc/usart_if.h                                         Header for USART interface configuration
  - Sigfox_AT_Slave/Core/Inc/utilities_conf.h                                   Header for configuration file to utilities
  - Sigfox_AT_Slave/Core/Inc/utilities_def.h                                    Definitions for modules requiring utilities
  - Sigfox_AT_Slave/Sigfox/App/app_sigfox.h                                     Header of application of the Sigfox Middleware
  - Sigfox_AT_Slave/Sigfox/App/app_version.h                                    Definition the version of the application
  - Sigfox_AT_Slave/Sigfox/App/ee.h                                             Header of the EEPROM emulator
  - Sigfox_AT_Slave/Sigfox/App/ee_conf.h                                        Header for eeprom configuration
  - Sigfox_AT_Slave/Sigfox/App/sgfx_app.h                                       provides code for the application of the SIGFOX Middleware
  - Sigfox_AT_Slave/Sigfox/App/sgfx_at.h                                        Header for driver at.c module
  - Sigfox_AT_Slave/Sigfox/App/sgfx_command.h                                   Header for sgfx_command.c
  - Sigfox_AT_Slave/Sigfox/App/sgfx_cstimer.h                                   Interface for  cstimer.c driver
  - Sigfox_AT_Slave/Sigfox/App/sgfx_eeprom_if.h                                 eeprom interface to the upper module.
  - Sigfox_AT_Slave/Sigfox/App/sigfox_data.h                                    provides encrypted data
  - Sigfox_AT_Slave/Sigfox/Target/mcu_api.h                                     defines the interface to mcu_api.c
  - Sigfox_AT_Slave/Sigfox/Target/mn_api.h                                      monarch library interface
  - Sigfox_AT_Slave/Sigfox/Target/mw_log_conf.h                                 Configure (enable/disable) traces
  - Sigfox_AT_Slave/Sigfox/Target/radio_board_if.h                              Header for Radio interface configuration
  - Sigfox_AT_Slave/Sigfox/Target/radio_conf.h                                  Header of Radio configuration
  - Sigfox_AT_Slave/Sigfox/Target/rf_api.h                                      interface to rf_api.c
  - Sigfox_AT_Slave/Sigfox/Target/se_nvm.h                                      header to emulated SE nvm data
  - Sigfox_AT_Slave/Sigfox/Target/sgfx_credentials.h                            interface to key manager and encryption algorithm
  - Sigfox_AT_Slave/Sigfox/Target/timer.h                                       Wrapper to timer server

  - Sigfox_AT_Slave/Core/Src/adc.c                                              This file provides code for the configuration
                                                                                of the ADC instances.
  - Sigfox_AT_Slave/Core/Src/adc_if.c                                           Read status related to the chip (battery level, VREF, chip temperature)
  - Sigfox_AT_Slave/Core/Src/dma.c                                              This file provides code for the configuration
                                                                                of all the requested memory to memory DMA transfers.
  - Sigfox_AT_Slave/Core/Src/flash_if.c                                         This file provides set of firmware functions to manage Flash
                                                                                Interface functionalities.
  - Sigfox_AT_Slave/Core/Src/gpio.c                                             This file provides code for the configuration
                                                                                of all used GPIO pins.
  - Sigfox_AT_Slave/Core/Src/lptim.c                                            This file provides code for the configuration
                                                                                of the LPTIM instances.
  - Sigfox_AT_Slave/Core/Src/main.c                                             : Main program body
  - Sigfox_AT_Slave/Core/Src/mn_lptim_if.c                                      Interface between Sigfox monarch and lptim
  - Sigfox_AT_Slave/Core/Src/rtc.c                                              This file provides code for the configuration
                                                                                of the RTC instances.
  - Sigfox_AT_Slave/Core/Src/stm32wlxx_hal_msp.c                                This file provides code for the MSP Initialization
                                                                                and de-Initialization codes.
  - Sigfox_AT_Slave/Core/Src/stm32wlxx_it.c                                     Interrupt Service Routines.
  - Sigfox_AT_Slave/Core/Src/stm32_lpm_if.c                                     Low layer function to enter/exit low power modes (stop, sleep)
  - Sigfox_AT_Slave/Core/Src/subghz.c                                           This file provides code for the configuration
                                                                                of the SUBGHZ instances.
  - Sigfox_AT_Slave/Core/Src/system_stm32wlxx.c                                 CMSIS Cortex Device Peripheral Access Layer System Source File
  - Sigfox_AT_Slave/Core/Src/sys_app.c                                          Initializes HW and SW system entities (not related to the radio)
  - Sigfox_AT_Slave/Core/Src/sys_debug.c                                        Configure probes pins RealTime debugging and JTAG/SerialWires for LowPower
  - Sigfox_AT_Slave/Core/Src/timer_if.c                                         Configure RTC Alarm, Tick and Calendar manager
  - Sigfox_AT_Slave/Core/Src/usart.c                                            This file provides code for the configuration
                                                                                of the USART instances.
  - Sigfox_AT_Slave/Core/Src/usart_if.c                                         Configuration of UART driver interface for hyperterminal communication
  - Sigfox_AT_Slave/Sigfox/App/app_sigfox.c                                     Application of the Sigfox Middleware
  - Sigfox_AT_Slave/Sigfox/App/ee.c                                             Implementation of the EEPROM emulator
  - Sigfox_AT_Slave/Sigfox/App/sgfx_app.c                                       provides code for the application of the sigfox Middleware
  - Sigfox_AT_Slave/Sigfox/App/sgfx_at.c                                        Header for driver sgfx_at.c module
  - Sigfox_AT_Slave/Sigfox/App/sgfx_command.c                                   main command driver dedicated to command AT
  - Sigfox_AT_Slave/Sigfox/App/sgfx_cstimer.c                                   manages carrier sense timer.
  - Sigfox_AT_Slave/Sigfox/App/sgfx_eeprom_if.c                                 eeprom interface to the sigfox component
  - Sigfox_AT_Slave/Sigfox/Target/mcu_api.c                                     mcu library interface
  - Sigfox_AT_Slave/Sigfox/Target/mn_api.c                                      monarch library interface implementation
  - Sigfox_AT_Slave/Sigfox/Target/radio_board_if.c                              This file provides an interface layer between MW and Radio Board
  - Sigfox_AT_Slave/Sigfox/Target/rf_api.c                                      rf library interface
  - Sigfox_AT_Slave/Sigfox/Target/se_nvm.c                                      manages SE nvm data
  - Sigfox_AT_Slave/Sigfox/Target/sgfx_credentials.c                            manages keys and encryption algorithm
  - Sigfox_AT_Slave/STM32CubeIDE/Application/User/Core/syscalls.c               STM32CubeIDE Minimal System calls file
  - Sigfox_AT_Slave/STM32CubeIDE/Application/User/Core/sysmem.c                 STM32CubeIDE System Memory calls file


@par Hardware and Software environment

  - This example runs on the STM32WL55JC1 (HIGH-BAND) Nucleo board. STM32WL55JC2 (LOW-BAND) devices are not suitable.

  - STM32WL55JC1 Nucleo board Set-up
    - Connect the Nucleo board to your PC with a USB cable type A to micro-B
      to ST-LINK connector.
    - Please ensure that the ST-LINK connector jumpers are fitted.

  - Configure the software via the configuration files:
    - sys_conf.h, radio_conf.h, mw_log_conf.h, main.h, etc

  -Set Up:

             --------------------------  V    V  --------------------------
             |    Sigfox Object       |  |    |  |   Sigfox  Network      |
             |                        |  |    |  |                        |
   ComPort<--|                        |--|    |--|                        |-->Web Server
             |                        |          |                        |
             --------------------------          --------------------------

@par How to use it ?
In order to make the program work, you must do the following :
  - Open your preferred toolchain
  - Rebuild all files and load your image into target memory
  - Run the example
  - Open a Terminal, connected the Sigfox Object
  - UART Config = 9600, 8b, 1 stopbit, no parity, no flow control
  - Terminal Config: Select 'CR+LF' for Transmit New-Line and switch 'Local echo' on
  - Reset the board
  - type AT? to get all available commands
  - Send your AT commands by typing them in the terminal

@par How to debug ?
  - make sure the flag DEBUGGER_ENABLED to 1 in sys_conf.h
  - simpler to define the flag LOW_POWER_DISABLE to 1 as well
  - compile, download and attach

@par How to use MX to modify some RF middleware and application settings
  This example is compatible (with some problems/limitations) with STM32CubeMX 
  and the RF application and middleware configuration can be modified via GUI. Few warnings and guidelines:
  - ioc file is provided in the project directory and can be opened with STM32CubeMX v6.7.0 or higher.
  - warning: when regenerating with the provided ioc file, 
    the IDE projects are regenerated and paths to HAL and MWs files from STM32Cube/Repository location are erroneously added; to avoid that, 
    user shall uncheck the "Use Default Firmware Location" in the GUI "Project-Manager" panel
    and shall replace "Firmware Relative Path" with the root directory of the STM32CubeWL firmware package  (e.g. C:\myDir\STM32Cube_FW_WL_V1.3.0\);
    problem will be fixed in next STM32CubeMX version.
  - .extSettings file allows to add to the generated IDE projects additional files not generated natively by MX (e.g. BSP files).
  - when regenerating on existing code and existing linker files:
    - STM32CubeMX updates the existing project content and preserves linker files.
    - STM32CubeMX does not update the USER CODE sections (lines between /* USER CODE BEGIN Xxx */ and /* USER CODE END Xxx */).
  - when regenerating after copying only the ioc file in an empty directory:
    - STM32CubeMX generates default project files and default linker files. (Please check original linker file from project directory)
    - it is up to the user to to fill the USER CODE sections with his application code.

@par How to use it with Azure ThreadX RTOS?
  This example can be combined with Azure ThreadX RTOS via STM32CubeMX. The video tutorial:
  "STM32WL - How to port an existing RF application on Azure ThreadX RTOS"
  is available on https://www.youtube.com/playlist?list=PLnMKNibPkDnE2eaR-ZGM3ZJXadyQLtTpX

 * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
 */