Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
9 changes: 9 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
zephyr_include_directories(boards)
zephyr_include_directories(mac)
zephyr_include_directories(radio)
zephyr_include_directories(./)

add_subdirectory_ifdef(CONFIG_HAS_SEMTECH_LORAMAC mac)
add_subdirectory_ifdef(CONFIG_HAS_SEMTECH_RADIO_DRIVERS radio)
add_subdirectory_ifdef(CONFIG_HAS_SEMTECH_RADIO_DRIVERS system)
add_subdirectory_ifdef(CONFIG_HAS_SEMTECH_RADIO_DRIVERS boards)
Empty file added adduid
Empty file.
84 changes: 84 additions & 0 deletions boards/B-L072Z-LRWAN1/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
##
## ______ _
## / _____) _ | |
## ( (____ _____ ____ _| |_ _____ ____| |__
## \____ \| ___ | (_ _) ___ |/ ___) _ \
## _____) ) ____| | | || |_| ____( (___| | | |
## (______/|_____)_|_|_| \__)_____)\____)_| |_|
## (C)2013-2017 Semtech
## ___ _____ _ ___ _ _____ ___ ___ ___ ___
## / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __|
## \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _|
## |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___|
## embedded.connectivity.solutions.==============
##
## License: Revised BSD License, see LICENSE.TXT file included in the project
## Authors: Johannes Bruder (STACKFORCE), Miguel Luis (Semtech)
##
project(B-L072Z-LRWAN1)
cmake_minimum_required(VERSION 3.6)
enable_language(ASM)

#---------------------------------------------------------------------------------------
# Target
#---------------------------------------------------------------------------------------

list(APPEND ${PROJECT_NAME}_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/adc-board.c"
"${CMAKE_CURRENT_SOURCE_DIR}/board.c"
"${CMAKE_CURRENT_SOURCE_DIR}/delay-board.c"
"${CMAKE_CURRENT_SOURCE_DIR}/eeprom-board.c"
"${CMAKE_CURRENT_SOURCE_DIR}/gpio-board.c"
"${CMAKE_CURRENT_SOURCE_DIR}/lpm-board.c"
"${CMAKE_CURRENT_SOURCE_DIR}/rtc-board.c"
"${CMAKE_CURRENT_SOURCE_DIR}/spi-board.c"
"${CMAKE_CURRENT_SOURCE_DIR}/sx1276-board.c"
"${CMAKE_CURRENT_SOURCE_DIR}/uart-board.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/sysIrqHandlers.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/utilities.c"
"${CMAKE_CURRENT_SOURCE_DIR}/cmsis/arm-gcc/startup_stm32l072xx.s"
"${CMAKE_CURRENT_SOURCE_DIR}/cmsis/system_stm32l0xx.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_adc.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_adc_ex.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rtc.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rtc_ex.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_spi.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.c"
)

add_library(${PROJECT_NAME} OBJECT EXCLUDE_FROM_ALL ${${PROJECT_NAME}_SOURCES})

target_compile_definitions(${PROJECT_NAME} PUBLIC -DUSE_HAL_DRIVER -DSTM32L072xx)

# Add define if debbuger support is enabled
target_compile_definitions(${PROJECT_NAME} PUBLIC $<$<BOOL:${USE_DEBUGGER}>:USE_DEBUGGER>)

# Add define if radio debug pins support is enabled
target_compile_definitions(${PROJECT_NAME} PUBLIC $<$<BOOL:${USE_RADIO_DEBUG}>:USE_RADIO_DEBUG>)

target_include_directories(${PROJECT_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/cmsis
${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32
${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/cmsis
${CMAKE_CURRENT_SOURCE_DIR}/../mcu/stm32/STM32L0xx_HAL_Driver/Inc
$<TARGET_PROPERTY:board,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:system,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:radio,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:peripherals,INTERFACE_INCLUDE_DIRECTORIES>
)

set_property(TARGET ${PROJECT_NAME} PROPERTY C_STANDARD 11)
128 changes: 128 additions & 0 deletions boards/B-L072Z-LRWAN1/adc-board.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
/*!
* \file adc-board.c
*
* \brief Target board ADC driver implementation
*
* \copyright Revised BSD License, see section \ref LICENSE.
*
* \code
* ______ _
* / _____) _ | |
* ( (____ _____ ____ _| |_ _____ ____| |__
* \____ \| ___ | (_ _) ___ |/ ___) _ \
* _____) ) ____| | | || |_| ____( (___| | | |
* (______/|_____)_|_|_| \__)_____)\____)_| |_|
* (C)2013-2017 Semtech
*
* \endcode
*
* \author Miguel Luis ( Semtech )
*
* \author Gregory Cristian ( Semtech )
*/
#include <stdint.h>
#include <stdbool.h>
#include "stm32l0xx.h"
#include "board-config.h"
#include "adc-board.h"

ADC_HandleTypeDef AdcHandle;

void AdcMcuInit( Adc_t *obj, PinNames adcInput )
{
AdcHandle.Instance = ( ADC_TypeDef* )ADC1_BASE;

__HAL_RCC_ADC1_CLK_ENABLE( );

HAL_ADC_DeInit( &AdcHandle );

if( adcInput != NC )
{
GpioInit( &obj->AdcInput, adcInput, PIN_ANALOGIC, PIN_PUSH_PULL, PIN_NO_PULL, 0 );
}
}

void AdcMcuConfig( void )
{
// Configure ADC
AdcHandle.Init.OversamplingMode = DISABLE;
AdcHandle.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1;
AdcHandle.Init.Resolution = ADC_RESOLUTION_12B;
AdcHandle.Init.SamplingTime = ADC_SAMPLETIME_160CYCLES_5;
AdcHandle.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD;
AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT;
AdcHandle.Init.ContinuousConvMode = DISABLE;
AdcHandle.Init.DiscontinuousConvMode = DISABLE;
AdcHandle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
AdcHandle.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T6_TRGO;
AdcHandle.Init.DMAContinuousRequests = DISABLE;
AdcHandle.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
AdcHandle.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
AdcHandle.Init.LowPowerAutoWait = DISABLE;
AdcHandle.Init.LowPowerFrequencyMode = DISABLE; // To be enabled only if ADC clock < 2.8 MHz
AdcHandle.Init.LowPowerAutoPowerOff = DISABLE;
HAL_ADC_Init( &AdcHandle );

// Calibration
HAL_ADCEx_Calibration_Start( &AdcHandle, ADC_SINGLE_ENDED );

}

uint16_t AdcMcuReadChannel( Adc_t *obj, uint32_t channel )
{
ADC_ChannelConfTypeDef adcConf = { 0 };
uint16_t adcData = 0;
uint32_t tickStart = 0;
bool isAdcReady = true;

// Enable HSI
__HAL_RCC_HSI_ENABLE( );

// Wait till HSI is ready
while( __HAL_RCC_GET_FLAG( RCC_FLAG_HSIRDY ) == RESET )
{
}

__HAL_RCC_ADC1_CLK_ENABLE( );

adcConf.Channel = channel;
adcConf.Rank = ADC_RANK_CHANNEL_NUMBER;
HAL_ADC_ConfigChannel( &AdcHandle, &adcConf );

// Enable ADC1
__HAL_ADC_ENABLE( &AdcHandle );

// Wait for ADC to effectively be enabled
tickStart = HAL_GetTick( );
while( __HAL_ADC_GET_FLAG( &AdcHandle, ADC_FLAG_RDY ) == RESET )
{
if( ( HAL_GetTick( ) - tickStart ) > ADC_ENABLE_TIMEOUT )
{
isAdcReady = false;
break;
}
}

if( isAdcReady != false )
{
// Start ADC Software Conversion
HAL_ADC_Start( &AdcHandle );

HAL_ADC_PollForConversion( &AdcHandle, HAL_MAX_DELAY );

adcData = HAL_ADC_GetValue( &AdcHandle );
}

__HAL_ADC_DISABLE( &AdcHandle );

if( ( adcConf.Channel == ADC_CHANNEL_TEMPSENSOR ) || ( adcConf.Channel == ADC_CHANNEL_VREFINT ) )
{
HAL_ADC_DeInit( &AdcHandle );
}
__HAL_RCC_ADC1_CLK_DISABLE( );

// Disable HSI
__HAL_RCC_HSI_DISABLE( );

return adcData;
}
96 changes: 96 additions & 0 deletions boards/B-L072Z-LRWAN1/board-config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
/*!
* \file board-config.h
*
* \brief Board configuration
*
* \copyright Revised BSD License, see section \ref LICENSE.
*
* \code
* ______ _
* / _____) _ | |
* ( (____ _____ ____ _| |_ _____ ____| |__
* \____ \| ___ | (_ _) ___ |/ ___) _ \
* _____) ) ____| | | || |_| ____( (___| | | |
* (______/|_____)_|_|_| \__)_____)\____)_| |_|
* (C)2013-2017 Semtech
*
* ___ _____ _ ___ _ _____ ___ ___ ___ ___
* / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __|
* \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _|
* |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___|
* embedded.connectivity.solutions===============
*
* \endcode
*
* \author Miguel Luis ( Semtech )
*
* \author Gregory Cristian ( Semtech )
*
* \author Daniel Jaeckle ( STACKFORCE )
*
* \author Johannes Bruder ( STACKFORCE )
*/
#ifndef __BOARD_CONFIG_H__
#define __BOARD_CONFIG_H__

/*!
* Defines the time required for the TCXO to wakeup [ms].
*/
#define BOARD_TCXO_WAKEUP_TIME 5

/*!
* Board MCU pins definitions
*/
#define RADIO_RESET PC_0

#define RADIO_MOSI PA_7
#define RADIO_MISO PA_6
#define RADIO_SCLK PB_3

#define RADIO_NSS PA_15

#define RADIO_DIO_0 PB_4
#define RADIO_DIO_1 PB_1
#define RADIO_DIO_2 PB_0
#define RADIO_DIO_3 PC_13
#define RADIO_DIO_4 PA_5
#define RADIO_DIO_5 PA_4

#define RADIO_TCXO_POWER PA_12

#define RADIO_ANT_SWITCH_RX PA_1
#define RADIO_ANT_SWITCH_TX_BOOST PC_1
#define RADIO_ANT_SWITCH_TX_RFO PC_2

#define LED_1 PB_5
#define LED_2 PA_5
#define LED_3 PB_6
#define LED_4 PB_7

#define LED_GREEN LED_1
#define LED_RED1 LED_2
#define LED_BLUE LED_3
#define LED_RED2 LED_4

#define BTN_1 PB_2

#define OSC_LSE_IN PC_14
#define OSC_LSE_OUT PC_15

#define OSC_HSE_IN PH_0
#define OSC_HSE_OUT PH_1

#define SWCLK PA_14
#define SWDAT PA_13

#define I2C_SCL PB_8
#define I2C_SDA PB_9

#define UART_TX PA_2
#define UART_RX PA_3

// Debug pins definition.
#define RADIO_DBG_PIN_TX PB_13
#define RADIO_DBG_PIN_RX PB_14

#endif // __BOARD_CONFIG_H__
Loading