From d5e2df46e524a30eedb6bb115e43acb84ce26645 Mon Sep 17 00:00:00 2001 From: kurisaw <2053731441@qq.com> Date: Thu, 1 Feb 2024 16:27:18 +0800 Subject: [PATCH] [bsp][hmi-board] Optimize hardware driver configuration and trim the project file volume --- bsp/renesas/docs/figures/fsp_configure.png | Bin 0 -> 46405 bytes bsp/renesas/docs/figures/mdk_rasc.png | Bin 0 -> 263617 bytes bsp/renesas/ebf_qi_min_6m5/README.md | 9 + bsp/renesas/libraries/HAL_Drivers/drv_sdhi.c | 9 +- bsp/renesas/ra2l1-cpk/README.md | 10 +- bsp/renesas/ra4m2-eco/README.md | 12 +- .../ra4m2-eco/docs/pictures/fsp_configure.png | Bin 0 -> 46405 bytes .../ra4m2-eco/docs/pictures/mdk_rasc.png | Bin 0 -> 263617 bytes bsp/renesas/ra6m3-ek/README.md | 9 + bsp/renesas/ra6m3-ek/board/Kconfig | 95 +- bsp/renesas/ra6m3-hmi-board/.config | 73 +- .../.settings/standalone.prefs | 43 +- bsp/renesas/ra6m3-hmi-board/README.md | 13 + bsp/renesas/ra6m3-hmi-board/README_ZH.md | 13 + bsp/renesas/ra6m3-hmi-board/board/Kconfig | 180 +- bsp/renesas/ra6m3-hmi-board/buildinfo.gpdsc | 105 +- bsp/renesas/ra6m3-hmi-board/configuration.xml | 532 +++++ bsp/renesas/ra6m3-hmi-board/ra/SConscript | 4 + .../ra/fsp/inc/api/r_adc_api.h | 410 ---- .../ra/fsp/inc/api/r_elc_api.h | 185 -- .../ra/fsp/inc/api/r_timer_api.h | 332 --- .../ra/fsp/inc/instances/r_adc.h | 359 ---- .../ra/fsp/inc/instances/r_glcdc.h | 244 --- .../ra6m3-hmi-board/ra/fsp/src/r_adc/r_adc.c | 1802 ---------------- .../ra6m3-hmi-board/ra/fsp/src/r_gpt/r_gpt.c | 1830 ----------------- .../ra_cfg/fsp_cfg/r_adc_cfg.h | 5 - .../ra_cfg/fsp_cfg/r_gpt_cfg.h | 8 - bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.c | 482 ----- bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.h | 60 - .../ra6m3-hmi-board/ra_gen/vector_data.c | 8 - .../ra6m3-hmi-board/ra_gen/vector_data.h | 10 +- bsp/renesas/ra6m3-hmi-board/rtconfig.h | 38 +- bsp/renesas/ra6m4-cpk/README.md | 9 + bsp/renesas/ra6m4-cpk/board/Kconfig | 79 +- bsp/renesas/ra6m4-iot/README.md | 10 +- bsp/renesas/ra6m4-iot/board/Kconfig | 22 +- bsp/renesas/ra8d1-ek/.config | 83 +- bsp/renesas/ra8d1-ek/README.md | 13 + bsp/renesas/ra8d1-ek/README_EN.md | 13 + bsp/renesas/ra8d1-ek/board/Kconfig | 99 +- bsp/renesas/ra8d1-ek/ra/SConscript | 4 + bsp/renesas/ra8d1-ek/rtconfig.h | 14 +- bsp/renesas/ra8m1-ek/README.md | 13 + bsp/renesas/ra8m1-ek/README_EN.md | 13 + bsp/renesas/ra8m1-ek/board/Kconfig | 25 +- bsp/renesas/tools/startup_check.py | 5 +- 46 files changed, 1220 insertions(+), 6062 deletions(-) create mode 100644 bsp/renesas/docs/figures/fsp_configure.png create mode 100644 bsp/renesas/docs/figures/mdk_rasc.png create mode 100644 bsp/renesas/ra4m2-eco/docs/pictures/fsp_configure.png create mode 100644 bsp/renesas/ra4m2-eco/docs/pictures/mdk_rasc.png delete mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_adc_api.h delete mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_elc_api.h delete mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_timer_api.h delete mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_adc.h delete mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_glcdc.h delete mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_adc/r_adc.c delete mode 100644 bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_gpt/r_gpt.c delete mode 100644 bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_adc_cfg.h delete mode 100644 bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_gpt_cfg.h diff --git a/bsp/renesas/docs/figures/fsp_configure.png b/bsp/renesas/docs/figures/fsp_configure.png new file mode 100644 index 0000000000000000000000000000000000000000..45d2b7a8960aec6303c745cd1098729a1a7ba4de GIT binary patch literal 46405 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 literal 0 HcmV?d00001 diff --git a/bsp/renesas/docs/figures/mdk_rasc.png b/bsp/renesas/docs/figures/mdk_rasc.png new file mode 100644 index 0000000000000000000000000000000000000000..aeb52c942b6eac28c1f833916006e31e6d414675 GIT binary patch literal 263617 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 z%0D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 + @@ -58,8 +59,13 @@ + + + + + @@ -67,66 +73,122 @@ + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -140,9 +202,16 @@ + + + + + + + diff --git a/bsp/renesas/ra6m3-hmi-board/configuration.xml b/bsp/renesas/ra6m3-hmi-board/configuration.xml index 681297d6dd..13558297fa 100644 --- a/bsp/renesas/ra6m3-hmi-board/configuration.xml +++ b/bsp/renesas/ra6m3-hmi-board/configuration.xml @@ -173,6 +173,38 @@ General PWM Timer Renesas.RA.3.5.0.pack + + TES DAVE 2D Drawing Engine + TES.Dave2D.3.8.0+fsp.3.5.0.pack + + + Direct Memory Access Controller + Renesas.RA.3.5.0.pack + + + TES D/AVE 2D Port + Renesas.RA.3.5.0.pack + + + Ethernet PHY + Renesas.RA.3.5.0.pack + + + Ethernet + Renesas.RA.3.5.0.pack + + + Graphics LCD Controller + Renesas.RA.3.5.0.pack + + + JPEG Codec + Renesas.RA.3.5.0.pack + + + SD/MMC Host Interface + Renesas.RA.3.5.0.pack + @@ -414,6 +446,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -422,25 +766,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -455,10 +843,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -474,26 +894,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -502,6 +1025,15 @@ + + + + + + + + + diff --git a/bsp/renesas/ra6m3-hmi-board/ra/SConscript b/bsp/renesas/ra6m3-hmi-board/ra/SConscript index 52e96ac900..294776d305 100644 --- a/bsp/renesas/ra6m3-hmi-board/ra/SConscript +++ b/bsp/renesas/ra6m3-hmi-board/ra/SConscript @@ -22,5 +22,9 @@ elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): cwd + '/fsp/inc/api', cwd + '/fsp/inc/instances',] +if GetDepend('BSP_USING_G2D'): + src += Glob(cwd + '/tes/dave2d/src/*.c') + CPPPATH += [cwd + '/tes/dave2d/inc'] + group = DefineGroup('ra', src, depend = [''], CPPPATH = CPPPATH) Return('group') diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_adc_api.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_adc_api.h deleted file mode 100644 index d22d1ef4b4..0000000000 --- a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_adc_api.h +++ /dev/null @@ -1,410 +0,0 @@ -/*********************************************************************************************************************** - * Copyright [2020-2021] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. - * - * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products - * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are - * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use - * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property - * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas - * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION - * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT - * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR - * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM - * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION - * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, - * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, - * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY - * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. - **********************************************************************************************************************/ - -#ifndef R_ADC_API_H -#define R_ADC_API_H - -/*******************************************************************************************************************//** - * @ingroup RENESAS_INTERFACES - * @defgroup ADC_API ADC Interface - * @brief Interface for A/D Converters. - * - * @section ADC_API_SUMMARY Summary - * The ADC interface provides standard ADC functionality including one-shot mode (single scan), continuous scan and - * group scan. It also allows configuration of hardware and software triggers for starting scans. After each conversion - * an interrupt can be triggered, and if a callback function is provided, the call back is invoked with the - * appropriate event information. - * - * Implemented by: - * @ref ADC - * - * @{ - **********************************************************************************************************************/ - -/*********************************************************************************************************************** - * Includes - **********************************************************************************************************************/ - -/* Includes board and MCU related header files. */ -#include "bsp_api.h" -#include "r_elc_api.h" -#include "r_transfer_api.h" - -/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ -FSP_HEADER - -/********************************************************************************************************************** - * Macro definitions - **********************************************************************************************************************/ - -/***************************************************************************** - * Typedef definitions - ******************************************************************************/ - -/** ADC operation mode definitions */ -typedef enum e_adc_mode -{ - ADC_MODE_SINGLE_SCAN = 0, ///< Single scan - one or more channels - ADC_MODE_GROUP_SCAN = 1, ///< Two trigger sources to trigger scan for two groups which contain one or more channels - ADC_MODE_CONTINUOUS_SCAN = 2, ///< Continuous scan - one or more channels -} adc_mode_t; - -/** ADC data resolution definitions */ -typedef enum e_adc_resolution -{ - ADC_RESOLUTION_12_BIT = 0, ///< 12 bit resolution - ADC_RESOLUTION_10_BIT = 1, ///< 10 bit resolution - ADC_RESOLUTION_8_BIT = 2, ///< 8 bit resolution - ADC_RESOLUTION_14_BIT = 3, ///< 14 bit resolution - ADC_RESOLUTION_16_BIT = 4, ///< 16 bit resolution - ADC_RESOLUTION_24_BIT = 5, ///< 24 bit resolution -} adc_resolution_t; - -/** ADC data alignment definitions */ -typedef enum e_adc_alignment -{ - ADC_ALIGNMENT_RIGHT = 0, ///< Data alignment right - ADC_ALIGNMENT_LEFT = 1 ///< Data alignment left -} adc_alignment_t; - -/** ADC trigger mode definitions */ -typedef enum e_adc_trigger -{ - ADC_TRIGGER_SOFTWARE = 0, ///< Software trigger; not for group modes - ADC_TRIGGER_SYNC_ELC = 2, ///< Synchronous trigger via ELC - ADC_TRIGGER_ASYNC_EXTERNAL = 3, ///< External asynchronous trigger; not for group modes -} adc_trigger_t; - -/** ADC callback event definitions */ -typedef enum e_adc_event -{ - ADC_EVENT_SCAN_COMPLETE, ///< Normal/Group A scan complete - ADC_EVENT_SCAN_COMPLETE_GROUP_B, ///< Group B scan complete - ADC_EVENT_CALIBRATION_COMPLETE, ///< Calibration complete - ADC_EVENT_CONVERSION_COMPLETE, ///< Conversion complete - ADC_EVENT_CALIBRATION_REQUEST, ///< Calibration requested - ADC_EVENT_CONVERSION_ERROR, ///< Scan error - ADC_EVENT_OVERFLOW, ///< Overflow occurred - ADC_EVENT_LIMIT_CLIP, ///< Limiter clipping occurred - ADC_EVENT_FIFO_READ_REQUEST, ///< FIFO read requested - ADC_EVENT_FIFO_OVERFLOW, ///< FIFO overflow occurred - ADC_EVENT_WINDOW_COMPARE_A, ///< Window A comparison condition met - ADC_EVENT_WINDOW_COMPARE_B, ///< Window B comparison condition met -} adc_event_t; - -#ifndef BSP_OVERRIDE_ADC_CHANNEL_T - -/** ADC channels */ -typedef enum e_adc_channel -{ - ADC_CHANNEL_0 = 0, ///< ADC channel 0 - ADC_CHANNEL_1 = 1, ///< ADC channel 1 - ADC_CHANNEL_2 = 2, ///< ADC channel 2 - ADC_CHANNEL_3 = 3, ///< ADC channel 3 - ADC_CHANNEL_4 = 4, ///< ADC channel 4 - ADC_CHANNEL_5 = 5, ///< ADC channel 5 - ADC_CHANNEL_6 = 6, ///< ADC channel 6 - ADC_CHANNEL_7 = 7, ///< ADC channel 7 - ADC_CHANNEL_8 = 8, ///< ADC channel 8 - ADC_CHANNEL_9 = 9, ///< ADC channel 9 - ADC_CHANNEL_10 = 10, ///< ADC channel 10 - ADC_CHANNEL_11 = 11, ///< ADC channel 11 - ADC_CHANNEL_12 = 12, ///< ADC channel 12 - ADC_CHANNEL_13 = 13, ///< ADC channel 13 - ADC_CHANNEL_14 = 14, ///< ADC channel 14 - ADC_CHANNEL_15 = 15, ///< ADC channel 15 - ADC_CHANNEL_16 = 16, ///< ADC channel 16 - ADC_CHANNEL_17 = 17, ///< ADC channel 17 - ADC_CHANNEL_18 = 18, ///< ADC channel 18 - ADC_CHANNEL_19 = 19, ///< ADC channel 19 - ADC_CHANNEL_20 = 20, ///< ADC channel 20 - ADC_CHANNEL_21 = 21, ///< ADC channel 21 - ADC_CHANNEL_22 = 22, ///< ADC channel 22 - ADC_CHANNEL_23 = 23, ///< ADC channel 23 - ADC_CHANNEL_24 = 24, ///< ADC channel 24 - ADC_CHANNEL_25 = 25, ///< ADC channel 25 - ADC_CHANNEL_26 = 26, ///< ADC channel 26 - ADC_CHANNEL_27 = 27, ///< ADC channel 27 - ADC_CHANNEL_28 = 28, ///< ADC channel 28 - ADC_CHANNEL_DUPLEX_A = 50, ///< Data duplexing register A - ADC_CHANNEL_DUPLEX_B = 51, ///< Data duplexing register B - ADC_CHANNEL_DUPLEX = -4, ///< Data duplexing register - ADC_CHANNEL_TEMPERATURE = -3, ///< Temperature sensor output - ADC_CHANNEL_VOLT = -2, ///< Internal reference voltage -} adc_channel_t; - -#endif - -typedef enum e_adc_group_id -{ - ADC_GROUP_ID_0 = 0, ///< Group ID 0 - ADC_GROUP_ID_1 = 1, ///< Group ID 1 - ADC_GROUP_ID_2 = 2, ///< Group ID 2 - ADC_GROUP_ID_3 = 3, ///< Group ID 3 - ADC_GROUP_ID_4 = 4, ///< Group ID 4 - ADC_GROUP_ID_5 = 5, ///< Group ID 5 - ADC_GROUP_ID_6 = 6, ///< Group ID 6 - ADC_GROUP_ID_7 = 7, ///< Group ID 7 - ADC_GROUP_ID_8 = 8, ///< Group ID 8 -} adc_group_id_t; - -typedef enum e_adc_group_mask -{ - ADC_GROUP_MASK_NONE = 0x000, ///< Group Mask Unknown or None - ADC_GROUP_MASK_0 = 0x001, ///< Group Mask 0 - ADC_GROUP_MASK_1 = 0x002, ///< Group Mask 1 - ADC_GROUP_MASK_2 = 0x004, ///< Group Mask 2 - ADC_GROUP_MASK_3 = 0x008, ///< Group Mask 3 - ADC_GROUP_MASK_4 = 0x010, ///< Group Mask 4 - ADC_GROUP_MASK_5 = 0x020, ///< Group Mask 5 - ADC_GROUP_MASK_6 = 0x040, ///< Group Mask 6 - ADC_GROUP_MASK_7 = 0x080, ///< Group Mask 7 - ADC_GROUP_MASK_8 = 0x100, ///< Group Mask 8 - ADC_GROUP_MASK_ALL = 0x1FF, ///< All Groups -} adc_group_mask_t; - -/** ADC states. */ -typedef enum e_adc_state -{ - ADC_STATE_IDLE = 0, ///< ADC is idle - ADC_STATE_SCAN_IN_PROGRESS = 1, ///< ADC scan in progress -} adc_state_t; - -/** ADC status. */ -typedef struct st_adc_status -{ - adc_state_t state; ///< Current state -} adc_status_t; - -/** ADC callback arguments definitions */ -typedef struct st_adc_callback_args -{ - uint16_t unit; ///< ADC device in use - adc_event_t event; ///< ADC callback event - void const * p_context; ///< Placeholder for user data - adc_channel_t channel; ///< Channel of conversion result. Only valid for r_adc ADC_EVENT_CONVERSION_COMPLETE - uint64_t channel_mask; ///< Channel mask for conversion result. Only valid for r_adc_b - adc_group_mask_t group_mask; ///< Group Mask -} adc_callback_args_t; - -/** ADC Information Structure for Transfer Interface */ -typedef struct st_adc_info -{ - __I void * p_address; ///< The address to start reading the data from - uint32_t length; ///< The total number of transfers to read - - transfer_size_t transfer_size; ///< The size of each transfer - elc_peripheral_t elc_peripheral; ///< Name of the peripheral in the ELC list - elc_event_t elc_event; ///< Name of the ELC event for the peripheral - uint32_t calibration_data; ///< Temperature sensor calibration data (0xFFFFFFFF if unsupported) for reference voltage - int16_t slope_microvolts; ///< Temperature sensor slope in microvolts/degrees C - bool calibration_ongoing; ///< Calibration is in progress. -} adc_info_t; - -/** ADC general configuration */ -typedef struct st_adc_cfg -{ - uint16_t unit; ///< ADC unit to be used - adc_mode_t mode; ///< ADC operation mode - adc_resolution_t resolution; ///< ADC resolution - adc_alignment_t alignment; ///< Specify left or right alignment; ignored if addition used - adc_trigger_t trigger; ///< Default and Group A trigger source - IRQn_Type scan_end_irq; ///< Scan end IRQ number - IRQn_Type scan_end_b_irq; ///< Scan end group B IRQ number - uint8_t scan_end_ipl; ///< Scan end interrupt priority - uint8_t scan_end_b_ipl; ///< Scan end group B interrupt priority - void (* p_callback)(adc_callback_args_t * p_args); ///< Callback function; set to NULL for none - void const * p_context; ///< Placeholder for user data. Passed to the user callback in @ref adc_callback_args_t. - void const * p_extend; ///< Extension parameter for hardware specific settings -} adc_cfg_t; - -/** ADC control block. Allocate using driver instance control structure from driver instance header file. */ -typedef void adc_ctrl_t; - -/** ADC functions implemented at the HAL layer will follow this API. */ -typedef struct st_adc_api -{ - /** Initialize ADC Unit; apply power, set the operational mode, trigger sources, interrupt priority, - * and configurations common to all channels and sensors. - * @par Implemented as - * - @ref R_ADC_Open() - * - @ref R_ADC_B_Open() - * - @ref R_SDADC_Open() - * - * @pre Configure peripheral clocks, ADC pins and IRQs prior to calling this function. - * @param[in] p_ctrl Pointer to control handle structure - * @param[in] p_cfg Pointer to configuration structure - */ - fsp_err_t (* open)(adc_ctrl_t * const p_ctrl, adc_cfg_t const * const p_cfg); - - /** Configure the scan including the channels, groups, and scan triggers to be used for the unit that - * was initialized in the open call. Some configurations are not supported for all implementations. - * See implementation for details. - * @par Implemented as - * - @ref R_ADC_ScanCfg() - * - @ref R_ADC_B_ScanCfg() - * - @ref R_SDADC_ScanCfg() - * - * @param[in] p_ctrl Pointer to control handle structure - * @param[in] p_extend See implementation for details - */ - fsp_err_t (* scanCfg)(adc_ctrl_t * const p_ctrl, void const * const p_extend); - - /** Start the scan (in case of a software trigger), or enable the hardware trigger. - * @par Implemented as - * - @ref R_ADC_ScanStart() - * - @ref R_SDADC_ScanStart() - * - * @param[in] p_ctrl Pointer to control handle structure - */ - fsp_err_t (* scanStart)(adc_ctrl_t * const p_ctrl); - - /** Start the scan group (in case of a software trigger), or enable the hardware trigger. - * @par Implemented as - * - @ref R_ADC_B_ScanGroupStart() - * - * @param[in] p_ctrl Pointer to control handle structure - * @param[in] group_mask Mask of groups to start - */ - fsp_err_t (* scanGroupStart)(adc_ctrl_t * p_ctrl, adc_group_mask_t group_mask); - - /** Stop the ADC scan (in case of a software trigger), or disable the hardware trigger. - * @par Implemented as - * - @ref R_ADC_ScanStop() - * - @ref R_SDADC_ScanStop() - * - * @param[in] p_ctrl Pointer to control handle structure - */ - fsp_err_t (* scanStop)(adc_ctrl_t * const p_ctrl); - - /** Check scan status. - * @par Implemented as - * - @ref R_ADC_StatusGet() - * - @ref R_ADC_B_StatusGet() - * - @ref R_SDADC_StatusGet() - * - * @param[in] p_ctrl Pointer to control handle structure - * @param[out] p_status Pointer to store current status in - */ - fsp_err_t (* scanStatusGet)(adc_ctrl_t * const p_ctrl, adc_status_t * p_status); - - /** Read ADC conversion result. - * @par Implemented as - * - @ref R_ADC_Read() - * - @ref R_ADC_B_Read() - * - @ref R_SDADC_Read() - * - * @param[in] p_ctrl Pointer to control handle structure - * @param[in] reg_id ADC channel to read (see enumeration adc_channel_t) - * @param[in] p_data Pointer to variable to load value into. - */ - fsp_err_t (* read)(adc_ctrl_t * const p_ctrl, adc_channel_t const reg_id, uint16_t * const p_data); - - /** Read ADC conversion result into a 32-bit word. - * @par Implemented as - * - @ref R_ADC_Read32() - * - @ref R_ADC_B_Read32() - * - @ref R_SDADC_Read32() - * - * @param[in] p_ctrl Pointer to control handle structure - * @param[in] reg_id ADC channel to read (see enumeration adc_channel_t) - * @param[in] p_data Pointer to variable to load value into. - */ - fsp_err_t (* read32)(adc_ctrl_t * const p_ctrl, adc_channel_t const reg_id, uint32_t * const p_data); - - /** Calibrate ADC or associated PGA (programmable gain amplifier). The driver may require implementation specific - * arguments to the p_extend input. Not supported for all implementations. See implementation for details. - * @par Implemented as - * - @ref R_ADC_Calibrate() - * - @ref R_ADC_B_Calibrate() - * - @ref R_SDADC_Calibrate() - * - * @param[in] p_ctrl Pointer to control handle structure - * @param[in] p_extend Pointer to implementation specific arguments - */ - fsp_err_t (* calibrate)(adc_ctrl_t * const p_ctrl, void const * p_extend); - - /** Set offset for input PGA configured for differential input. Not supported for all implementations. - * See implementation for details. - * @par Implemented as - * - @ref R_SDADC_OffsetSet() - * - * @param[in] p_ctrl Pointer to control handle structure - * @param[in] reg_id ADC channel to read (see enumeration adc_channel_t) - * @param[in] offset See implementation for details. - */ - fsp_err_t (* offsetSet)(adc_ctrl_t * const p_ctrl, adc_channel_t const reg_id, int32_t const offset); - - /** - * Specify callback function and optional context pointer and working memory pointer. - * @par Implemented as - * - @ref R_ADC_CallbackSet() - * - @ref R_ADC_B_CallbackSet() - * - * @param[in] p_ctrl Pointer to the ADC control block. - * @param[in] p_callback Callback function - * @param[in] p_context Pointer to send to callback function - * @param[in] p_working_memory Pointer to volatile memory where callback structure can be allocated. - * Callback arguments allocated here are only valid during the callback. - */ - fsp_err_t (* callbackSet)(adc_ctrl_t * const p_api_ctrl, void (* p_callback)(adc_callback_args_t *), - void const * const p_context, adc_callback_args_t * const p_callback_memory); - - /** Close the specified ADC unit by ending any scan in progress, disabling interrupts, and removing power to the - * specified A/D unit. - * @par Implemented as - * - @ref R_ADC_Close() - * - @ref R_ADC_B_Close() - * - @ref R_SDADC_Close() - * - * @param[in] p_ctrl Pointer to control handle structure - */ - fsp_err_t (* close)(adc_ctrl_t * const p_ctrl); - - /** Return the ADC data register address of the first (lowest number) channel and the total number of bytes - * to be read in order for the DTC/DMAC to read the conversion results of all configured channels. - * Return the temperature sensor calibration and slope data. - * @par Implemented as - * - @ref R_ADC_InfoGet() - * - @ref R_ADC_B_InfoGet() - * - @ref R_SDADC_InfoGet() - * - * @param[in] p_ctrl Pointer to control handle structure - * @param[out] p_adc_info Pointer to ADC information structure - */ - fsp_err_t (* infoGet)(adc_ctrl_t * const p_ctrl, adc_info_t * const p_adc_info); -} adc_api_t; - -/** This structure encompasses everything that is needed to use an instance of this interface. */ -typedef struct st_adc_instance -{ - adc_ctrl_t * p_ctrl; ///< Pointer to the control structure for this instance - adc_cfg_t const * p_cfg; ///< Pointer to the configuration structure for this instance - void const * p_channel_cfg; ///< Pointer to the channel configuration structure for this instance - adc_api_t const * p_api; ///< Pointer to the API structure for this instance -} adc_instance_t; - -/*******************************************************************************************************************//** - * @} (end defgroup ADC_API) - **********************************************************************************************************************/ - -/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ -FSP_FOOTER -#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_elc_api.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_elc_api.h deleted file mode 100644 index 89861e49da..0000000000 --- a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_elc_api.h +++ /dev/null @@ -1,185 +0,0 @@ -/*********************************************************************************************************************** - * Copyright [2020-2021] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. - * - * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products - * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are - * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use - * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property - * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas - * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION - * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT - * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR - * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM - * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION - * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, - * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, - * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY - * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. - **********************************************************************************************************************/ - -/*******************************************************************************************************************//** - * @ingroup RENESAS_INTERFACES - * @defgroup ELC_API ELC Interface - * @brief Interface for the Event Link Controller. - * - * - * - * @{ - **********************************************************************************************************************/ - -#ifndef R_ELC_API_H -#define R_ELC_API_H - -/*********************************************************************************************************************** - * Includes - **********************************************************************************************************************/ - -/* Register definitions, common services and error codes. */ -#include "bsp_api.h" - -/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ -FSP_HEADER - -/********************************************************************************************************************** - * Macro definitions - **********************************************************************************************************************/ -#ifndef ELC_PERIPHERAL_NUM - #define ELC_PERIPHERAL_NUM (23U) -#endif - -/********************************************************************************************************************** - * Typedef definitions - **********************************************************************************************************************/ - -#ifndef BSP_OVERRIDE_ELC_PERIPHERAL_T - -/** Possible peripherals to be linked to event signals (not all available on all MCUs) */ -typedef enum e_elc_peripheral -{ - ELC_PERIPHERAL_GPT_A = (0), - ELC_PERIPHERAL_GPT_B = (1), - ELC_PERIPHERAL_GPT_C = (2), - ELC_PERIPHERAL_GPT_D = (3), - ELC_PERIPHERAL_GPT_E = (4), - ELC_PERIPHERAL_GPT_F = (5), - ELC_PERIPHERAL_GPT_G = (6), - ELC_PERIPHERAL_GPT_H = (7), - ELC_PERIPHERAL_ADC0 = (8), - ELC_PERIPHERAL_ADC0_B = (9), - ELC_PERIPHERAL_ADC1 = (10), - ELC_PERIPHERAL_ADC1_B = (11), - ELC_PERIPHERAL_DAC0 = (12), - ELC_PERIPHERAL_DAC1 = (13), - ELC_PERIPHERAL_IOPORT1 = (14), - ELC_PERIPHERAL_IOPORT2 = (15), - ELC_PERIPHERAL_IOPORT3 = (16), - ELC_PERIPHERAL_IOPORT4 = (17), - ELC_PERIPHERAL_CTSU = (18), - ELC_PERIPHERAL_DA8_0 = (19), - ELC_PERIPHERAL_DA8_1 = (20), - ELC_PERIPHERAL_SDADC0 = (22), -} elc_peripheral_t; - -#endif - -/** ELC control block. Allocate an instance specific control block to pass into the ELC API calls. - * @par Implemented as - * - elc_instance_ctrl_t - */ -typedef void elc_ctrl_t; - -/** Main configuration structure for the Event Link Controller */ -typedef struct st_elc_cfg -{ - elc_event_t const link[ELC_PERIPHERAL_NUM]; ///< Event link register (ELSR) settings -} elc_cfg_t; - -/** Software event number */ -typedef enum e_elc_software_event -{ - ELC_SOFTWARE_EVENT_0, ///< Software event 0 - ELC_SOFTWARE_EVENT_1, ///< Software event 1 -} elc_software_event_t; - -/** ELC driver structure. General ELC functions implemented at the HAL layer follow this API. */ -typedef struct st_elc_api -{ - /** Initialize all links in the Event Link Controller. - * @par Implemented as - * - @ref R_ELC_Open() - * - * @param[in] p_ctrl Pointer to control structure. - * @param[in] p_cfg Pointer to configuration structure. - **/ - fsp_err_t (* open)(elc_ctrl_t * const p_ctrl, elc_cfg_t const * const p_cfg); - - /** Disable all links in the Event Link Controller and close the API. - * @par Implemented as - * - @ref R_ELC_Close() - * - * @param[in] p_ctrl Pointer to control structure. - **/ - fsp_err_t (* close)(elc_ctrl_t * const p_ctrl); - - /** Generate a software event in the Event Link Controller. - * @par Implemented as - * - @ref R_ELC_SoftwareEventGenerate() - * - * @param[in] p_ctrl Pointer to control structure. - * @param[in] eventNum Software event number to be generated. - **/ - fsp_err_t (* softwareEventGenerate)(elc_ctrl_t * const p_ctrl, elc_software_event_t event_num); - - /** Create a single event link. - * @par Implemented as - * - @ref R_ELC_LinkSet() - * - * @param[in] p_ctrl Pointer to control structure. - * @param[in] peripheral The peripheral block that will receive the event signal. - * @param[in] signal The event signal. - **/ - fsp_err_t (* linkSet)(elc_ctrl_t * const p_ctrl, elc_peripheral_t peripheral, elc_event_t signal); - - /** Break an event link. - * @par Implemented as - * - @ref R_ELC_LinkBreak() - * - * @param[in] p_ctrl Pointer to control structure. - * @param[in] peripheral The peripheral that should no longer be linked. - **/ - fsp_err_t (* linkBreak)(elc_ctrl_t * const p_ctrl, elc_peripheral_t peripheral); - - /** Enable the operation of the Event Link Controller. - * @par Implemented as - * - @ref R_ELC_Enable() - * - * @param[in] p_ctrl Pointer to control structure. - **/ - fsp_err_t (* enable)(elc_ctrl_t * const p_ctrl); - - /** Disable the operation of the Event Link Controller. - * @par Implemented as - * - @ref R_ELC_Disable() - * - * @param[in] p_ctrl Pointer to control structure. - **/ - fsp_err_t (* disable)(elc_ctrl_t * const p_ctrl); -} elc_api_t; - -/** This structure encompasses everything that is needed to use an instance of this interface. */ -typedef struct st_elc_instance -{ - elc_ctrl_t * p_ctrl; ///< Pointer to the control structure for this instance - elc_cfg_t const * p_cfg; ///< Pointer to the configuration structure for this instance - elc_api_t const * p_api; ///< Pointer to the API structure for this instance -} elc_instance_t; - -/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ -FSP_FOOTER - -#endif - -/*******************************************************************************************************************//** - * @} (end addtogroup ELC_API) - **********************************************************************************************************************/ diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_timer_api.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_timer_api.h deleted file mode 100644 index 2cbd3b4860..0000000000 --- a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/api/r_timer_api.h +++ /dev/null @@ -1,332 +0,0 @@ -/*********************************************************************************************************************** - * Copyright [2020-2021] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. - * - * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products - * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are - * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use - * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property - * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas - * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION - * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT - * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR - * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM - * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION - * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, - * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, - * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY - * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. - **********************************************************************************************************************/ - -#ifndef R_TIMER_API_H -#define R_TIMER_API_H - -/*******************************************************************************************************************//** - * @defgroup TIMER_API Timer Interface - * @ingroup RENESAS_INTERFACES - * @brief Interface for timer functions. - * - * @section TIMER_API_SUMMARY Summary - * The general timer interface provides standard timer functionality including periodic mode, one-shot mode, PWM output, - * and free-running timer mode. After each timer cycle (overflow or underflow), an interrupt can be triggered. - * - * If an instance supports output compare mode, it is provided in the extension configuration - * timer_on__cfg_t defined in r_.h. - * - * Implemented by: - * - @ref GPT - * - @ref AGT - * - * @{ - **********************************************************************************************************************/ - -/*********************************************************************************************************************** - * Includes - **********************************************************************************************************************/ - -/* Includes board and MCU related header files. */ -#include "bsp_api.h" - -/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ -FSP_HEADER - -/********************************************************************************************************************** - * Macro definitions - **********************************************************************************************************************/ - -/* Leading zeroes removed to avoid coding standard violation. */ - -/********************************************************************************************************************** - * Typedef definitions - **********************************************************************************************************************/ - -/** Events that can trigger a callback function */ -typedef enum e_timer_event -{ - TIMER_EVENT_CYCLE_END, ///< Requested timer delay has expired or timer has wrapped around - TIMER_EVENT_CREST = TIMER_EVENT_CYCLE_END, ///< Timer crest event (counter is at a maximum, triangle-wave PWM only) - TIMER_EVENT_CAPTURE_A, ///< A capture has occurred on signal A - TIMER_EVENT_CAPTURE_B, ///< A capture has occurred on signal B - TIMER_EVENT_TROUGH, ///< Timer trough event (counter is 0, triangle-wave PWM only -} timer_event_t; - -/** Timer variant types. */ -typedef enum e_timer_variant -{ - TIMER_VARIANT_32_BIT, ///< 32-bit timer - TIMER_VARIANT_16_BIT ///< 16-bit timer -} timer_variant_t; - -/** Callback function parameter data */ -typedef struct st_timer_callback_args -{ - /** Placeholder for user data. Set in @ref timer_api_t::open function in @ref timer_cfg_t. */ - void const * p_context; - timer_event_t event; ///< The event can be used to identify what caused the callback. - - /** Most recent capture, only valid if event is TIMER_EVENT_CAPTURE_A or TIMER_EVENT_CAPTURE_B. */ - uint32_t capture; -} timer_callback_args_t; - -/** Timer control block. Allocate an instance specific control block to pass into the timer API calls. - * @par Implemented as - * - gpt_instance_ctrl_t - * - agt_instance_ctrl_t - */ -typedef void timer_ctrl_t; - -/** Possible status values returned by @ref timer_api_t::statusGet. */ -typedef enum e_timer_state -{ - TIMER_STATE_STOPPED = 0, ///< Timer is stopped - TIMER_STATE_COUNTING = 1, ///< Timer is running -} timer_state_t; - -/** Timer operational modes */ -typedef enum e_timer_mode -{ - TIMER_MODE_PERIODIC, ///< Timer restarts after period elapses. - TIMER_MODE_ONE_SHOT, ///< Timer stops after period elapses. - TIMER_MODE_PWM, ///< Timer generates saw-wave PWM output. - TIMER_MODE_TRIANGLE_WAVE_SYMMETRIC_PWM = 4U, ///< Timer generates symmetric triangle-wave PWM output. - TIMER_MODE_TRIANGLE_WAVE_ASYMMETRIC_PWM = 5U, ///< Timer generates asymmetric triangle-wave PWM output. - - /** - * Timer generates Asymmetric Triangle-wave PWM output. In PWM mode 3, the duty cycle does - * not need to be updated at each tough/crest interrupt. Instead, the trough and crest duty cycle values can be - * set once and only need to be updated when the application needs to change the duty cycle. - */ - TIMER_MODE_TRIANGLE_WAVE_ASYMMETRIC_PWM_MODE3 = 6U, -} timer_mode_t; - -/** Direction of timer count */ -typedef enum e_timer_direction -{ - TIMER_DIRECTION_DOWN = 0, ///< Timer count goes up - TIMER_DIRECTION_UP = 1 ///< Timer count goes down -} timer_direction_t; - -/** PCLK divisors */ -typedef enum e_timer_source_div -{ - TIMER_SOURCE_DIV_1 = 0, ///< Timer clock source divided by 1 - TIMER_SOURCE_DIV_2 = 1, ///< Timer clock source divided by 2 - TIMER_SOURCE_DIV_4 = 2, ///< Timer clock source divided by 4 - TIMER_SOURCE_DIV_8 = 3, ///< Timer clock source divided by 8 - TIMER_SOURCE_DIV_16 = 4, ///< Timer clock source divided by 16 - TIMER_SOURCE_DIV_32 = 5, ///< Timer clock source divided by 32 - TIMER_SOURCE_DIV_64 = 6, ///< Timer clock source divided by 64 - TIMER_SOURCE_DIV_128 = 7, ///< Timer clock source divided by 128 - TIMER_SOURCE_DIV_256 = 8, ///< Timer clock source divided by 256 - TIMER_SOURCE_DIV_512 = 9, ///< Timer clock source divided by 512 - TIMER_SOURCE_DIV_1024 = 10, ///< Timer clock source divided by 1024 -} timer_source_div_t; - -/** Timer information structure to store various information for a timer resource */ -typedef struct st_timer_info -{ - timer_direction_t count_direction; ///< Clock counting direction of the timer. - uint32_t clock_frequency; ///< Clock frequency of the timer counter. - - /** Period in raw timer counts. - * @note For triangle wave PWM modes, the full period is double this value. - */ - uint32_t period_counts; -} timer_info_t; - -/** Current timer status. */ -typedef struct st_timer_status -{ - uint32_t counter; ///< Current counter value - timer_state_t state; ///< Current timer state (running or stopped) -} timer_status_t; - -/** User configuration structure, used in open function */ -typedef struct st_timer_cfg -{ - timer_mode_t mode; ///< Select enumerated value from @ref timer_mode_t - - /* Period in raw timer counts. - * @note For triangle wave PWM modes, enter the period of half the triangle wave, or half the desired period. - */ - uint32_t period_counts; ///< Period in raw timer counts - timer_source_div_t source_div; ///< Source clock divider - uint32_t duty_cycle_counts; ///< Duty cycle in counts - - /** Select a channel corresponding to the channel number of the hardware. */ - uint8_t channel; - uint8_t cycle_end_ipl; ///< Cycle end interrupt priority - IRQn_Type cycle_end_irq; ///< Cycle end interrupt - - /** Callback provided when a timer ISR occurs. Set to NULL for no CPU interrupt. */ - void (* p_callback)(timer_callback_args_t * p_args); - - /** Placeholder for user data. Passed to the user callback in @ref timer_callback_args_t. */ - void const * p_context; - void const * p_extend; ///< Extension parameter for hardware specific settings. -} timer_cfg_t; - -/** Timer API structure. General timer functions implemented at the HAL layer follow this API. */ -typedef struct st_timer_api -{ - /** Initial configuration. - * @par Implemented as - * - @ref R_GPT_Open() - * - @ref R_AGT_Open() - * - * @param[in] p_ctrl Pointer to control block. Must be declared by user. Elements set here. - * @param[in] p_cfg Pointer to configuration structure. All elements of this structure must be set by user. - */ - fsp_err_t (* open)(timer_ctrl_t * const p_ctrl, timer_cfg_t const * const p_cfg); - - /** Start the counter. - * @par Implemented as - * - @ref R_GPT_Start() - * - @ref R_AGT_Start() - * - * @param[in] p_ctrl Control block set in @ref timer_api_t::open call for this timer. - */ - fsp_err_t (* start)(timer_ctrl_t * const p_ctrl); - - /** Stop the counter. - * @par Implemented as - * - @ref R_GPT_Stop() - * - @ref R_AGT_Stop() - * - * @param[in] p_ctrl Control block set in @ref timer_api_t::open call for this timer. - */ - fsp_err_t (* stop)(timer_ctrl_t * const p_ctrl); - - /** Reset the counter to the initial value. - * @par Implemented as - * - @ref R_GPT_Reset() - * - @ref R_AGT_Reset() - * - * @param[in] p_ctrl Control block set in @ref timer_api_t::open call for this timer. - */ - fsp_err_t (* reset)(timer_ctrl_t * const p_ctrl); - - /** Enables input capture. - * @par Implemented as - * - @ref R_GPT_Enable() - * - @ref R_AGT_Enable() - * - * @param[in] p_ctrl Control block set in @ref timer_api_t::open call for this timer. - */ - fsp_err_t (* enable)(timer_ctrl_t * const p_ctrl); - - /** Disables input capture. - * @par Implemented as - * - @ref R_GPT_Disable() - * - @ref R_AGT_Disable() - * - * @param[in] p_ctrl Control block set in @ref timer_api_t::open call for this timer. - */ - fsp_err_t (* disable)(timer_ctrl_t * const p_ctrl); - - /** Set the time until the timer expires. See implementation for details of period update timing. - * - * @par Implemented as - * - @ref R_GPT_PeriodSet() - * - @ref R_AGT_PeriodSet() - * - * @note Timer expiration may or may not generate a CPU interrupt based on how the timer is configured in - * @ref timer_api_t::open. - * @param[in] p_ctrl Control block set in @ref timer_api_t::open call for this timer. - * @param[in] p_period Time until timer should expire. - */ - fsp_err_t (* periodSet)(timer_ctrl_t * const p_ctrl, uint32_t const period); - - /** Sets the number of counts for the pin level to be high. If the timer is counting, the updated duty cycle is - * reflected after the next timer expiration. - * - * @par Implemented as - * - @ref R_GPT_DutyCycleSet() - * - @ref R_AGT_DutyCycleSet() - * - * @param[in] p_ctrl Control block set in @ref timer_api_t::open call for this timer. - * @param[in] duty_cycle_counts Time until duty cycle should expire. - * @param[in] pin Which output pin to update. See implementation for details. - */ - fsp_err_t (* dutyCycleSet)(timer_ctrl_t * const p_ctrl, uint32_t const duty_cycle_counts, uint32_t const pin); - - /** Stores timer information in p_info. - * @par Implemented as - * - @ref R_GPT_InfoGet() - * - @ref R_AGT_InfoGet() - * - * @param[in] p_ctrl Control block set in @ref timer_api_t::open call for this timer. - * @param[out] p_info Collection of information for this timer. - */ - fsp_err_t (* infoGet)(timer_ctrl_t * const p_ctrl, timer_info_t * const p_info); - - /** Get the current counter value and timer state and store it in p_status. - * @par Implemented as - * - @ref R_GPT_StatusGet() - * - @ref R_AGT_StatusGet() - * - * @param[in] p_ctrl Control block set in @ref timer_api_t::open call for this timer. - * @param[out] p_status Current status of this timer. - */ - fsp_err_t (* statusGet)(timer_ctrl_t * const p_ctrl, timer_status_t * const p_status); - - /** Specify callback function and optional context pointer and working memory pointer. - * @par Implemented as - * - @ref R_GPT_CallbackSet() - * - @ref R_AGT_CallbackSet() - * - * @param[in] p_ctrl Control block set in @ref timer_api_t::open call for this timer. - * @param[in] p_callback Callback function to register - * @param[in] p_context Pointer to send to callback function - * @param[in] p_working_memory Pointer to volatile memory where callback structure can be allocated. - * Callback arguments allocated here are only valid during the callback. - */ - fsp_err_t (* callbackSet)(timer_ctrl_t * const p_api_ctrl, void (* p_callback)(timer_callback_args_t *), - void const * const p_context, timer_callback_args_t * const p_callback_memory); - - /** Allows driver to be reconfigured and may reduce power consumption. - * @par Implemented as - * - @ref R_GPT_Close() - * - @ref R_AGT_Close() - * - * @param[in] p_ctrl Control block set in @ref timer_api_t::open call for this timer. - */ - fsp_err_t (* close)(timer_ctrl_t * const p_ctrl); -} timer_api_t; - -/** This structure encompasses everything that is needed to use an instance of this interface. */ -typedef struct st_timer_instance -{ - timer_ctrl_t * p_ctrl; ///< Pointer to the control structure for this instance - timer_cfg_t const * p_cfg; ///< Pointer to the configuration structure for this instance - timer_api_t const * p_api; ///< Pointer to the API structure for this instance -} timer_instance_t; - -/*******************************************************************************************************************//** - * @} (end defgroup TIMER_API) - **********************************************************************************************************************/ - -/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ -FSP_FOOTER - -#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_adc.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_adc.h deleted file mode 100644 index 7b56107cee..0000000000 --- a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_adc.h +++ /dev/null @@ -1,359 +0,0 @@ -/*********************************************************************************************************************** - * Copyright [2020-2021] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. - * - * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products - * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are - * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use - * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property - * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas - * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION - * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT - * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR - * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM - * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION - * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, - * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, - * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY - * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. - **********************************************************************************************************************/ - -#ifndef R_ADC_H -#define R_ADC_H - -/*********************************************************************************************************************** - * Includes - **********************************************************************************************************************/ -#include - -/* Fixed width integer support. */ -#include - -/* bool support */ -#include -#include "bsp_api.h" -#include "r_adc_cfg.h" -#include "r_adc_api.h" - -/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ -FSP_HEADER - -/*******************************************************************************************************************//** - * @addtogroup ADC - * @{ - **********************************************************************************************************************/ - -/*********************************************************************************************************************** - * Macro definitions - **********************************************************************************************************************/ - -/* Typical values that can be used to modify the sample states. - * The minimum sample state count value is either 6 or 7 depending on the clock ratios. - * It is fixed to 7 based on the fact that at the lowest ADC conversion clock supported (1 MHz) - * this extra state will lead to at worst a "1 microsecond" increase in conversion time. - * At 60 MHz the extra sample state will add 16.7 ns to the conversion time. - */ -#define ADC_SAMPLE_STATE_COUNT_MIN (7U) -#define ADC_SAMPLE_STATE_COUNT_MAX (255U) - -/* Typical values that can be used for the sample and hold counts for the channels 0-2*/ -/* Minimum sample and hold states */ -#define ADC_SAMPLE_STATE_HOLD_COUNT_MIN (4U) - -/* Default sample and hold states */ -#define ADC_SAMPLE_STATE_HOLD_COUNT_DEFAULT (24U) - -/** For ADC Scan configuration adc_channel_cfg_t::scan_mask, adc_channel_cfg_t::scan_mask_group_b, - * adc_channel_cfg_t::add_mask and adc_channel_cfg_t::sample_hold_mask. - * Use bitwise OR to combine these masks for desired channels and sensors. */ -typedef enum e_adc_mask -{ - ADC_MASK_OFF = (0U), ///< No channels selected - ADC_MASK_CHANNEL_0 = (1U << 0U), ///< Channel 0 mask - ADC_MASK_CHANNEL_1 = (1U << 1U), ///< Channel 1 mask - ADC_MASK_CHANNEL_2 = (1U << 2U), ///< Channel 2 mask - ADC_MASK_CHANNEL_3 = (1U << 3U), ///< Channel 3 mask - ADC_MASK_CHANNEL_4 = (1U << 4U), ///< Channel 4 mask - ADC_MASK_CHANNEL_5 = (1U << 5U), ///< Channel 5 mask - ADC_MASK_CHANNEL_6 = (1U << 6U), ///< Channel 6 mask - ADC_MASK_CHANNEL_7 = (1U << 7U), ///< Channel 7 mask - ADC_MASK_CHANNEL_8 = (1U << 8U), ///< Channel 8 mask - ADC_MASK_CHANNEL_9 = (1U << 9U), ///< Channel 9 mask - ADC_MASK_CHANNEL_10 = (1U << 10U), ///< Channel 10 mask - ADC_MASK_CHANNEL_11 = (1U << 11U), ///< Channel 11 mask - ADC_MASK_CHANNEL_12 = (1U << 12U), ///< Channel 12 mask - ADC_MASK_CHANNEL_13 = (1U << 13U), ///< Channel 13 mask - ADC_MASK_CHANNEL_14 = (1U << 14U), ///< Channel 14 mask - ADC_MASK_CHANNEL_15 = (1U << 15U), ///< Channel 15 mask - ADC_MASK_CHANNEL_16 = (1U << 16U), ///< Channel 16 mask - ADC_MASK_CHANNEL_17 = (1U << 17U), ///< Channel 17 mask - ADC_MASK_CHANNEL_18 = (1U << 18U), ///< Channel 18 mask - ADC_MASK_CHANNEL_19 = (1U << 19U), ///< Channel 19 mask - ADC_MASK_CHANNEL_20 = (1U << 20U), ///< Channel 20 mask - ADC_MASK_CHANNEL_21 = (1U << 21U), ///< Channel 21 mask - ADC_MASK_CHANNEL_22 = (1U << 22U), ///< Channel 22 mask - ADC_MASK_CHANNEL_23 = (1U << 23U), ///< Channel 23 mask - ADC_MASK_CHANNEL_24 = (1U << 24U), ///< Channel 24 mask - ADC_MASK_CHANNEL_25 = (1U << 25U), ///< Channel 25 mask - ADC_MASK_CHANNEL_26 = (1U << 26U), ///< Channel 26 mask - ADC_MASK_CHANNEL_27 = (1U << 27U), ///< Channel 27 mask - ADC_MASK_TEMPERATURE = (1U << 28UL), ///< Temperature sensor channel mask - ADC_MASK_VOLT = (1U << 29UL), ///< Voltage reference channel mask - ADC_MASK_SENSORS = (ADC_MASK_TEMPERATURE | ADC_MASK_VOLT), ///< All sensor channel mask -} adc_mask_t; - -/** ADC data sample addition and averaging options */ -typedef enum e_adc_add -{ - ADC_ADD_OFF = 0, ///< Addition turned off for channels/sensors - ADC_ADD_TWO = 1, ///< Add two samples - ADC_ADD_THREE = 2, ///< Add three samples - ADC_ADD_FOUR = 3, ///< Add four samples - ADC_ADD_SIXTEEN = 5, ///< Add sixteen samples - ADC_ADD_AVERAGE_TWO = 0x81, ///< Average two samples - ADC_ADD_AVERAGE_FOUR = 0x83, ///< Average four samples - ADC_ADD_AVERAGE_EIGHT = 0x84, ///< Average eight samples - ADC_ADD_AVERAGE_SIXTEEN = 0x85, ///< Add sixteen samples -} adc_add_t; - -/** ADC clear after read definitions */ -typedef enum e_adc_clear -{ - ADC_CLEAR_AFTER_READ_OFF = 0, ///< Clear after read off - ADC_CLEAR_AFTER_READ_ON = 1 ///< Clear after read on -} adc_clear_t; - -/* VREF configuration options, not all options are available on all MCUs. If the MCU does not have VREFAMPCNT or - * ADHVREFCNT. */ -typedef enum e_adc_vref_control -{ - /* Available selections on MCUs with VREFAMPCNT. - * Reference Table 32.12 "VREFADC output voltage control list" in the RA2A1 manual R01UH0888EJ0100.*/ - - ADC_VREF_CONTROL_VREFH = 0, ///< VREFAMPCNT reset value. VREFADC Output voltage is Hi-Z - ADC_VREF_CONTROL_1_5V_OUTPUT = 25, ///< BGR turn ON. VREFADC Output voltage is 1.5 V - ADC_VREF_CONTROL_2_0V_OUTPUT = 29, ///< BGR turn ON. VREFADC Output voltage is 2.0 V - ADC_VREF_CONTROL_2_5V_OUTPUT = 31, ///< BGR turn ON. VREFADC Output voltage is 2.5 V - - /* Available selections on MCUs with ADHVREFCNT. - * Reference Section 35.2.31 "A/D High-Potential/Low-Potential Reference Voltage Control Register (ADHVREFCNT)" - * in the RA4M1 manual R01UH0887EJ0100.*/ - - ADC_VREF_CONTROL_AVCC0_AVSS0 = 0x0, ///< High potential is AVCC0, low potential is AVSS0 - ADC_VREF_CONTROL_VREFH0_AVSS0 = 0x1, ///< High potential is VREFH0, low potential is AVSS0 - - /** High potential is internal reference voltage, low potential is AVSS0. When the high potential is set to the - * internal reference voltage, wait 5 us after R_ADC_Open() to start an ADC measurement. */ - ADC_VREF_CONTROL_IVREF_AVSS0 = 0x2, - ADC_VREF_CONTROL_AVCC0_VREFL0 = 0x10, ///< High potential is AVCC0, low potential is VREFL0 - ADC_VREF_CONTROL_VREFH0_VREFL0 = 0x11, ///< High potential is VREFH0, low potential is VREFL0 - - /** High potential is internal reference voltage, low potential is VREFL0. When the high potential is set to the - * internal reference voltage, wait 5 us after R_ADC_Open() to start an ADC measurement. */ - ADC_VREF_CONTROL_IVREF_VREFL0 = 0x12, -} adc_vref_control_t; - -/** ADC sample state registers */ -typedef enum e_adc_sample_state_reg -{ - ADC_SAMPLE_STATE_CHANNEL_0 = 0, ///< Sample state register channel 0 - ADC_SAMPLE_STATE_CHANNEL_1, ///< Sample state register channel 1 - ADC_SAMPLE_STATE_CHANNEL_2, ///< Sample state register channel 2 - ADC_SAMPLE_STATE_CHANNEL_3, ///< Sample state register channel 3 - ADC_SAMPLE_STATE_CHANNEL_4, ///< Sample state register channel 4 - ADC_SAMPLE_STATE_CHANNEL_5, ///< Sample state register channel 5 - ADC_SAMPLE_STATE_CHANNEL_6, ///< Sample state register channel 6 - ADC_SAMPLE_STATE_CHANNEL_7, ///< Sample state register channel 7 - ADC_SAMPLE_STATE_CHANNEL_8, ///< Sample state register channel 8 - ADC_SAMPLE_STATE_CHANNEL_9, ///< Sample state register channel 9 - ADC_SAMPLE_STATE_CHANNEL_10, ///< Sample state register channel 10 - ADC_SAMPLE_STATE_CHANNEL_11, ///< Sample state register channel 11 - ADC_SAMPLE_STATE_CHANNEL_12, ///< Sample state register channel 12 - ADC_SAMPLE_STATE_CHANNEL_13, ///< Sample state register channel 13 - ADC_SAMPLE_STATE_CHANNEL_14, ///< Sample state register channel 14 - ADC_SAMPLE_STATE_CHANNEL_15, ///< Sample state register channel 15 - ADC_SAMPLE_STATE_CHANNEL_16_TO_31 = -3, ///< Sample state register channel 16 to 31 -} adc_sample_state_reg_t; - -/** ADC comparison settings */ -typedef enum e_adc_compare_cfg -{ - ADC_COMPARE_CFG_EVENT_OUTPUT_OR = 0, - ADC_COMPARE_CFG_EVENT_OUTPUT_XOR = 1, - ADC_COMPARE_CFG_EVENT_OUTPUT_AND = 2, - ADC_COMPARE_CFG_A_ENABLE = R_ADC0_ADCMPCR_CMPAE_Msk | R_ADC0_ADCMPCR_CMPAIE_Msk, - ADC_COMPARE_CFG_B_ENABLE = R_ADC0_ADCMPCR_CMPBE_Msk | R_ADC0_ADCMPCR_CMPBIE_Msk, - ADC_COMPARE_CFG_WINDOW_ENABLE = R_ADC0_ADCMPCR_WCMPE_Msk, -} adc_compare_cfg_t; - -/** ADC Window B channel */ -typedef enum e_adc_window_b_channel -{ - ADC_WINDOW_B_CHANNEL_0 = 0, - ADC_WINDOW_B_CHANNEL_1, - ADC_WINDOW_B_CHANNEL_2, - ADC_WINDOW_B_CHANNEL_3, - ADC_WINDOW_B_CHANNEL_4, - ADC_WINDOW_B_CHANNEL_5, - ADC_WINDOW_B_CHANNEL_6, - ADC_WINDOW_B_CHANNEL_7, - ADC_WINDOW_B_CHANNEL_8, - ADC_WINDOW_B_CHANNEL_9, - ADC_WINDOW_B_CHANNEL_10, - ADC_WINDOW_B_CHANNEL_11, - ADC_WINDOW_B_CHANNEL_12, - ADC_WINDOW_B_CHANNEL_13, - ADC_WINDOW_B_CHANNEL_14, - ADC_WINDOW_B_CHANNEL_15, - ADC_WINDOW_B_CHANNEL_16, - ADC_WINDOW_B_CHANNEL_17, - ADC_WINDOW_B_CHANNEL_18, - ADC_WINDOW_B_CHANNEL_19, - ADC_WINDOW_B_CHANNEL_20, - ADC_WINDOW_B_CHANNEL_21, - ADC_WINDOW_B_CHANNEL_22, - ADC_WINDOW_B_CHANNEL_23, - ADC_WINDOW_B_CHANNEL_24, - ADC_WINDOW_B_CHANNEL_25, - ADC_WINDOW_B_CHANNEL_26, - ADC_WINDOW_B_CHANNEL_27, - ADC_WINDOW_B_CHANNEL_TEMPERATURE = 32, - ADC_WINDOW_B_CHANNEL_VOLT = 33, -} adc_window_b_channel_t; - -/** ADC Window B comparison mode */ -typedef enum e_adc_window_b_mode -{ - ADC_WINDOW_B_MODE_LESS_THAN_OR_OUTSIDE = 0, - ADC_WINDOW_B_MODE_GREATER_THAN_OR_INSIDE = R_ADC0_ADCMPBNSR_CMPLB_Msk, -} adc_window_b_mode_t; - -/** ADC action for group A interrupts group B scan. - * This enumeration is used to specify the priority between Group A and B in group mode. */ -typedef enum e_adc_group_a -{ - ADC_GROUP_A_PRIORITY_OFF = 0, ///< Group A ignored and does not interrupt ongoing group B scan - ADC_GROUP_A_GROUP_B_WAIT_FOR_TRIGGER = 1, ///< Group A interrupts Group B(single scan) which restarts at next Group B trigger - ADC_GROUP_A_GROUP_B_RESTART_SCAN = 3, ///< Group A interrupts Group B(single scan) which restarts immediately after Group A scan is complete - ADC_GROUP_A_GROUP_B_CONTINUOUS_SCAN = 0x8001, ///< Group A interrupts Group B(continuous scan) which continues scanning without a new Group B trigger -} adc_group_a_t; - -/** ADC double-trigger mode definitions */ -typedef enum e_adc_double_trigger -{ - ADC_DOUBLE_TRIGGER_DISABLED = 0, ///< Double-triggering disabled - ADC_DOUBLE_TRIGGER_ENABLED = 1, ///< Double-triggering enabled - ADC_DOUBLE_TRIGGER_ENABLED_EXTENDED = 2, ///< Double-triggering enabled on both ADC ELC events -} adc_double_trigger_t; - -/** ADC sample state configuration */ -typedef struct st_adc_sample_state -{ - adc_sample_state_reg_t reg_id; ///< Sample state register ID - uint8_t num_states; ///< Number of sampling states for conversion. Ch16-20/21 use the same value. -} adc_sample_state_t; - -/** ADC Window Compare configuration */ -typedef struct st_adc_window_cfg -{ - uint32_t compare_mask; ///< Channel mask to compare with Window A - uint32_t compare_mode_mask; ///< Per-channel condition mask for Window A - adc_compare_cfg_t compare_cfg; ///< Window Compare configuration - uint16_t compare_ref_low; ///< Window A lower reference value - uint16_t compare_ref_high; ///< Window A upper reference value - uint16_t compare_b_ref_low; ///< Window B lower reference value - uint16_t compare_b_ref_high; ///< Window A upper reference value - adc_window_b_channel_t compare_b_channel; ///< Window B channel - adc_window_b_mode_t compare_b_mode; ///< Window B condition setting -} adc_window_cfg_t; - -/** Extended configuration structure for ADC. */ -typedef struct st_adc_extended_cfg -{ - adc_add_t add_average_count; ///< Add or average samples - adc_clear_t clearing; ///< Clear after read - adc_trigger_t trigger_group_b; ///< Group B trigger source; valid only for group mode - adc_double_trigger_t double_trigger_mode; ///< Double-trigger mode setting - adc_vref_control_t adc_vref_control; ///< VREFADC output voltage control - uint8_t enable_adbuf; ///< Enable ADC Ring Buffer, Valid only to use along with DMAC transfer - IRQn_Type window_a_irq; ///< IRQ number for Window Compare A interrupts - IRQn_Type window_b_irq; ///< IRQ number for Window Compare B interrupts - uint8_t window_a_ipl; ///< Priority for Window Compare A interrupts - uint8_t window_b_ipl; ///< Priority for Window Compare B interrupts -} adc_extended_cfg_t; - -/** ADC channel(s) configuration */ -typedef struct st_adc_channel_cfg -{ - uint32_t scan_mask; ///< Channels/bits: bit 0 is ch0; bit 15 is ch15. - uint32_t scan_mask_group_b; ///< Valid for group modes. - uint32_t add_mask; ///< Valid if add enabled in Open(). - adc_window_cfg_t * p_window_cfg; ///< Pointer to Window Compare configuration - adc_group_a_t priority_group_a; ///< Valid for group modes. - uint8_t sample_hold_mask; ///< Channels/bits 0-2. - uint8_t sample_hold_states; ///< Number of states to be used for sample and hold. Affects channels 0-2. -} adc_channel_cfg_t; - -/* Sample and hold Channel mask. Sample and hold is only available for channel 0,1,2*/ -#define ADC_SAMPLE_HOLD_CHANNELS (0x07U) - -/*********************************************************************************************************************** - * Typedef definitions - **********************************************************************************************************************/ - -/** ADC instance control block. DO NOT INITIALIZE. Initialized in @ref adc_api_t::open(). */ -typedef struct -{ - R_ADC0_Type * p_reg; // Base register for this unit - adc_cfg_t const * p_cfg; - uint32_t opened; // Boolean to verify that the Unit has been initialized - uint32_t initialized; // Initialized status of ADC - uint32_t scan_mask; // Scan mask used for Normal scan - uint16_t scan_start_adcsr; - - void (* p_callback)(adc_callback_args_t *); // Pointer to callback that is called when an adc_event_t occurs. - adc_callback_args_t * p_callback_memory; // Pointer to non-secure memory that can be used to pass arguments to a callback in non-secure memory. - - /* Pointer to context to be passed into callback function */ - void const * p_context; -} adc_instance_ctrl_t; - -/********************************************************************************************************************** - * Exported global variables - **********************************************************************************************************************/ - -/** @cond INC_HEADER_DEFS_SEC */ -/** Interface Structure for user access */ -extern const adc_api_t g_adc_on_adc; - -/** @endcond */ - -/*********************************************************************************************************************** - * Public APIs - **********************************************************************************************************************/ -fsp_err_t R_ADC_Open(adc_ctrl_t * p_ctrl, adc_cfg_t const * const p_cfg); -fsp_err_t R_ADC_ScanCfg(adc_ctrl_t * p_ctrl, void const * const p_channel_cfg); -fsp_err_t R_ADC_InfoGet(adc_ctrl_t * p_ctrl, adc_info_t * p_adc_info); -fsp_err_t R_ADC_ScanStart(adc_ctrl_t * p_ctrl); -fsp_err_t R_ADC_ScanGroupStart(adc_ctrl_t * p_ctrl, adc_group_mask_t group_id); -fsp_err_t R_ADC_ScanStop(adc_ctrl_t * p_ctrl); -fsp_err_t R_ADC_StatusGet(adc_ctrl_t * p_ctrl, adc_status_t * p_status); -fsp_err_t R_ADC_Read(adc_ctrl_t * p_ctrl, adc_channel_t const reg_id, uint16_t * const p_data); -fsp_err_t R_ADC_Read32(adc_ctrl_t * p_ctrl, adc_channel_t const reg_id, uint32_t * const p_data); -fsp_err_t R_ADC_SampleStateCountSet(adc_ctrl_t * p_ctrl, adc_sample_state_t * p_sample); -fsp_err_t R_ADC_Close(adc_ctrl_t * p_ctrl); -fsp_err_t R_ADC_OffsetSet(adc_ctrl_t * const p_ctrl, adc_channel_t const reg_id, int32_t offset); -fsp_err_t R_ADC_Calibrate(adc_ctrl_t * const p_ctrl, void const * p_extend); -fsp_err_t R_ADC_CallbackSet(adc_ctrl_t * const p_api_ctrl, - void ( * p_callback)(adc_callback_args_t *), - void const * const p_context, - adc_callback_args_t * const p_callback_memory); - -/*******************************************************************************************************************//** - * @} (end defgroup ADC) - **********************************************************************************************************************/ - -/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ -FSP_FOOTER - -#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_glcdc.h b/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_glcdc.h deleted file mode 100644 index eb58dd547a..0000000000 --- a/bsp/renesas/ra6m3-hmi-board/ra/fsp/inc/instances/r_glcdc.h +++ /dev/null @@ -1,244 +0,0 @@ -/*********************************************************************************************************************** - * Copyright [2020-2021] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. - * - * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products - * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are - * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use - * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property - * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas - * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION - * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT - * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR - * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM - * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION - * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, - * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, - * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY - * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. - **********************************************************************************************************************/ - -/*******************************************************************************************************************//** - * @addtogroup GLCDC - * @{ - **********************************************************************************************************************/ - -#ifndef R_GLCDC_H -#define R_GLCDC_H - -/*********************************************************************************************************************** - * Includes - **********************************************************************************************************************/ -#include "bsp_api.h" -#include "r_display_api.h" - -/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ -FSP_HEADER - -/*********************************************************************************************************************** - * Macro definitions - **********************************************************************************************************************/ - -/*********************************************************************************************************************** - * Typedef definitions - **********************************************************************************************************************/ - -/** Display control block. DO NOT INITIALIZE. */ -typedef struct st_glcdc_instance_ctrl -{ - display_state_t state; // Status of GLCDC module - - /* Parameters to Event processing for display devices */ - void (* p_callback)(display_callback_args_t * p_args); // Pointer to callback function - void const * p_context; // Pointer to the higher level device context - const display_cfg_t * p_cfg; // Pointer to initial configurations -} glcdc_instance_ctrl_t; - -/** Clock source select */ -typedef enum e_glcdc_clk_src -{ - GLCDC_CLK_SRC_INTERNAL, ///< Internal - GLCDC_CLK_SRC_EXTERNAL, ///< External -} glcdc_clk_src_t; - -/** Clock frequency division ratio */ -typedef enum e_glcdc_panel_clk_div -{ - GLCDC_PANEL_CLK_DIVISOR_1 = 1, ///< Division Ratio 1/1 - GLCDC_PANEL_CLK_DIVISOR_2 = 2, ///< Division Ratio 1/2 - GLCDC_PANEL_CLK_DIVISOR_3 = 3, ///< Division Ratio 1/3 - GLCDC_PANEL_CLK_DIVISOR_4 = 4, ///< Division Ratio 1/4 - GLCDC_PANEL_CLK_DIVISOR_5 = 5, ///< Division Ratio 1/5 - GLCDC_PANEL_CLK_DIVISOR_6 = 6, ///< Division Ratio 1/6 - GLCDC_PANEL_CLK_DIVISOR_7 = 7, ///< Division Ratio 1/7 - GLCDC_PANEL_CLK_DIVISOR_8 = 8, ///< Division Ratio 1/8 - GLCDC_PANEL_CLK_DIVISOR_9 = 9, ///< Division Ratio 1/9 - GLCDC_PANEL_CLK_DIVISOR_12 = 12, ///< Division Ratio 1/12 - GLCDC_PANEL_CLK_DIVISOR_16 = 16, ///< Division Ratio 1/16 - GLCDC_PANEL_CLK_DIVISOR_24 = 24, ///< Division Ratio 1/24 - GLCDC_PANEL_CLK_DIVISOR_32 = 32, ///< Division Ratio 1/32 -} glcdc_panel_clk_div_t; - -/** LCD TCON output pin select */ -typedef enum e_glcdc_tcon_pin -{ - GLCDC_TCON_PIN_NONE = -1, ///< No output - GLCDC_TCON_PIN_0, ///< LCD_TCON0 - GLCDC_TCON_PIN_1, ///< LCD_TCON1 - GLCDC_TCON_PIN_2, ///< LCD_TCON2 - GLCDC_TCON_PIN_3, ///< LCD_TCON3 -} glcdc_tcon_pin_t; - -/** Bus Arbitration setting */ -typedef enum e_glcdc_bus_arbitraion -{ - GLCDC_BUS_ARBITRATION_ROUNDROBIN, ///< Round robin - GLCDC_BUS_ARBITRATION_FIX_PRIORITY ///< Fixed -} glcdc_bus_arbitration_t; - -/** Correction circuit sequence control */ -typedef enum e_glcdc_correction_proc_order -{ - GLCDC_CORRECTION_PROC_ORDER_BRIGHTNESS_CONTRAST2GAMMA, ///< Brightness -> contrast -> gamma correction - GLCDC_CORRECTION_PROC_ORDER_GAMMA2BRIGHTNESS_CONTRAST ///< Gamma correction -> brightness -> contrast -} glcdc_correction_proc_order_t; - -/** Timing signals for driving the LCD panel */ -typedef enum e_glcdc_tcon_signal_select -{ - GLCDC_TCON_SIGNAL_SELECT_STVA_VS = 0, ///< STVA/VS - GLCDC_TCON_SIGNAL_SELECT_STVB_VE = 1, ///< STVB/VE - GLCDC_TCON_SIGNAL_SELECT_STHA_HS = 2, ///< STH/SP/HS - GLCDC_TCON_SIGNAL_SELECT_STHB_HE = 3, ///< STB/LP/HE - GLCDC_TCON_SIGNAL_SELECT_DE = 7 ///< DE -} glcdc_tcon_signal_select_t; - -/** Clock phase adjustment for serial RGB output */ -typedef enum e_glcdc_clut_plane -{ - GLCDC_CLUT_PLANE_0 = 0, ///< GLCDC CLUT plane 0 - GLCDC_CLUT_PLANE_1 = 1, ///< GLCDC CLUT plane 1 -} glcdc_clut_plane_t; - -/** Dithering mode */ -typedef enum e_glcdc_dithering_mode -{ - GLCDC_DITHERING_MODE_TRUNCATE = 0, ///< No dithering (truncate) - GLCDC_DITHERING_MODE_ROUND_OFF = 1, ///< Dithering with round off - GLCDC_DITHERING_MODE_2X2PATTERN = 2, ///< Dithering with 2x2 pattern - GLCDC_DITHERING_MODE_SETTING_MAX -} glcdc_dithering_mode_t; - -/** Dithering mode */ -typedef enum e_glcdc_dithering_pattern -{ - GLCDC_DITHERING_PATTERN_00 = 0, ///< 2x2 pattern '00' - GLCDC_DITHERING_PATTERN_01 = 1, ///< 2x2 pattern '01' - GLCDC_DITHERING_PATTERN_10 = 2, ///< 2x2 pattern '10' - GLCDC_DITHERING_PATTERN_11 = 3, ///< 2x2 pattern '11' -} glcdc_dithering_pattern_t; - -/** Output interface format */ -typedef enum e_glcdc_input_interface_format -{ - GLCDC_INPUT_INTERFACE_FORMAT_RGB565 = 0, ///< Input interface format RGB565 - GLCDC_INPUT_INTERFACE_FORMAT_RGB888 = 1, ///< Input interface format RGB888 - GLCDC_INPUT_INTERFACE_FORMAT_ARGB1555 = 2, ///< Input interface format ARGB1555 - GLCDC_INPUT_INTERFACE_FORMAT_ARGB4444 = 3, ///< Input interface format ARGB4444 - GLCDC_INPUT_INTERFACE_FORMAT_ARGB8888 = 4, ///< Input interface format ARGB8888 - GLCDC_INPUT_INTERFACE_FORMAT_CLUT8 = 5, ///< Input interface format CLUT8 - GLCDC_INPUT_INTERFACE_FORMAT_CLUT4 = 6, ///< Input interface format CLUT4 - GLCDC_INPUT_INTERFACE_FORMAT_CLUT1 = 7, ///< Input interface format CLUT1 -} glcdc_input_interface_format_t; - -/** Output interface format */ -typedef enum e_glcdc_output_interface_format -{ - GLCDC_OUTPUT_INTERFACE_FORMAT_RGB888 = 0, ///< Output interface format RGB888 - GLCDC_OUTPUT_INTERFACE_FORMAT_RGB666 = 1, ///< Output interface format RGB666 - GLCDC_OUTPUT_INTERFACE_FORMAT_RGB565 = 2, ///< Output interface format RGB565 - GLCDC_OUTPUT_INTERFACE_FORMAT_SERIAL_RGB = 3, ///< Output interface format Serial RGB -} glcdc_output_interface_format_t; - -/** Dithering output format */ -typedef enum e_glcdc_dithering_output_format -{ - GLCDC_DITHERING_OUTPUT_FORMAT_RGB888 = 0, ///< Dithering output format RGB888 - GLCDC_DITHERING_OUTPUT_FORMAT_RGB666 = 1, ///< Dithering output format RGB666 - GLCDC_DITHERING_OUTPUT_FORMAT_RGB565 = 2, ///< Dithering output format RGB565 -} glcdc_dithering_output_format_t; - -/** GLCDC hardware specific configuration */ -typedef struct st_glcdc_extended_cfg -{ - glcdc_tcon_pin_t tcon_hsync; ///< GLCDC TCON output pin select - glcdc_tcon_pin_t tcon_vsync; ///< GLCDC TCON output pin select - glcdc_tcon_pin_t tcon_de; ///< GLCDC TCON output pin select - glcdc_correction_proc_order_t correction_proc_order; ///< Correction control route select - glcdc_clk_src_t clksrc; ///< Clock Source selection - glcdc_panel_clk_div_t clock_div_ratio; ///< Clock divide ratio for dot clock - glcdc_dithering_mode_t dithering_mode; ///< Dithering mode - glcdc_dithering_pattern_t dithering_pattern_A; ///< Dithering pattern A - glcdc_dithering_pattern_t dithering_pattern_B; ///< Dithering pattern B - glcdc_dithering_pattern_t dithering_pattern_C; ///< Dithering pattern C - glcdc_dithering_pattern_t dithering_pattern_D; ///< Dithering pattern D -} glcdc_extended_cfg_t; - -/* GLCDC hardware specific control block */ -typedef struct st_glcdc_ctrl -{ - display_coordinate_t back_porch; ///< Zero coordinate for graphics plane(Back porch end) - uint16_t hsize; ///< Horizontal pixel size in a line - uint16_t vsize; ///< Vertical pixel size in a frame - void * p_context; ///< Pointer to the function level device context - // (e.g. display_ctrl_t type data) -} glcdc_ctrl_t; - -/********************************************************************************************************************** - * Exported global variables - **********************************************************************************************************************/ - -/* @cond INC_HEADER_DEFS_SEC */ -/* Filled in Interface API structure for this Instance. */ -extern const display_api_t g_display_on_glcdc; - -/* @endcond */ - -/********************************************************************************************************************** - * Public APIs - **********************************************************************************************************************/ - -fsp_err_t R_GLCDC_Open(display_ctrl_t * const p_api_ctrl, display_cfg_t const * const p_cfg); -fsp_err_t R_GLCDC_Close(display_ctrl_t * const p_api_ctrl); -fsp_err_t R_GLCDC_Start(display_ctrl_t * const p_api_ctrl); -fsp_err_t R_GLCDC_Stop(display_ctrl_t * const p_api_ctrl); -fsp_err_t R_GLCDC_LayerChange(display_ctrl_t const * const p_api_ctrl, - display_runtime_cfg_t const * const p_cfg, - display_frame_layer_t layer); -fsp_err_t R_GLCDC_BufferChange(display_ctrl_t const * const p_api_ctrl, - uint8_t * const framebuffer, - display_frame_layer_t layer); - -#if GLCDC_CFG_COLOR_CORRECTION_ENABLE -fsp_err_t R_GLCDC_ColorCorrection(display_ctrl_t const * const p_api_ctrl, - display_correction_t const * const p_correction); - -#endif - -fsp_err_t R_GLCDC_ClutUpdate(display_ctrl_t const * const p_api_ctrl, - display_clut_cfg_t const * const p_clut_cfg, - display_frame_layer_t layer); -fsp_err_t R_GLCDC_ClutEdit(display_ctrl_t const * const p_api_ctrl, - display_frame_layer_t layer, - uint8_t index, - uint32_t color); -fsp_err_t R_GLCDC_StatusGet(display_ctrl_t const * const p_api_ctrl, display_status_t * const status); - -/*******************************************************************************************************************//** - * @} (end defgroup GLCDC) - **********************************************************************************************************************/ - -/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ -FSP_FOOTER - -#endif diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_adc/r_adc.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_adc/r_adc.c deleted file mode 100644 index f4ad098fc8..0000000000 --- a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_adc/r_adc.c +++ /dev/null @@ -1,1802 +0,0 @@ -/*********************************************************************************************************************** - * Copyright [2020-2021] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. - * - * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products - * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are - * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use - * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property - * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas - * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION - * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT - * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR - * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM - * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION - * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, - * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, - * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY - * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. - **********************************************************************************************************************/ - -/*********************************************************************************************************************** - * Includes , "Project Includes" - **********************************************************************************************************************/ - -#include "bsp_api.h" - -/* Configuration for this package. */ -#include "r_adc_cfg.h" - -/* Private header file for this package. */ -#include "r_adc.h" - -/********************************************************************************************************************** - * Macro definitions - **********************************************************************************************************************/ - -#define ADC_PRV_USEC_PER_SEC (1000000U) -#define ADC_PRV_MIN_ADCLK_HZ (1000000U) -#define ADC_MAX_CALIBRATION_CLOCKS_MILLISECS (780U) - -#define ADC_PRV_HZ_PER_KHZ (1000U) - -#define ADC_SHIFT_LEFT_ALIGNED_32_BIT (16U) - -#define ADC_OPEN (0x52414443U) - -#define ADC_ADADC_AVEE_BIT (0x80U) - -/* Sample and hold bypass applies to these channels. */ -#define ADC_MASK_SAMPLE_HOLD_BYPASS_CHANNELS (0x7U) - -/* Sample and hold bypass starts at bit 8. */ -#define ADC_MASK_SAMPLE_HOLD_BYPASS_SHIFT (8U) - -/* Value for ADPGADCR0 to disable PGA */ -#define ADC_ADPGADCR0_DISABLE_PGA (0x0000) - -/* Value for ADPGACR to disable PGA */ -#define ADC_ADPGACR_DISABLE_PGA (0x9999) - -/* Position of ADCALEXE to start calibration-CALEXE bit */ -#define ADC_ADCALEXE_SET_CALEXE (0x80U) - -/* Position of ADCALEXE calibration-CALMON bit */ -#define ADC_ADCALEXE_CALIBRATION_STATUS (0x40U) - -/* Value of ADICR with interrupt at end of calibration */ -#define ADC_ADICR_CALIBRATION_INTERRUPT_ENABLED (0x03U) - -/* Value of ADICR with no interrupt at end of calibration */ -#define ADC_ADICR_CALIBRATION_INTERRUPT_DISABLED (0x00U) - -/* Stabilization time when BGR is enabled */ -#define ADC_BGR_STABILIZATION_DELAY_US (150U) - -/* Bit set in adc_vref_control if the internal voltage reference is used for VREFH. */ -#define ADC_PRV_ADHVREFCNT_VREF_INTERNAL_BIT_1 (1U << 1) - -#define ADC_PRV_ADCSR_ADST_TRGE_MASK (R_ADC0_ADCSR_ADST_Msk | R_ADC0_ADCSR_TRGE_Msk) -#define ADC_PRV_ADCSR_CLEAR_ADST_TRGE (~ADC_PRV_ADCSR_ADST_TRGE_MASK) - -#define ADC_PRV_TSCR_TSN_ENABLE (R_TSN_CTRL_TSCR_TSEN_Msk | R_TSN_CTRL_TSCR_TSOE_Msk) - -#define ADC_PRV_ADBUF_ENABLED (1U) - -/*********************************************************************************************************************** - * Typedef definitions - **********************************************************************************************************************/ - -/** Defines the registers settings for the ADC synchronous ELC trigger. */ -typedef enum e_adc_elc_trigger -{ - ADC_ELC_TRIGGER_EXTERNAL = (0x00U), - ADC_ELC_TRIGGER = (0x09U), - ADC_ELC_TRIGGER_GROUP_B = (0x0AU), - ADC_ELC_TRIGGER_BOTH = (0x0BU), - ADC_ELC_TRIGGER_DISABLED = (0x3FU) -} adc_elc_trigger_t; - -#if defined(__ARMCC_VERSION) || defined(__ICCARM__) -typedef void (BSP_CMSE_NONSECURE_CALL * adc_prv_ns_callback)(adc_callback_args_t * p_args); -#elif defined(__GNUC__) -typedef BSP_CMSE_NONSECURE_CALL void (*volatile adc_prv_ns_callback)(adc_callback_args_t * p_args); -#endif - -/*********************************************************************************************************************** - * Private global variables and functions - **********************************************************************************************************************/ -#if ADC_CFG_PARAM_CHECKING_ENABLE -static fsp_err_t r_adc_open_cfg_check(adc_cfg_t const * const p_cfg); -static fsp_err_t r_adc_open_cfg_resolution_check(adc_cfg_t const * const p_cfg); -static fsp_err_t r_adc_sample_state_cfg_check(adc_instance_ctrl_t * p_instance_ctrl, adc_sample_state_t * p_sample); - -static fsp_err_t r_adc_scan_cfg_check_sample_hold(adc_instance_ctrl_t * const p_instance_ctrl, - adc_channel_cfg_t const * const p_channel_cfg); - -static fsp_err_t r_adc_scan_cfg_check_sensors(adc_instance_ctrl_t * const p_instance_ctrl, - adc_channel_cfg_t const * const p_channel_cfg); - -#endif - -static void r_adc_open_sub(adc_instance_ctrl_t * const p_instance_ctrl, adc_cfg_t const * const p_cfg); - -static void r_adc_sensor_cfg(adc_instance_ctrl_t * const p_instance_ctrl, - adc_channel_cfg_t const * const p_channel_cfg); - -#if ADC_CFG_PARAM_CHECKING_ENABLE - -static fsp_err_t r_adc_scan_cfg_check(adc_instance_ctrl_t * const p_instance_ctrl, - adc_channel_cfg_t const * const p_channel_cfg); - -#endif - -static void r_adc_scan_cfg(adc_instance_ctrl_t * const p_instance_ctrl, - adc_channel_cfg_t const * const p_channel_cfg); -static void r_adc_sensor_sample_state_calculation(uint32_t * const p_sample_states); -void adc_scan_end_b_isr(void); -void adc_scan_end_isr(void); -void adc_window_compare_isr(void); -static void r_adc_irq_enable(IRQn_Type irq, uint8_t ipl, void * p_context); -static void r_adc_irq_disable(IRQn_Type irq); -static int32_t r_adc_lowest_channel_get(uint32_t adc_mask); -static void r_adc_scan_end_common_isr(adc_event_t event); - -/** Look-up table for ADSTRGR values */ -static const uint32_t adc_elc_trigger_lut[] = -{ - [ADC_DOUBLE_TRIGGER_DISABLED] = (ADC_ELC_TRIGGER << R_ADC0_ADSTRGR_TRSA_Pos) + ADC_ELC_TRIGGER_GROUP_B, - [ADC_DOUBLE_TRIGGER_ENABLED] = (ADC_ELC_TRIGGER << R_ADC0_ADSTRGR_TRSA_Pos) + ADC_ELC_TRIGGER_GROUP_B, - [ADC_DOUBLE_TRIGGER_ENABLED_EXTENDED] = (ADC_ELC_TRIGGER_BOTH << R_ADC0_ADSTRGR_TRSA_Pos) + - ADC_ELC_TRIGGER_DISABLED, -}; - -#if ADC_CFG_PARAM_CHECKING_ENABLE - -/** Mask of valid channels on this MCU. */ -static const uint32_t g_adc_valid_channels[] = -{ - BSP_FEATURE_ADC_UNIT_0_CHANNELS, - #if BSP_FEATURE_ADC_UNIT_1_CHANNELS - BSP_FEATURE_ADC_UNIT_1_CHANNELS - #endif -}; -#endif - -/*********************************************************************************************************************** - * Global Variables - **********************************************************************************************************************/ - -/** ADC Implementation of ADC. */ -const adc_api_t g_adc_on_adc = -{ - .open = R_ADC_Open, - .scanCfg = R_ADC_ScanCfg, - .infoGet = R_ADC_InfoGet, - .scanStart = R_ADC_ScanStart, - .scanGroupStart = R_ADC_ScanGroupStart, - .scanStop = R_ADC_ScanStop, - .scanStatusGet = R_ADC_StatusGet, - .read = R_ADC_Read, - .read32 = R_ADC_Read32, - .close = R_ADC_Close, - .calibrate = R_ADC_Calibrate, - .offsetSet = R_ADC_OffsetSet, - .callbackSet = R_ADC_CallbackSet, -}; - -/*******************************************************************************************************************//** - * @addtogroup ADC - * @{ - **********************************************************************************************************************/ - -/*********************************************************************************************************************** - * Functions - **********************************************************************************************************************/ - -/*******************************************************************************************************************//** - * Sets the operational mode, trigger sources, interrupt priority, and configurations for the peripheral as a whole. - * If interrupt is enabled, the function registers a callback function pointer for notifying the user whenever a scan - * has completed. - * - * @retval FSP_SUCCESS Module is ready for use. - * @retval FSP_ERR_ASSERTION An input argument is invalid. - * @retval FSP_ERR_ALREADY_OPEN The instance control structure has already been opened. - * @retval FSP_ERR_IRQ_BSP_DISABLED A callback is provided, but the interrupt is not enabled. - * @retval FSP_ERR_IP_CHANNEL_NOT_PRESENT The requested unit does not exist on this MCU. - * @retval FSP_ERR_INVALID_HW_CONDITION The ADC clock must be at least 1 MHz - **********************************************************************************************************************/ -fsp_err_t R_ADC_Open (adc_ctrl_t * p_ctrl, adc_cfg_t const * const p_cfg) -{ - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) p_ctrl; - - /* Perform parameter checking */ -#if ADC_CFG_PARAM_CHECKING_ENABLE - - /* Verify the pointers are valid */ - FSP_ASSERT(NULL != p_instance_ctrl); - - /* Verify the configuration parameters are valid */ - fsp_err_t err = r_adc_open_cfg_check(p_cfg); - FSP_ERROR_RETURN(FSP_SUCCESS == err, err); - - /* Check for valid argument values for options that are unique to the IP */ - err = r_adc_open_cfg_resolution_check(p_cfg); - FSP_ERROR_RETURN(FSP_SUCCESS == err, err); - - /* Verify this unit has not already been initialized */ - FSP_ERROR_RETURN(ADC_OPEN != p_instance_ctrl->opened, FSP_ERR_ALREADY_OPEN); - - /* If a callback is used, then make sure an interrupt is enabled */ - adc_extended_cfg_t const * p_extend = (adc_extended_cfg_t const *) p_cfg->p_extend; - if (NULL != p_cfg->p_callback) - { - FSP_ERROR_RETURN((p_cfg->scan_end_irq >= 0) || (p_extend->window_a_irq >= 0) || (p_extend->window_b_irq >= 0), - FSP_ERR_IRQ_BSP_DISABLED); - - /* Group B interrupts are never required since group B can be configured in continuous scan mode when group A - * has priority over group B. */ - } - -#else - adc_extended_cfg_t const * p_extend = (adc_extended_cfg_t const *) p_cfg->p_extend; -#endif - - /* Save configurations. */ - p_instance_ctrl->p_cfg = p_cfg; - p_instance_ctrl->p_callback = p_cfg->p_callback; - p_instance_ctrl->p_context = p_cfg->p_context; - p_instance_ctrl->p_callback_memory = NULL; - - /* Calculate the register base address. */ - uint32_t address_gap = (uint32_t) R_ADC1 - (uint32_t) R_ADC0; - p_instance_ctrl->p_reg = (R_ADC0_Type *) ((uint32_t) R_ADC0 + (address_gap * p_cfg->unit)); - - /* Initialize the hardware based on the configuration. */ - r_adc_open_sub(p_instance_ctrl, p_cfg); - - /* Enable interrupts */ - r_adc_irq_enable(p_cfg->scan_end_irq, p_cfg->scan_end_ipl, p_instance_ctrl); - r_adc_irq_enable(p_cfg->scan_end_b_irq, p_cfg->scan_end_b_ipl, p_instance_ctrl); - r_adc_irq_enable(p_extend->window_a_irq, p_extend->window_a_ipl, p_instance_ctrl); - r_adc_irq_enable(p_extend->window_b_irq, p_extend->window_b_ipl, p_instance_ctrl); - - /* Invalid scan mask (initialized for later). */ - p_instance_ctrl->scan_mask = 0U; - - /* Mark driver as opened by initializing it to "RADC" in its ASCII equivalent for this unit. */ - p_instance_ctrl->opened = ADC_OPEN; - - /* Return the error code */ - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Configures the ADC scan parameters. Channel specific settings are set in this function. Pass a pointer to - * @ref adc_channel_cfg_t to p_channel_cfg. - * - * @note This starts group B scans if adc_channel_cfg_t::priority_group_a is set to ADC_GROUP_A_GROUP_B_CONTINUOUS_SCAN. - * - * @retval FSP_SUCCESS Channel specific settings applied. - * @retval FSP_ERR_ASSERTION An input argument is invalid. - * @retval FSP_ERR_NOT_OPEN Unit is not open. - **********************************************************************************************************************/ -fsp_err_t R_ADC_ScanCfg (adc_ctrl_t * p_ctrl, void const * const p_channel_cfg) -{ - adc_channel_cfg_t const * p_adc_channel_cfg = (adc_channel_cfg_t const *) p_channel_cfg; - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) p_ctrl; - fsp_err_t err = FSP_SUCCESS; - -#if ADC_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ASSERT(NULL != p_adc_channel_cfg); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->opened, FSP_ERR_NOT_OPEN); - - err = r_adc_scan_cfg_check(p_instance_ctrl, p_adc_channel_cfg); - FSP_ERROR_RETURN(FSP_SUCCESS == err, err); -#endif - - /* Configure the hardware based on the configuration */ - r_adc_scan_cfg(p_instance_ctrl, p_adc_channel_cfg); - - /* Save the scan mask locally; this is required for the infoGet function. */ - p_instance_ctrl->scan_mask = p_adc_channel_cfg->scan_mask; - - /* Return the error code */ - return err; -} - -/*******************************************************************************************************************//** - * Updates the user callback and has option of providing memory for callback structure. - * Implements adc_api_t::callbackSet - * - * @retval FSP_SUCCESS Callback updated successfully. - * @retval FSP_ERR_ASSERTION A required pointer is NULL. - * @retval FSP_ERR_NOT_OPEN The control block has not been opened. - * @retval FSP_ERR_NO_CALLBACK_MEMORY p_callback is non-secure and p_callback_memory is either secure or NULL. - **********************************************************************************************************************/ -fsp_err_t R_ADC_CallbackSet (adc_ctrl_t * const p_api_ctrl, - void ( * p_callback)(adc_callback_args_t *), - void const * const p_context, - adc_callback_args_t * const p_callback_memory) -{ - adc_instance_ctrl_t * p_ctrl = (adc_instance_ctrl_t *) p_api_ctrl; - -#if (ADC_CFG_PARAM_CHECKING_ENABLE) - FSP_ASSERT(p_ctrl); - FSP_ASSERT(p_callback); - FSP_ERROR_RETURN(ADC_OPEN == p_ctrl->opened, FSP_ERR_NOT_OPEN); -#endif - - /* Store callback and context */ - -#if BSP_TZ_SECURE_BUILD - - /* Get security state of p_callback */ - bool callback_is_secure = - (NULL == cmse_check_address_range((void *) p_callback, sizeof(void *), CMSE_AU_NONSECURE)); - - #if ADC_CFG_PARAM_CHECKING_ENABLE - - /* In secure projects, p_callback_memory must be provided in non-secure space if p_callback is non-secure */ - adc_callback_args_t * const p_callback_memory_checked = cmse_check_pointed_object(p_callback_memory, - CMSE_AU_NONSECURE); - FSP_ERROR_RETURN(callback_is_secure || (NULL != p_callback_memory_checked), FSP_ERR_NO_CALLBACK_MEMORY); - #endif - - p_ctrl->p_callback = callback_is_secure ? p_callback : - (void (*)(adc_callback_args_t *))cmse_nsfptr_create(p_callback); -#else - p_ctrl->p_callback = p_callback; -#endif - - p_ctrl->p_context = p_context; - p_ctrl->p_callback_memory = p_callback_memory; - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Starts a software scan or enables the hardware trigger for a scan depending on how the triggers were configured in - * the R_ADC_Open call. If the unit was configured for ELC or external hardware triggering, then this function allows - * the trigger signal to get to the ADC unit. The function is not able to control the generation of the trigger itself. - * If the unit was configured for software triggering, then this function starts the software triggered scan. - * - * @pre Call R_ADC_ScanCfg after R_ADC_Open before starting a scan. - * - * @pre On MCUs that support calibration, call R_ADC_Calibrate and wait for calibration to complete before starting - * a scan. - * - * @retval FSP_SUCCESS Scan started (software trigger) or hardware triggers enabled. - * @retval FSP_ERR_ASSERTION An input argument is invalid. - * @retval FSP_ERR_NOT_OPEN Unit is not open. - * @retval FSP_ERR_NOT_INITIALIZED Unit is not initialized. - * @retval FSP_ERR_IN_USE Another scan is still in progress (software trigger). - **********************************************************************************************************************/ -fsp_err_t R_ADC_ScanStart (adc_ctrl_t * p_ctrl) -{ - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) p_ctrl; - - /* Perform parameter checking */ -#if ADC_CFG_PARAM_CHECKING_ENABLE - - /* Verify the pointers are valid */ - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->opened, FSP_ERR_NOT_OPEN); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->initialized, FSP_ERR_NOT_INITIALIZED); - if (ADC_GROUP_A_GROUP_B_CONTINUOUS_SCAN != p_instance_ctrl->p_reg->ADGSPCR) - { - FSP_ERROR_RETURN(0U == p_instance_ctrl->p_reg->ADCSR_b.ADST, FSP_ERR_IN_USE); - } -#endif - - /* Enable hardware trigger or start software scan depending on mode. */ - p_instance_ctrl->p_reg->ADCSR = p_instance_ctrl->scan_start_adcsr; - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * @ref adc_api_t::scanStart is not supported on the ADCH. Use scanStart instead. - * - * @retval FSP_ERR_UNSUPPORTED Function not supported in this implementation. - **********************************************************************************************************************/ -fsp_err_t R_ADC_ScanGroupStart (adc_ctrl_t * p_ctrl, adc_group_mask_t group_id) -{ - FSP_PARAMETER_NOT_USED(p_ctrl); - FSP_PARAMETER_NOT_USED(group_id); - - /* Return the unsupported error. */ - return FSP_ERR_UNSUPPORTED; -} - -/*******************************************************************************************************************//** - * Stops the software scan or disables the unit from being triggered by the hardware trigger (ELC or external) based on - * what type of trigger the unit was configured for in the R_ADC_Open function. Stopping a hardware triggered scan via - * this function does not abort an ongoing scan, but prevents the next scan from occurring. Stopping a software - * triggered scan aborts an ongoing scan. - * - * @retval FSP_SUCCESS Scan stopped (software trigger) or hardware triggers disabled. - * @retval FSP_ERR_ASSERTION An input argument is invalid. - * @retval FSP_ERR_NOT_OPEN Unit is not open. - * @retval FSP_ERR_NOT_INITIALIZED Unit is not initialized. - **********************************************************************************************************************/ -fsp_err_t R_ADC_ScanStop (adc_ctrl_t * p_ctrl) -{ - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) p_ctrl; - - /* Perform parameter checking */ -#if ADC_CFG_PARAM_CHECKING_ENABLE - - /* Verify the pointers are valid */ - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->opened, FSP_ERR_NOT_OPEN); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->initialized, FSP_ERR_NOT_INITIALIZED); -#endif - - /* Disable hardware trigger or stop software scan depending on mode. */ - p_instance_ctrl->p_reg->ADCSR = 0U; - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Provides the status of any scan process that was started, including scans started by ELC or external triggers and - * calibration scans on MCUs that support calibration. - * - * @retval FSP_SUCCESS Module status stored in the provided pointer p_status - * @retval FSP_ERR_ASSERTION An input argument is invalid. - * @retval FSP_ERR_NOT_OPEN Unit is not open. - **********************************************************************************************************************/ -fsp_err_t R_ADC_StatusGet (adc_ctrl_t * p_ctrl, adc_status_t * p_status) -{ - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) p_ctrl; - -#if ADC_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ASSERT(NULL != p_status); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->opened, FSP_ERR_NOT_OPEN); -#endif - - /* Read the status of the ADST bit. ADST is set when a scan is in progress, including calibration scans. */ - p_status->state = (adc_state_t) p_instance_ctrl->p_reg->ADCSR_b.ADST; - - /* Return the error code */ - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Reads conversion results from a single channel or sensor. - * - * @retval FSP_SUCCESS Data read into provided p_data. - * @retval FSP_ERR_ASSERTION An input argument is invalid. - * @retval FSP_ERR_NOT_OPEN Unit is not open. - * @retval FSP_ERR_NOT_INITIALIZED Unit is not initialized. - **********************************************************************************************************************/ -fsp_err_t R_ADC_Read (adc_ctrl_t * p_ctrl, adc_channel_t const reg_id, uint16_t * const p_data) -{ - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) p_ctrl; - - /* Perform parameter checking. */ -#if ADC_CFG_PARAM_CHECKING_ENABLE - - /* Verify the pointers are valid */ - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ASSERT(NULL != p_data); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->opened, FSP_ERR_NOT_OPEN); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->initialized, FSP_ERR_NOT_INITIALIZED); - - /* Verify that the channel is valid for this MCU */ - if ((reg_id >= ADC_CHANNEL_0) && ((uint32_t) reg_id <= 31U)) - { - uint32_t requested_channel_mask = (1U << (uint32_t) reg_id); - FSP_ASSERT(0 != (requested_channel_mask & g_adc_valid_channels[p_instance_ctrl->p_cfg->unit])); - } - else - { - FSP_ASSERT((reg_id == ADC_CHANNEL_TEMPERATURE) || (reg_id == ADC_CHANNEL_VOLT) || - (reg_id == ADC_CHANNEL_DUPLEX) || (reg_id == ADC_CHANNEL_DUPLEX_A) || - (reg_id == ADC_CHANNEL_DUPLEX_B)); - } - - /* Data is not available to be read from ADDRn registers when ADBUF is enabled. Read API cannot be used with ADBUF enabled. */ - adc_extended_cfg_t * p_extend = (adc_extended_cfg_t *) p_instance_ctrl->p_cfg->p_extend; - FSP_ASSERT(1U != p_extend->enable_adbuf); -#endif - - /* Read the data from the requested ADC conversion register and return it */ - *p_data = p_instance_ctrl->p_reg->ADDR[reg_id]; - - /* Return the error code */ - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Reads conversion results from a single channel or sensor register into a 32-bit result. - * - * @retval FSP_SUCCESS Data read into provided p_data. - * @retval FSP_ERR_ASSERTION An input argument is invalid. - * @retval FSP_ERR_NOT_OPEN Unit is not open. - * @retval FSP_ERR_NOT_INITIALIZED Unit is not initialized. - **********************************************************************************************************************/ -fsp_err_t R_ADC_Read32 (adc_ctrl_t * p_ctrl, adc_channel_t const reg_id, uint32_t * const p_data) -{ - uint16_t result = 0U; - uint32_t result_32 = 0U; - -#if ADC_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_data); -#endif - - fsp_err_t err = R_ADC_Read(p_ctrl, reg_id, &result); - FSP_ERROR_RETURN(FSP_SUCCESS == err, err); - - result_32 = result; - - /* Left shift the result into the upper 16 bits if the unit is configured for left alignment. */ - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) p_ctrl; - if (ADC_ALIGNMENT_LEFT == p_instance_ctrl->p_cfg->alignment) - { - result_32 <<= ADC_SHIFT_LEFT_ALIGNED_32_BIT; - } - - *p_data = result_32; - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Sets the sample state count for individual channels. This only needs to be set for special use cases. Normally, use - * the default values out of reset. - * - * @note The sample states for the temperature and voltage sensor are set in R_ADC_ScanCfg. - * - * @retval FSP_SUCCESS Sample state count updated. - * @retval FSP_ERR_ASSERTION An input argument is invalid. - * @retval FSP_ERR_NOT_INITIALIZED Unit is not initialized. - * @retval FSP_ERR_NOT_OPEN Unit is not open. - **********************************************************************************************************************/ -fsp_err_t R_ADC_SampleStateCountSet (adc_ctrl_t * p_ctrl, adc_sample_state_t * p_sample) -{ - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) p_ctrl; - fsp_err_t err = FSP_SUCCESS; - - /* Perform parameter checking */ -#if ADC_CFG_PARAM_CHECKING_ENABLE - - /* Verify the pointers are valid */ - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ASSERT(NULL != p_sample); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->opened, FSP_ERR_NOT_OPEN); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->initialized, FSP_ERR_NOT_INITIALIZED); - - /* Verify arguments are legal */ - err = r_adc_sample_state_cfg_check(p_instance_ctrl, p_sample); - if (FSP_SUCCESS != err) - { - return err; - } -#endif - - /* Set the sample state count for the specified register */ - p_instance_ctrl->p_reg->ADSSTR[p_sample->reg_id] = p_sample->num_states; - - /* Return the error code */ - return err; -} - -/*******************************************************************************************************************//** - * Returns the address of the lowest number configured channel and the total number of bytes to be read in order to - * read the results of the configured channels and return the ELC Event name. If no channels are configured, then a - * length of 0 is returned. - * - * Also provides the temperature sensor slope and the calibration data for the sensor if available on this MCU. - * Otherwise, invalid calibration data of 0xFFFFFFFF will be returned. - * - * @note In group mode, information is returned for group A only. Calculating information for group B is not currently - * supported. - * - * @retval FSP_SUCCESS Information stored in p_adc_info. - * @retval FSP_ERR_ASSERTION An input argument is invalid. - * @retval FSP_ERR_NOT_OPEN Unit is not open. - **********************************************************************************************************************/ -fsp_err_t R_ADC_InfoGet (adc_ctrl_t * p_ctrl, adc_info_t * p_adc_info) -{ - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) p_ctrl; - fsp_err_t err = FSP_SUCCESS; - uint32_t adc_mask = 0; - -#if ADC_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ASSERT(NULL != p_adc_info); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->opened, FSP_ERR_NOT_OPEN); -#endif - - /* Retrieve the scan mask of active channels from the control structure */ - adc_mask = p_instance_ctrl->scan_mask; - - /* If at least one channel is configured, determine the highest and lowest configured channels. */ - if (adc_mask != 0U) - { - /* Determine the lowest channel that is configured. The lowest sensor is the temperature sensor, at -3 from - * channel 0. To get all channels in register order, shift up by 3, then add in the sensors in the bottom - * 2 bits. */ - uint32_t adc_mask_in_order = adc_mask & ~(uint32_t) ADC_MASK_SENSORS; - adc_mask_in_order <<= 3U; - adc_mask_in_order |= adc_mask >> 28U; - int32_t lowest_channel = r_adc_lowest_channel_get(adc_mask_in_order); - p_adc_info->p_address = &p_instance_ctrl->p_reg->ADDR[lowest_channel - 3]; - - /* Determine the highest channel that is configured. */ - int32_t highest_channel = 31 - __CLZ(adc_mask_in_order); - - /* Determine the size of data that must be read to read all the channels between and including the - * highest and lowest channels.*/ - p_adc_info->length = (uint32_t) ((highest_channel - lowest_channel) + 1); - } - else - { - /* If no channels are configured, set the return length 0. */ - p_adc_info->length = 0U; - } - - p_adc_info->transfer_size = TRANSFER_SIZE_2_BYTE; - -#if BSP_FEATURE_ADC_UNIT_1_CHANNELS - - /* Specify the peripheral name in the ELC list */ - p_adc_info->elc_event = - (elc_event_t) ((uint32_t) ELC_EVENT_ADC0_SCAN_END + - (p_instance_ctrl->p_cfg->unit * - ((uint32_t) ELC_EVENT_ADC1_SCAN_END - (uint32_t) ELC_EVENT_ADC0_SCAN_END))); -#else - p_adc_info->elc_event = ELC_EVENT_ADC0_SCAN_END; -#endif - - p_adc_info->elc_peripheral = (elc_peripheral_t) (ELC_PERIPHERAL_ADC0 + (2U * p_instance_ctrl->p_cfg->unit)); - - /* Set Temp Sensor calibration data to invalid value */ - p_adc_info->calibration_data = UINT32_MAX; - - /* If calibration register is available, retrieve it from the MCU */ -#if 1U == BSP_FEATURE_ADC_TSN_CALIBRATION_AVAILABLE - #if 1U == BSP_FEATURE_ADC_TSN_CALIBRATION32_AVAILABLE - - /* Read into memory. */ - uint32_t data = R_TSN_CAL->TSCDR; - - /* Read the temperature calibration data from ROM. */ - p_adc_info->calibration_data = (data & BSP_FEATURE_ADC_TSN_CALIBRATION32_MASK); - #else - - /* Read into memory to prevent compiler warning when performing "|" on volatile register data. */ - uint32_t high = R_TSN->TSCDRH; - uint32_t low = R_TSN->TSCDRL; - - /* Read the calibration data from ROM and shift to fit into result variable. */ - p_adc_info->calibration_data = ((high << 8) | low); - #endif -#endif - - /* Provide the previously retrieved slope information */ - p_adc_info->slope_microvolts = BSP_FEATURE_ADC_TSN_SLOPE; - - return err; -} - -/*******************************************************************************************************************//** - * This function ends any scan in progress, disables interrupts, and removes power to the A/D peripheral. - * - * @retval FSP_SUCCESS Module closed. - * @retval FSP_ERR_ASSERTION An input argument is invalid. - * @retval FSP_ERR_NOT_OPEN Unit is not open. - **********************************************************************************************************************/ -fsp_err_t R_ADC_Close (adc_ctrl_t * p_ctrl) -{ - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) p_ctrl; - -#if ADC_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->opened, FSP_ERR_NOT_OPEN); -#endif - - /* Mark driver as closed */ - p_instance_ctrl->opened = 0U; - p_instance_ctrl->initialized = 0U; - - /* Disable interrupts. */ - adc_extended_cfg_t * p_extend = (adc_extended_cfg_t *) p_instance_ctrl->p_cfg->p_extend; - r_adc_irq_disable(p_instance_ctrl->p_cfg->scan_end_irq); - r_adc_irq_disable(p_instance_ctrl->p_cfg->scan_end_b_irq); - r_adc_irq_disable(p_extend->window_a_irq); - r_adc_irq_disable(p_extend->window_b_irq); - - /* Disable triggers. */ - p_instance_ctrl->p_reg->ADSTRGR = 0U; - - /* Stop the ADC. */ - p_instance_ctrl->p_reg->ADCSR = 0U; - -#if BSP_FEATURE_ADC_HAS_SAMPLE_HOLD_REG - - /* Disable sample and hold before entering module stop state to reduce power consumption (reference section 47.6.8 - * "Available Functions and Register Settings of AN000 to AN002, AN007, AN100 to AN102, and AN107" in the RA6M3 - * manual R01UH0886EJ0100. */ - p_instance_ctrl->p_reg->ADSHCR = 0U; -#endif - -#if BSP_FEATURE_ADC_HAS_VREFAMPCNT - - /* If VREFADC is selected as the high-potential reference voltage revert it to reduce power consumption. */ - p_instance_ctrl->p_reg->VREFAMPCNT = 0U; -#endif - - R_BSP_MODULE_STOP(FSP_IP_ADC, p_instance_ctrl->p_cfg->unit); - - /* Return the error code */ - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Initiates calibration of the ADC on MCUs that require calibration. This function must be called before starting - * a scan on MCUs that require calibration. - * - * Calibration is complete when the callback is called with ADC_EVENT_CALIBRATION_COMPLETE or when R_ADC_StatusGet - * returns ADC_STATUS_IDLE. Reference Figure 32.35 "Software flow and operation example of calibration operation." - * in the RA2A1 manual R01UH0888EJ0100. - * - * ADC calibration time: 12 PCLKB + 774,930 ADCLK. (Reference Table 32.16 "Required calibration time (shown - * as the number of ADCLK and PCLKB cycles)" in the RA2A1 manual R01UH0888EJ0100. The lowest supported ADCLK - * is 1MHz. - * - * Calibration will take a minimum of 24 milliseconds at 32 MHz PCLKB and ADCLK. This wait could take up to 780 - * milliseconds for a 1 MHz PCLKD (ADCLK). - * - * @param[in] p_ctrl Pointer to the instance control structure - * @param[in] p_extend Unused argument. Pass NULL. - * - * @retval FSP_SUCCESS Calibration successfully initiated. - * @retval FSP_ERR_INVALID_HW_CONDITION A scan is in progress or hardware triggers are enabled. - * @retval FSP_ERR_UNSUPPORTED Calibration not supported on this MCU. - * @retval FSP_ERR_ASSERTION An input argument is invalid. - * @retval FSP_ERR_NOT_OPEN Unit is not open. - **********************************************************************************************************************/ -fsp_err_t R_ADC_Calibrate (adc_ctrl_t * const p_ctrl, void const * p_extend) -{ - FSP_PARAMETER_NOT_USED(p_extend); - -#if BSP_FEATURE_ADC_CALIBRATION_REG_AVAILABLE - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) p_ctrl; - #if ADC_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_ctrl); - FSP_ERROR_RETURN(ADC_OPEN == p_instance_ctrl->opened, FSP_ERR_NOT_OPEN); - #endif - - /* ADC Calibration can only happen if there is no ongoing scan and if the scan trigger is disabled */ - FSP_ERROR_RETURN(!(p_instance_ctrl->p_reg->ADCSR & ADC_PRV_ADCSR_ADST_TRGE_MASK), FSP_ERR_INVALID_HW_CONDITION); - - /* Set the normal mode interrupt request to occur when calibration is complete */ - p_instance_ctrl->p_reg->ADICR = ADC_ADICR_CALIBRATION_INTERRUPT_ENABLED; - - /* Initiate calibration */ - p_instance_ctrl->p_reg->ADCALEXE = ADC_ADCALEXE_SET_CALEXE; - - return FSP_SUCCESS; -#else - FSP_PARAMETER_NOT_USED(p_ctrl); - FSP_ERROR_LOG(FSP_ERR_UNSUPPORTED); - - return FSP_ERR_UNSUPPORTED; -#endif -} - -/*******************************************************************************************************************//** - * @ref adc_api_t::offsetSet is not supported on the ADC. - * - * @retval FSP_ERR_UNSUPPORTED Function not supported in this implementation. - **********************************************************************************************************************/ -fsp_err_t R_ADC_OffsetSet (adc_ctrl_t * const p_ctrl, adc_channel_t const reg_id, int32_t offset) -{ - FSP_PARAMETER_NOT_USED(p_ctrl); - FSP_PARAMETER_NOT_USED(reg_id); - FSP_PARAMETER_NOT_USED(offset); - - /* Return the unsupported error. */ - return FSP_ERR_UNSUPPORTED; -} - -/*******************************************************************************************************************//** - * @} (end addtogroup ADC) - **********************************************************************************************************************/ - -/*********************************************************************************************************************** - * Private Functions - **********************************************************************************************************************/ - -#if ADC_CFG_PARAM_CHECKING_ENABLE - -/*******************************************************************************************************************//** - * Checks the sample state configuration. - * - * @param[in] p_instance_ctrl Pointer to instance control structure - * @param[in] p_sample Pointer to sample state configuration - * - * @retval FSP_SUCCESS No configuration errors detected - * @retval FSP_ERR_ASSERTION An input argument is invalid. - **********************************************************************************************************************/ -static fsp_err_t r_adc_sample_state_cfg_check (adc_instance_ctrl_t * p_instance_ctrl, adc_sample_state_t * p_sample) -{ - /* Used to prevent compiler warning */ - FSP_PARAMETER_NOT_USED(p_instance_ctrl); - - adc_sample_state_reg_t reg_id = p_sample->reg_id; - - /* Verify the requested channel exists on the MCU. */ - if (reg_id >= ADC_SAMPLE_STATE_CHANNEL_0) - { - uint32_t requested_channel_mask = (1U << (uint32_t) reg_id); - FSP_ASSERT(0 != (requested_channel_mask & g_adc_valid_channels[p_instance_ctrl->p_cfg->unit])); - } - - /* Verify the requested sample states is not less than the minimum. */ - FSP_ASSERT(p_sample->num_states >= ADC_SAMPLE_STATE_COUNT_MIN); - - return FSP_SUCCESS; -} - -#endif - -#if ADC_CFG_PARAM_CHECKING_ENABLE - -/*******************************************************************************************************************//** - * Validates the configuration arguments for illegal combinations or options. - * - * @param[in] p_cfg Pointer to configuration structure - * - * @retval FSP_SUCCESS No configuration errors detected - * @retval FSP_ERR_ASSERTION An input argument is invalid. - * @retval FSP_ERR_IP_CHANNEL_NOT_PRESENT ADC unit not present on this MCU - * @retval FSP_ERR_INVALID_HW_CONDITION The ADC clock must be at least 1 MHz - **********************************************************************************************************************/ -static fsp_err_t r_adc_open_cfg_check (adc_cfg_t const * const p_cfg) -{ - FSP_ASSERT(NULL != p_cfg); - - /* Verify the unit exists on the MCU. */ - FSP_ERROR_RETURN(((1U << p_cfg->unit) & BSP_FEATURE_ADC_VALID_UNIT_MASK), FSP_ERR_IP_CHANNEL_NOT_PRESENT); - - /* Verify the ADC clock frequency is at least 1 MHz (reference "Frequency" row of table "60.5 ADC12 - * Characteristics" in the RA6M3 manual R01UH0886EJ0100. The maximum frequency is the maximum frequency supported - * by the ADCLK, so it is not verified here. */ - uint32_t freq_hz = R_FSP_SystemClockHzGet(BSP_FEATURE_ADC_CLOCK_SOURCE); - FSP_ERROR_RETURN(freq_hz >= ADC_PRV_MIN_ADCLK_HZ, FSP_ERR_INVALID_HW_CONDITION); - - /* Check for valid argument values for addition/averaging. Reference section 47.2.10 "A/D-Converted Value - * Addition/Average Count Select Register (ADADC)" in the RA6M3 manual R01UH0886EJ0100 and section 32.2.11 - * "A/D-Converted Value Average Count Select Register (ADADC)" in the RA2A1 manual R01UH0888EJ0100. */ - adc_extended_cfg_t const * p_cfg_extend = (adc_extended_cfg_t const *) p_cfg->p_extend; - if (ADC_ADD_OFF != p_cfg_extend->add_average_count) - { - #if BSP_FEATURE_ADC_ADDITION_SUPPORTED - - /* The ADC12 and ADC14 do not support averaging 8 or 16 samples. */ - FSP_ASSERT(p_cfg_extend->add_average_count <= ADC_ADD_AVERAGE_FOUR); - #else - - /* The ADC16 supports averaging only, it does not support addition. */ - FSP_ASSERT(0U != (ADC_ADADC_AVEE_BIT & p_cfg_extend->add_average_count)); - #endif - } - - /* If 16 time addition is used only 12 bit accuracy can be selected. Reference Note 1 of section 47.2.10 - * "A/D-Converted Value Addition/Average Count Select Register (ADADC)" in the RA6M3 manual R01UH0886EJ0100. */ - if (ADC_ADD_SIXTEEN == p_cfg_extend->add_average_count) - { - FSP_ASSERT(ADC_RESOLUTION_12_BIT == p_cfg->resolution); - } - - /* Only synchronous triggers (ELC) allowed in group scan mode (reference TRSA documentation in section 47.2.12 - * "A/D Conversion Start Trigger Select Register (ADSTRGR)" in the RA6M3 manual R01UH0886EJ0100. */ - if ((ADC_MODE_GROUP_SCAN == p_cfg->mode) || (ADC_DOUBLE_TRIGGER_DISABLED != p_cfg_extend->double_trigger_mode)) - { - FSP_ASSERT(ADC_TRIGGER_SYNC_ELC == p_cfg->trigger); - - if ((ADC_MODE_GROUP_SCAN == p_cfg->mode)) - { - FSP_ASSERT(ADC_TRIGGER_SYNC_ELC == p_cfg_extend->trigger_group_b); - } - } - - return FSP_SUCCESS; -} - -#endif - -#if ADC_CFG_PARAM_CHECKING_ENABLE - -/*******************************************************************************************************************//** - * This function validates the resolution configuration arguments for illegal combinations or options. - * - * @param[in] p_cfg Pointer to configuration structure - * - * @retval FSP_SUCCESS No configuration errors detected - * @retval FSP_ERR_ASSERTION An input argument is invalid. - **********************************************************************************************************************/ -static fsp_err_t r_adc_open_cfg_resolution_check (adc_cfg_t const * const p_cfg) -{ - #if 12U == BSP_FEATURE_ADC_MAX_RESOLUTION_BITS - #if BSP_FEATURE_ADC_HAS_ADCER_ADPRC - - /* Resolution options for ADC12 (reference section 47.2.11 "A/D Control Extended Register (ADCER)" in the RA6M3 - * manual R01UH0886EJ0100. */ - FSP_ASSERT((ADC_RESOLUTION_12_BIT == p_cfg->resolution) || - (ADC_RESOLUTION_10_BIT == p_cfg->resolution) || - (ADC_RESOLUTION_8_BIT == p_cfg->resolution)); - #else - FSP_ASSERT(ADC_RESOLUTION_12_BIT == p_cfg->resolution); - #endif - #endif - - #if 14U == BSP_FEATURE_ADC_MAX_RESOLUTION_BITS - - /* Resolution options for ADC14 (reference section 35.2.11 "A/D Control Extended Register (ADCER)" in the RA4M1 - * manual R01UH0886EJ0100. */ - FSP_ASSERT((ADC_RESOLUTION_12_BIT == p_cfg->resolution) || - (ADC_RESOLUTION_14_BIT == p_cfg->resolution)); - #endif - - #if 16U == BSP_FEATURE_ADC_MAX_RESOLUTION_BITS - - /* ADC16 only offers 16-bit resolution (reference Table 32.1 "ADC16 specifications (1 of 2)" in the RA2A1 manual - * R01UH0888EJ0100. */ - FSP_ASSERT(ADC_RESOLUTION_16_BIT == p_cfg->resolution); - #endif - - return FSP_SUCCESS; -} - -#endif - -#if ADC_CFG_PARAM_CHECKING_ENABLE - -/*******************************************************************************************************************//** - * Checks the sample and hold arguments - * - * @param[in] p_instance_ctrl Pointer to instance control block - * @param[in] p_channel_cfg Pointer to channel configuration - * - * @retval FSP_SUCCESS No configuration errors detected - * @retval FSP_ERR_ASSERTION An input argument is invalid. - **********************************************************************************************************************/ -static fsp_err_t r_adc_scan_cfg_check_sample_hold (adc_instance_ctrl_t * const p_instance_ctrl, - adc_channel_cfg_t const * const p_channel_cfg) -{ - #if !BSP_FEATURE_ADC_HAS_SAMPLE_HOLD_REG - - /* If the MCU does not have sample and hold, verify the sample and hold feature is not used. */ - FSP_ASSERT(0U == p_channel_cfg->sample_hold_mask); - FSP_PARAMETER_NOT_USED(p_instance_ctrl); - #else - if (0U != p_channel_cfg->sample_hold_mask) - { - /* Sample and Hold channels can only be 0, 1, 2 and must have at least minimum state count specified (reference - * section 47.2.15 "A/D Sample and Hold Circuit Control Register (ADSHCR)" in the RA6M3 manual - * R01UH0886EJ0100. */ - FSP_ASSERT(p_channel_cfg->sample_hold_mask <= ADC_SAMPLE_HOLD_CHANNELS); - FSP_ASSERT(p_channel_cfg->sample_hold_states >= ADC_SAMPLE_STATE_HOLD_COUNT_MIN); - - uint32_t b_mask = p_channel_cfg->sample_hold_mask & p_channel_cfg->scan_mask_group_b; - if (ADC_MODE_GROUP_SCAN == p_instance_ctrl->p_cfg->mode) - { - if (ADC_GROUP_A_PRIORITY_OFF != p_channel_cfg->priority_group_a) - { - /* Sample and hold channels cannot be in GroupB if GroupA priority enabled. (reference SHANS[2:0] bits - * in section 47.2.15 "A/D Sample and Hold Circuit Control Register (ADSHCR)" in the RA6M3 manual - * R01UH0886EJ0100.*/ - FSP_ASSERT(0 == b_mask); - } - } - } - #endif - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Enforces constraints on Window Compare function usage per section 47.3.5.3 "Constraints on the compare function" in - * the RA6M3 User's Manual (R01UH0886EJ0100) - * - * @param[in] p_window_cfg Pointer to window compare configuration - * - * @retval FSP_SUCCESS No configuration errors detected - * @retval FSP_ERR_ASSERTION An input argument is invalid. - **********************************************************************************************************************/ -static fsp_err_t r_adc_scan_cfg_check_window_compare (adc_window_cfg_t const * const p_window_cfg) -{ - if (p_window_cfg) - { - uint32_t compare_cfg = p_window_cfg->compare_cfg; - if (0U != compare_cfg) - { - if ((compare_cfg & R_ADC0_ADCMPCR_CMPAE_Msk) && (compare_cfg & R_ADC0_ADCMPCR_CMPBE_Msk)) - { - /* Ensure channels selected for Window A do not conflict with Window B */ - uint32_t compare_b_ch = p_window_cfg->compare_b_channel; - compare_b_ch -= compare_b_ch > 31 ? 4 : 0; - FSP_ASSERT(!(p_window_cfg->compare_mask & (uint32_t) (1 << compare_b_ch))); - } - - if (compare_cfg & R_ADC0_ADCMPCR_WCMPE_Msk) - { - /* Ensure lower reference values are less than or equal to the high reference values */ - FSP_ASSERT((p_window_cfg->compare_ref_low <= p_window_cfg->compare_ref_high) && - (p_window_cfg->compare_b_ref_low <= p_window_cfg->compare_b_ref_high)); - } - } - } - - return FSP_SUCCESS; -} - -#endif - -#if ADC_CFG_PARAM_CHECKING_ENABLE - -/*******************************************************************************************************************//** - * This function checks the Temperature and Voltage sensor arguments - * - * @param[in] p_instance_ctrl Pointer to instance control block - * @param[in] p_channel_cfg Pointer to channel configuration - * - * @retval FSP_SUCCESS No configuration errors detected - * @retval FSP_ERR_ASSERTION Sensor configuration has been selected for Group B on an MCU which does not allow - * Group B configuration or sensor is used in Normal/Group A with the double trigger - * not enabled or MCU does not allow both the sensors to be used simultaneously - **********************************************************************************************************************/ -static fsp_err_t r_adc_scan_cfg_check_sensors (adc_instance_ctrl_t * const p_instance_ctrl, - adc_channel_cfg_t const * const p_channel_cfg) -{ - /* Some MCUs have nothing to check here. */ - FSP_PARAMETER_NOT_USED(p_channel_cfg); - - #if !BSP_FEATURE_ADC_GROUP_B_SENSORS_ALLOWED - - /* Sensors are not supported in Group B in some MCUs. Reference section 32.2.14 "A/D Conversion Extended Input - * Control Register (ADEXICR)" of the RA2A1 manual R01UH0888EJ0100. */ - FSP_ASSERT(0U == (p_channel_cfg->scan_mask_group_b & ADC_MASK_SENSORS)); - #endif - - #if BSP_FEATURE_ADC_SENSORS_EXCLUSIVE - uint32_t sensor_mask = p_channel_cfg->scan_mask & ADC_MASK_SENSORS; - if (0U != sensor_mask) - { - /* If the temperature sensor or the internal voltage reference is used, then none of the channels can be used - * at the same time. The temperature sensor and the internal voltage reference can only be used in single scan - * mode. Reference TSSA and OCSA bits in section 35.2.13 "A/D Conversion Extended Input Control Register - * (ADEXICR)" of the RA4M1 manual R01UH0887EJ0100. */ - FSP_ASSERT(ADC_MASK_SENSORS != sensor_mask); - FSP_ASSERT(p_channel_cfg->scan_mask == sensor_mask); - FSP_ASSERT(ADC_MODE_SINGLE_SCAN == p_instance_ctrl->p_cfg->mode); - } - #endif - - /* When using double-trigger modes the sensors must not be configured or used in Group A. */ - adc_extended_cfg_t const * p_cfg_extend = (adc_extended_cfg_t const *) p_instance_ctrl->p_cfg->p_extend; - if (ADC_DOUBLE_TRIGGER_DISABLED != p_cfg_extend->double_trigger_mode) - { - FSP_ASSERT(0U == (p_channel_cfg->scan_mask & ADC_MASK_SENSORS)); - } - - return FSP_SUCCESS; -} - -#endif - -/*******************************************************************************************************************//** - * The Open function applies power to the A/D peripheral, sets the operational mode, trigger sources, and - * configurations common to all channels and sensors. - * - * @param[in] p_instance_ctrl Pointer to instance control block - * @param[in] p_cfg Pointer to configuration structure - **********************************************************************************************************************/ -static void r_adc_open_sub (adc_instance_ctrl_t * const p_instance_ctrl, adc_cfg_t const * const p_cfg) -{ - adc_extended_cfg_t const * p_cfg_extend = (adc_extended_cfg_t const *) p_cfg->p_extend; - - /* Determine the value for ADCSR: - * * The configured mode is set in ADCSR.ADCS. - * * ADCSR.GBADIE is always set by this driver. It will only trigger an interrupt in group mode if the group B - * interrupt is enabled. - * * If double-trigger mode is selected ADCSR.DBLANS is set to the chosen double-trigger scan channel and - * ADCSR.DBLE is set to 1; otherwise, both are set to 0. - * * The configured trigger mode is set in ADCSR.EXTRG and ADCSR.TRGE. - * * The value to set in ADCSR to start a scan is stored in the control structure. ADCSR.ADST is set in - * R_ADC_ScanStart if software trigger mode is used. - */ - uint32_t adcsr = (uint32_t) (p_cfg->mode << R_ADC0_ADCSR_ADCS_Pos); - adcsr |= (uint32_t) (R_ADC0_ADCSR_GBADIE_Msk); - adcsr |= ((uint32_t) p_cfg->trigger << R_ADC0_ADCSR_EXTRG_Pos); - - if (ADC_DOUBLE_TRIGGER_DISABLED != p_cfg_extend->double_trigger_mode) - { - adcsr |= R_ADC0_ADCSR_TRGE_Msk | R_ADC0_ADCSR_DBLE_Msk; - } - else if (ADC_TRIGGER_SOFTWARE == p_cfg->trigger) - { - adcsr |= R_ADC0_ADCSR_ADST_Msk; - } - else - { - /* Do nothing. */ - } - - p_instance_ctrl->scan_start_adcsr = (uint16_t) adcsr; - - /* The default value for ADSTRGR is 0 out of reset. Update it only if the ADC is triggered on ELC events. */ - uint32_t adstrgr = 0U; - if (ADC_TRIGGER_SYNC_ELC == p_cfg->trigger) - { - /* Set ADSTRGR per the following: - * Extended double-trigger mode: - * - Normal (Group A): ELC_PERIPHERAL_ADCn and ELC_PERIPHERAL_ADCn_B - * - Group B: None - * All other modes: - * - Normal (Group A): ELC_PERIPHERAL_ADCn - * - Group B: ELC_PERIPHERAL_ADCn_B - */ - adstrgr = adc_elc_trigger_lut[p_cfg_extend->double_trigger_mode]; - } - - /* Determine the value for ADCER: - * * The resolution is set as configured in ADCER.ADPRC (on MCUs that have this bitfield). - * * The alignment is set as configured in ADCER.ADFMT (on MCUs that have this bitfield). - * * The clearing option is set as configured in ADCER.ACE. - * * Always select data range of 0 - 32767 in ADCER.INV (on MCUs that have this bitfield). - * * Always disable self-diagnosis (unsupported in this module). - */ - uint32_t adcer = 0U; -#if BSP_FEATURE_ADC_HAS_ADCER_ADPRC - adcer |= (uint32_t) p_cfg->resolution << R_ADC0_ADCER_ADPRC_Pos; -#endif -#if BSP_FEATURE_ADC_HAS_ADCER_ADRFMT - adcer |= (uint32_t) p_cfg->alignment << R_ADC0_ADCER_ADRFMT_Pos; -#endif - adcer |= (uint32_t) p_cfg_extend->clearing << R_ADC0_ADCER_ACE_Pos; - -#if BSP_FEATURE_ADC_CALIBRATION_REG_AVAILABLE - adcer |= 1U << R_ADC0_ADCER_ADINV_Pos; -#endif - - /* Determine the value for ADADC: - * * The addition/averaging modes are set as configured in ADADC.ADC and ADADC.AVEE. - * * On MCUs that do not have the ADADC.AVEE bit (addition not supported), the ADADC.AVEE bit is cleared. - */ - uint32_t adadc = p_cfg_extend->add_average_count; -#if !BSP_FEATURE_ADC_ADDITION_SUPPORTED - adadc &= ~ADC_ADADC_AVEE_BIT; -#endif - - /* Apply clock to peripheral. */ - R_BSP_MODULE_START(FSP_IP_ADC, p_cfg->unit); - - /* Set the predetermined values for ADCSR, ADSTRGR, ADCER, and ADADC without setting ADCSR.ADST or ADCSR.TRGE. - * ADCSR.ADST or ADCSR.TRGE are set as configured in R_ADC_ScanStart. */ - p_instance_ctrl->p_reg->ADCSR = (uint16_t) (adcsr & ADC_PRV_ADCSR_CLEAR_ADST_TRGE); - p_instance_ctrl->p_reg->ADSTRGR = (uint16_t) adstrgr; - p_instance_ctrl->p_reg->ADCER = (uint16_t) adcer; - p_instance_ctrl->p_reg->ADADC = (uint8_t) adadc; - -#if BSP_FEATURE_ADC_HAS_PGA - - /* Disable the unused ADC PGA feature (on MCUs where it is available) since the feature is enabled out of reset on - * some MCUs and disabled on others and affects the operation of the normal ADC channels that are multiplexed with - * the PGA. */ - p_instance_ctrl->p_reg->ADPGADCR0 = ADC_ADPGADCR0_DISABLE_PGA; - p_instance_ctrl->p_reg->ADPGACR = ADC_ADPGACR_DISABLE_PGA; -#endif - -#if BSP_FEATURE_ADC_CALIBRATION_REG_AVAILABLE - - /* Use ADC in single-ended mode. */ - p_instance_ctrl->p_reg->ADANIM = 0U; -#endif - -#if BSP_FEATURE_ADC_HAS_VREFAMPCNT - - /* If VREFADC is selected as the high-potential reference voltage. */ - if (ADC_VREF_CONTROL_VREFH != p_cfg_extend->adc_vref_control) - { - /* Configure Reference Voltage controls - * Reference section "32.6 Selecting Reference Voltage" in the RA2A1 manual R01UH0888EJ0100. */ - p_instance_ctrl->p_reg->VREFAMPCNT = - (uint8_t) (p_cfg_extend->adc_vref_control & - (R_ADC0_VREFAMPCNT_BGREN_Msk | R_ADC0_VREFAMPCNT_VREFADCG_Msk)); - - R_BSP_SoftwareDelay(ADC_BGR_STABILIZATION_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); - - /* Enable Over current detection and VREFADC output */ - p_instance_ctrl->p_reg->VREFAMPCNT = (uint8_t) (p_cfg_extend->adc_vref_control); - } -#endif - -#if BSP_FEATURE_ADC_HAS_ADHVREFCNT - - /* If the internal voltage is set as VREFH, discharge the VREF node for 1 us before setting ADHVREFCNT.HVSEL to 2. - * Reference section 35.7 "A/D Conversion Procedure when Selecting Internal Reference Voltage as High-Potential - * Reference Voltage" in the RA4M1 manual R01UH0887EJ0100. - * - * Also wait 5 us before using the ADC. This wait is the responsibility of the application. */ - if (ADC_PRV_ADHVREFCNT_VREF_INTERNAL_BIT_1 & p_cfg_extend->adc_vref_control) - { - p_instance_ctrl->p_reg->ADHVREFCNT = (uint8_t) (p_cfg_extend->adc_vref_control | R_ADC0_ADHVREFCNT_HVSEL_Msk); - - R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MICROSECONDS); - } - p_instance_ctrl->p_reg->ADHVREFCNT = (uint8_t) p_cfg_extend->adc_vref_control; -#endif - -#if BSP_FEATURE_ADC_HAS_ADBUF - uint8_t adbuf = 0; - if (1U == p_cfg_extend->enable_adbuf) - { - adbuf = R_ADC0_ADBUFEN_BUFEN_Msk; - } - p_instance_ctrl->p_reg->ADBUFEN = adbuf; -#endif -} - -/*******************************************************************************************************************//** - * This function set the sensor bits taking into account group inclusion and addition/average mode. - * This function must only be called if it has been verified that sensors are used in this configuration - * - * @param[in] p_instance_ctrl Pointer to instance control block - * @param[in] p_channel_cfg Pointer to channel configuration - **********************************************************************************************************************/ -static void r_adc_sensor_cfg (adc_instance_ctrl_t * const p_instance_ctrl, - adc_channel_cfg_t const * const p_channel_cfg) -{ - /* Calculate sample states required for temperature and voltage sensor at the current ADCLK speed. */ - uint32_t sample_states = 0U; - r_adc_sensor_sample_state_calculation(&sample_states); - - /* Check if the temperature sensor channel is enabled */ - uint32_t combined_scan_mask = p_channel_cfg->scan_mask | p_channel_cfg->scan_mask_group_b; - uint32_t adexicr = 0U; - if (combined_scan_mask & ADC_MASK_TEMPERATURE) - { -#if BSP_FEATURE_ADC_TSN_CONTROL_AVAILABLE - - /* Power on the temperature sensor. This is only needed for TSNs that have the control register */ - R_BSP_MODULE_START(FSP_IP_TSN, 0U); - - /* Enable the temperature sensor output to the ADC */ - R_TSN_CTRL->TSCR = ADC_PRV_TSCR_TSN_ENABLE; -#endif - - /* Set sample state register to the calculated value */ - p_instance_ctrl->p_reg->ADSSTRT = (uint8_t) sample_states; - -#if BSP_FEATURE_ADC_GROUP_B_SENSORS_ALLOWED - if (p_channel_cfg->scan_mask & ADC_MASK_TEMPERATURE) - { - /* Scan the temperature sensor in normal/group A. */ - adexicr |= R_ADC0_ADEXICR_TSSA_Msk; - } - else - { - /* Scan the temperature sensor in group B */ - adexicr |= R_ADC0_ADEXICR_TSSB_Msk; - } - -#else - - /* Scan the temperature sensor in normal/group A. */ - adexicr |= R_ADC0_ADEXICR_TSSA_Msk; -#endif - - /* Enable temperature addition mode if configured. */ - if (p_channel_cfg->add_mask & ADC_MASK_TEMPERATURE) - { - adexicr |= R_ADC0_ADEXICR_TSSAD_Msk; - } - } - - /* Check if the voltage sensor channel is enabled */ - if (combined_scan_mask & ADC_MASK_VOLT) - { - /*sample state registers are set to the calculated value */ - p_instance_ctrl->p_reg->ADSSTRO = (uint8_t) sample_states; -#if BSP_FEATURE_ADC_GROUP_B_SENSORS_ALLOWED - if (p_channel_cfg->scan_mask & ADC_MASK_VOLT) - { - /* Scan the internal reference voltage in normal/group A. */ - adexicr |= R_ADC0_ADEXICR_OCSA_Msk; - } - else - { - /* Scan the internal reference voltage in group B. */ - adexicr |= R_ADC0_ADEXICR_OCSB_Msk; - } - -#else - - /* Scan the internal reference voltage in normal/group A. */ - adexicr |= R_ADC0_ADEXICR_OCSA_Msk; -#endif - - /* Enable temperature addition mode if configured. */ - if (p_channel_cfg->add_mask & ADC_MASK_VOLT) - { - adexicr |= R_ADC0_ADEXICR_OCSAD_Msk; - } - } - - p_instance_ctrl->p_reg->ADEXICR = (uint16_t) adexicr; -} - -/*******************************************************************************************************************//** - * This function calculates the sample states value for the internal sensors and returns an error if the calculated - * value is outside the limit supported by the hardware - * - * @param[out] p_sample_states: The calculates sample state count. - **********************************************************************************************************************/ -static void r_adc_sensor_sample_state_calculation (uint32_t * const p_sample_states) -{ - /* Calculate sample state values such that the sample time for the temperature and voltage sensor is the - * minimum defined by the hardware manual. The minimum is 4.15 microseconds for MF3 devices and - * 5 microseconds for RV40. The sample states will be calculated to allow sampling for this duration. */ - - /* Retrieve the clock source and frequency used by the ADC peripheral and sampling time required for the sensor. */ - uint32_t freq_hz = R_FSP_SystemClockHzGet(BSP_FEATURE_ADC_CLOCK_SOURCE); - - /* Calculate sample states required for the current ADC conversion clock (reference section 47.2.14 "A/D Sampling - * State Register n (ADSSTRn) (n = 00 to 07, L, T, O)" in the RA6M3 manual R01UH0886EJ0100. - * - * sample_states = required_sample_time / adclk_period - * = required_sample_time (nsec) * adclk_frequency (kHz) / 1000000 (usec / sec) + 1 - * (refactored to avoid overflowing 32 bits, 1 added to round up) - */ - uint32_t sample_states = ((BSP_FEATURE_ADC_SENSOR_MIN_SAMPLING_TIME * (freq_hz / ADC_PRV_HZ_PER_KHZ)) / - ADC_PRV_USEC_PER_SEC) + 1U; - - /* The fastest ADC conversion clock is 60 MHz, and the associated sampling time is 4.15 microseconds. The number - * of sample states in this case is 0.00000415 / (1 / 60000000) = 249. This is the maximum number of sample states - * required for the on chip sensors, so this calculation will never overflow 8 bits (255). */ - - /* If sample states are less than the min number of states required, then set them to the minimum. */ - if (sample_states < ADC_SAMPLE_STATE_COUNT_MIN) - { - sample_states = ADC_SAMPLE_STATE_COUNT_MIN; - } - - *p_sample_states = sample_states; -} - -#if ADC_CFG_PARAM_CHECKING_ENABLE - -/*******************************************************************************************************************//** - * This function does extensive checking on channel mask settings based upon operational mode. - * - * @param[in] p_instance_ctrl Pointer to instance control block - * @param[in] p_channel_cfg Pointer to channel configuration - * - * @retval FSP_SUCCESS No configuration errors detected - * @retval FSP_ERR_ASSERTION An input argument is invalid. - **********************************************************************************************************************/ -static fsp_err_t r_adc_scan_cfg_check (adc_instance_ctrl_t * const p_instance_ctrl, - adc_channel_cfg_t const * const p_channel_cfg) -{ - fsp_err_t err; - uint16_t unit = p_instance_ctrl->p_cfg->unit; - - /* Verify at least one channel is selected for normal / group A. */ - uint32_t valid_channels = g_adc_valid_channels[unit] | ADC_MASK_TEMPERATURE | ADC_MASK_VOLT; - FSP_ASSERT((0U != p_channel_cfg->scan_mask) && (0U == (p_channel_cfg->scan_mask & (~valid_channels)))); - - if (ADC_MODE_GROUP_SCAN == p_instance_ctrl->p_cfg->mode) - { - /* Verify at least one channel is selected for group B. */ - FSP_ASSERT((0U != p_channel_cfg->scan_mask_group_b) && - (0U == (p_channel_cfg->scan_mask_group_b & (~valid_channels)))); - - /* Cannot have the same channel in both groups. */ - FSP_ASSERT(0 == (p_channel_cfg->scan_mask & p_channel_cfg->scan_mask_group_b)); - } - else - { - /* If group mode is not enabled, no channels can be selected for group B. */ - FSP_ASSERT(ADC_MASK_OFF == p_channel_cfg->scan_mask_group_b); - } - - /* Verify sensor configuration. */ - err = r_adc_scan_cfg_check_sensors(p_instance_ctrl, p_channel_cfg); - FSP_ERROR_RETURN(FSP_SUCCESS == err, err); - - /* Verify that if addition is enabled, then at least one channel is selected. */ - adc_extended_cfg_t const * p_cfg_extend = (adc_extended_cfg_t const *) p_instance_ctrl->p_cfg->p_extend; - if (ADC_ADD_OFF != p_cfg_extend->add_average_count) - { - /* Addition mask should not include bits from inactive channels. - * This also serves as a check for valid channels in the addition mask */ - uint32_t tmp_mask = p_channel_cfg->scan_mask_group_b | p_channel_cfg->scan_mask; - FSP_ASSERT((0U == (p_channel_cfg->add_mask & ~tmp_mask)) && (0U != p_channel_cfg->add_mask)); - } - else - { - /* Channels cannot be selected for addition if addition is not used. */ - FSP_ASSERT(ADC_MASK_OFF == p_channel_cfg->add_mask); - } - - /* Check sample and hold settings. */ - err = r_adc_scan_cfg_check_sample_hold(p_instance_ctrl, p_channel_cfg); - FSP_ERROR_RETURN(FSP_SUCCESS == err, err); - - /* Check window compare settings. */ - err = r_adc_scan_cfg_check_window_compare(p_channel_cfg->p_window_cfg); - - return err; -} - -#endif - -/*******************************************************************************************************************//** - * This function does extensive checking on channel mask settings based upon operational mode. Mask registers are - * initialized and interrupts enabled in peripheral. Interrupts are also enabled in ICU if corresponding priority - * is not 0. - * - * @param[in] p_instance_ctrl Pointer to instance control block - * @param[in] p_channel_cfg Pointer to channel configuration - **********************************************************************************************************************/ -static void r_adc_scan_cfg (adc_instance_ctrl_t * const p_instance_ctrl, adc_channel_cfg_t const * const p_channel_cfg) -{ - /* Set mask for Group A channels. */ - uint32_t scan_mask = p_channel_cfg->scan_mask & ~(uint32_t) ADC_MASK_SENSORS; - adc_extended_cfg_t const * p_cfg_extend = (adc_extended_cfg_t const *) p_instance_ctrl->p_cfg->p_extend; - - /* Set other channel masks. */ - uint32_t scan_mask_group_b = p_channel_cfg->scan_mask_group_b & ~(uint32_t) ADC_MASK_SENSORS; - uint32_t add_mask = p_channel_cfg->add_mask & ~(uint32_t) ADC_MASK_SENSORS; - - p_instance_ctrl->p_reg->ADANSA[0] = (uint16_t) (scan_mask); - p_instance_ctrl->p_reg->ADANSB[0] = (uint16_t) (scan_mask_group_b); - p_instance_ctrl->p_reg->ADADS[0] = (uint16_t) (add_mask); - p_instance_ctrl->p_reg->ADANSA[1] = (uint16_t) ((scan_mask >> 16)); - p_instance_ctrl->p_reg->ADANSB[1] = (uint16_t) ((scan_mask_group_b >> 16)); - p_instance_ctrl->p_reg->ADADS[1] = (uint16_t) ((add_mask >> 16)); - - /* If either voltage or temperature sensor are used, configure them. */ - uint32_t temp_mask = p_channel_cfg->scan_mask | p_channel_cfg->scan_mask_group_b; - if (temp_mask & ADC_MASK_SENSORS) - { - /* Calculate sample state values such that the sample time for the temperature and voltage sensor is the - * minimum defined by the hardware manual. The minimum is 4.15 microseconds for MF3 devices and - * 5 microseconds for RV40. The sample states will be calculated to allow sampling for this duration. */ - - /* Retrieve the clock source and frequency used by the ADC peripheral and sampling time required for the sensor. */ - r_adc_sensor_cfg(p_instance_ctrl, p_channel_cfg); - } - -#if BSP_FEATURE_ADC_HAS_SAMPLE_HOLD_REG - - /* Configure sample and hold. */ - uint32_t adshcr = p_channel_cfg->sample_hold_states; - adshcr |= (p_channel_cfg->sample_hold_mask & ADC_MASK_SAMPLE_HOLD_BYPASS_CHANNELS) << - ADC_MASK_SAMPLE_HOLD_BYPASS_SHIFT; - p_instance_ctrl->p_reg->ADSHCR = (uint16_t) adshcr; -#endif - - /* Get window compare configuration */ - adc_window_cfg_t * p_window_cfg = p_channel_cfg->p_window_cfg; - - uint16_t adcmpcr = 0; - - if (p_window_cfg) - { - /* Save window compare config */ - adcmpcr = (uint16_t) p_window_cfg->compare_cfg; - - if (p_window_cfg->compare_cfg & R_ADC0_ADCMPCR_CMPAE_Msk) - { - /* Set Window A boundary values */ - p_instance_ctrl->p_reg->ADCMPCR = p_window_cfg->compare_cfg & UINT16_MAX; - p_instance_ctrl->p_reg->ADCMPDR0 = p_window_cfg->compare_ref_low; - p_instance_ctrl->p_reg->ADCMPDR1 = p_window_cfg->compare_ref_high; - - /* Set Window A channel mask */ - p_instance_ctrl->p_reg->ADCMPANSR[0] = p_window_cfg->compare_mask & UINT16_MAX; - p_instance_ctrl->p_reg->ADCMPANSR[1] = (uint16_t) ((p_window_cfg->compare_mask << 4) >> 20); - p_instance_ctrl->p_reg->ADCMPANSER = (uint8_t) (p_window_cfg->compare_mask >> 28); - - /* Set Window A channel inequality mode mask */ - p_instance_ctrl->p_reg->ADCMPLR[0] = p_window_cfg->compare_mode_mask & UINT16_MAX; - p_instance_ctrl->p_reg->ADCMPLR[1] = (uint16_t) ((p_window_cfg->compare_mode_mask << 4) >> 20); - p_instance_ctrl->p_reg->ADCMPLER = (uint8_t) (p_window_cfg->compare_mode_mask >> 28); - } - - if (p_window_cfg->compare_cfg & R_ADC0_ADCMPCR_CMPBE_Msk) - { - /* Set Window B channel and mode */ - p_instance_ctrl->p_reg->ADCMPBNSR = (uint8_t) ((adc_window_b_mode_t) p_window_cfg->compare_b_channel | - p_window_cfg->compare_b_mode); - - /* Set Window B boundary values */ - p_instance_ctrl->p_reg->ADWINLLB = p_window_cfg->compare_b_ref_low; - p_instance_ctrl->p_reg->ADWINULB = p_window_cfg->compare_b_ref_high; - } - } - - /* Set window compare config */ - p_instance_ctrl->p_reg->ADCMPCR = adcmpcr; - - /* Set group A priority action (not interrupt priority!) - * This will also start the Group B scans if configured for ADC_GROUP_A_GROUP_B_CONTINUOUS_SCAN. - */ - p_instance_ctrl->p_reg->ADGSPCR = (uint16_t) p_channel_cfg->priority_group_a; - - /* In double-trigger mode set the channel select bits to the highest selected channel number then return. */ - if (ADC_DOUBLE_TRIGGER_DISABLED != p_cfg_extend->double_trigger_mode) - { - uint32_t adcsr = p_instance_ctrl->p_reg->ADCSR; - adcsr = (adcsr & ~R_ADC0_ADCSR_DBLANS_Msk) + (31U - __CLZ(scan_mask)); - - p_instance_ctrl->p_reg->ADCSR = (uint16_t) adcsr; - p_instance_ctrl->scan_start_adcsr |= (uint16_t) adcsr; - } - - p_instance_ctrl->initialized = ADC_OPEN; -} - -/*******************************************************************************************************************//** - * Disables and clears context for the requested IRQ. - * - * @param[in] irq IRQ to enable - * @param[in] ipl Interrupt priority - * @param[in] p_context Pointer to interrupt context - **********************************************************************************************************************/ -static void r_adc_irq_enable (IRQn_Type irq, uint8_t ipl, void * p_context) -{ - if (irq >= 0) - { - R_BSP_IrqCfgEnable(irq, ipl, p_context); - } -} - -/*******************************************************************************************************************//** - * Disables and clears context for the requested IRQ. - * - * @param[in] irq IRQ to disable - **********************************************************************************************************************/ -static void r_adc_irq_disable (IRQn_Type irq) -{ - if (irq >= 0) - { - R_BSP_IrqDisable(irq); - R_FSP_IsrContextSet(irq, NULL); - } -} - -/*******************************************************************************************************************//** - * Returns the lowest channel index that is configured in order to read the results of the configured channels. - * - * @param[in] adc_mask scan mask of active channels retrieved from the control structure - * - * @retval adc_mask_count index value of lowest channel - **********************************************************************************************************************/ -static int32_t r_adc_lowest_channel_get (uint32_t adc_mask) -{ - /* Initialize the mask result */ - uint32_t adc_mask_result = 0U; - int32_t adc_mask_count = -1; - while (0U == adc_mask_result) - { - /* Increment channel until a channel is found in the mask. */ - adc_mask_count++; - adc_mask_result = (uint32_t) (adc_mask & (1U << adc_mask_count)); - } - - return adc_mask_count; -} - -/*******************************************************************************************************************//** - * Calls user callback. - * - * @param[in] p_ctrl Pointer to ADC instance control block - * @param[in] p_args Pointer to arguments on stack - **********************************************************************************************************************/ -static void r_adc_call_callback (adc_instance_ctrl_t * p_ctrl, adc_callback_args_t * p_args) -{ - adc_callback_args_t args; - - /* Store callback arguments in memory provided by user if available. This allows callback arguments to be - * stored in non-secure memory so they can be accessed by a non-secure callback function. */ - adc_callback_args_t * p_args_memory = p_ctrl->p_callback_memory; - if (NULL == p_args_memory) - { - /* Use provided args struct on stack */ - p_args_memory = p_args; - } - else - { - /* Save current arguments on the stack in case this is a nested interrupt. */ - args = *p_args_memory; - - /* Copy the stacked args to callback memory */ - *p_args_memory = *p_args; - } - -#if BSP_TZ_SECURE_BUILD - - /* p_callback can point to a secure function or a non-secure function. */ - if (!cmse_is_nsfptr(p_ctrl->p_callback)) - { - /* If p_callback is secure, then the project does not need to change security state. */ - p_ctrl->p_callback(p_args_memory); - } - else - { - /* If p_callback is Non-secure, then the project must change to Non-secure state in order to call the callback. */ - adc_prv_ns_callback p_callback = (adc_prv_ns_callback) (p_ctrl->p_callback); - p_callback(p_args_memory); - } - -#else - - /* If the project is not Trustzone Secure, then it will never need to change security state in order to call the callback. */ - p_ctrl->p_callback(p_args_memory); -#endif - - if (NULL != p_ctrl->p_callback_memory) - { - /* Restore callback memory in case this is a nested interrupt. */ - *p_ctrl->p_callback_memory = args; - } -} - -/*******************************************************************************************************************//** - * Clears interrupt flag and calls a callback to notify application of the event. - * - * @param[in] event Event that triggered the ISR - **********************************************************************************************************************/ -static void r_adc_scan_end_common_isr (adc_event_t event) -{ - /* Save context if RTOS is used */ - FSP_CONTEXT_SAVE; - - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) R_FSP_IsrContextGet(R_FSP_CurrentIrqGet()); - - /* Clear the BSP IRQ Flag */ - R_BSP_IrqStatusClear(R_FSP_CurrentIrqGet()); - - adc_callback_args_t args; - args.event = event; -#if BSP_FEATURE_ADC_CALIBRATION_REG_AVAILABLE - - /* Store the correct event into the callback argument */ - if (ADC_ADICR_CALIBRATION_INTERRUPT_DISABLED != p_instance_ctrl->p_reg->ADICR) - { - args.event = ADC_EVENT_CALIBRATION_COMPLETE; - - /* Restore the interrupt source to disable interrupts after calibration is done. */ - p_instance_ctrl->p_reg->ADICR = 0U; - } -#endif - - /* Store the unit number into the callback argument */ - args.unit = p_instance_ctrl->p_cfg->unit; - - /* Initialize the channel to 0. It is not used in this implementation. */ - args.channel = ADC_CHANNEL_0; - - /* Populate the context field. */ - args.p_context = p_instance_ctrl->p_context; - - /* If a callback was provided, call it with the argument */ - if (NULL != p_instance_ctrl->p_callback) - { - r_adc_call_callback(p_instance_ctrl, &args); - } - - /* Restore context if RTOS is used */ - FSP_CONTEXT_RESTORE; -} - -/*******************************************************************************************************************//** - * This function implements the unit 0 interrupt handler for normal/Group A/double trigger scan complete. - **********************************************************************************************************************/ -void adc_scan_end_isr (void) -{ - r_adc_scan_end_common_isr(ADC_EVENT_SCAN_COMPLETE); -} - -/*******************************************************************************************************************//** - * This function implements the interrupt handler for Group B scan complete. - **********************************************************************************************************************/ -void adc_scan_end_b_isr (void) -{ - r_adc_scan_end_common_isr(ADC_EVENT_SCAN_COMPLETE_GROUP_B); -} - -/*******************************************************************************************************************//** - * This function implements the interrupt handler for window compare events. - **********************************************************************************************************************/ -void adc_window_compare_isr (void) -{ - /* Save context if RTOS is used */ - FSP_CONTEXT_SAVE; - - IRQn_Type irq = R_FSP_CurrentIrqGet(); - - adc_instance_ctrl_t * p_instance_ctrl = (adc_instance_ctrl_t *) R_FSP_IsrContextGet(irq); - adc_extended_cfg_t * p_extend = (adc_extended_cfg_t *) p_instance_ctrl->p_cfg->p_extend; - - adc_callback_args_t args; - args.event = (irq == p_extend->window_a_irq) ? ADC_EVENT_WINDOW_COMPARE_A : ADC_EVENT_WINDOW_COMPARE_B; - - /* Store the unit number into the callback argument */ - args.unit = p_instance_ctrl->p_cfg->unit; - - if (ADC_EVENT_WINDOW_COMPARE_A == args.event) - { - args.channel = (adc_channel_t) 0; - - R_ADC0_Type * p_reg = p_instance_ctrl->p_reg; - - /* Get all Window A status registers */ - uint16_t adcmpsr0 = p_reg->ADCMPSR[0]; - uint16_t adcmpsr1 = p_reg->ADCMPSR[1]; - uint8_t adcmpser = p_reg->ADCMPSER; - - /* Get the lowest channel that meets Window A criteria */ - uint32_t lowest_channel = __CLZ(__RBIT(adcmpsr0 + (uint32_t) (adcmpsr1 << 16) + (uint32_t) (adcmpser << 28))); - - /* Clear the status flag corresponding to the lowest channel */ - if (lowest_channel < 16) - { - p_reg->ADCMPSR[0] = (uint16_t) (adcmpsr0 & ~(1 << (lowest_channel & 0xF))); - } - else if (lowest_channel < 28) - { - p_reg->ADCMPSR[1] = (uint16_t) (adcmpsr1 & ~(1 << (lowest_channel & 0xF))); - } - else - { - p_reg->ADCMPSER = (uint8_t) (adcmpser & ~(1 << (lowest_channel & 0x3))); - } - - args.channel = (adc_channel_t) lowest_channel; - - if (args.channel > 28) - { - /* Adjust sensor channels to align with the adc_channel_t enumeration */ - args.channel = (adc_channel_t) (ADC_CHANNEL_TEMPERATURE + (args.channel - 28)); - } - } - else - { - /* Get channel selected for Window B */ - args.channel = (adc_channel_t) p_instance_ctrl->p_reg->ADCMPBNSR_b.CMPCHB; - - if (args.channel > 31) - { - /* Adjust sensor channels to align with the adc_channel_t enumeration */ - args.channel = (adc_channel_t) (ADC_CHANNEL_TEMPERATURE + (args.channel & 0xF)); - } - - /* Clear IRQ */ - p_instance_ctrl->p_reg->ADCMPBSR_b.CMPSTB = 0; - } - - /* Populate the context field. */ - args.p_context = p_instance_ctrl->p_context; - - /* If a callback was provided, call it with the argument */ - if (NULL != p_instance_ctrl->p_callback) - { - r_adc_call_callback(p_instance_ctrl, &args); - } - - R_BSP_IrqStatusClear(irq); - - /* Restore context if RTOS is used */ - FSP_CONTEXT_RESTORE; -} diff --git a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_gpt/r_gpt.c b/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_gpt/r_gpt.c deleted file mode 100644 index cc54467e55..0000000000 --- a/bsp/renesas/ra6m3-hmi-board/ra/fsp/src/r_gpt/r_gpt.c +++ /dev/null @@ -1,1830 +0,0 @@ -/*********************************************************************************************************************** - * Copyright [2020-2021] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. - * - * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products - * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are - * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use - * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property - * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas - * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION - * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT - * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR - * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM - * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION - * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, - * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, - * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY - * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. - **********************************************************************************************************************/ - -/*********************************************************************************************************************** - * Includes - **********************************************************************************************************************/ -#include "r_gpt.h" -#include "r_gpt_cfg.h" - -/*********************************************************************************************************************** - * Macro definitions - **********************************************************************************************************************/ - -/* "GPT" in ASCII, used to determine if channel is open. */ -#define GPT_OPEN (0x00475054ULL) - -#define GPT_PRV_GPTE_OR_GPTEH_CHANNEL_MASK (BSP_FEATURE_GPTEH_CHANNEL_MASK | \ - BSP_FEATURE_GPTE_CHANNEL_MASK) - -#define GPT_PRV_GTWP_RESET_VALUE (0xA500U) -#define GPT_PRV_GTWP_WRITE_PROTECT (0xA501U) - -#define GPT_PRV_GTIOR_STOP_LEVEL_BIT (6) -#define GPT_PRV_GTIOR_INITIAL_LEVEL_BIT (4) - -#define GPT_PRV_GTIO_HIGH_COMPARE_MATCH_LOW_CYCLE_END (0x6U) -#define GPT_PRV_GTIO_LOW_COMPARE_MATCH_HIGH_CYCLE_END (0x9U) - -#define GPT_PRV_GTIO_TOGGLE_COMPARE_MATCH (0x3U) - -#define GPT_PRV_GTBER_BUFFER_ENABLE_FORCE_TRANSFER (0x550000U) - -#define GPT_PRV_ENABLE_GROUP_SOFTWARE_UPDATE (0x80000000U) - -#define GPT_PRV_GTCCRA (0U) -#define GPT_PRV_GTCCRB (1U) -#define GPT_PRV_GTCCRC (2U) -#define GPT_PRV_GTCCRE (3U) -#define GPT_PRV_GTCCRD (4U) -#define GPT_PRV_GTCCRF (5U) - -/* GPT_CFG_OUTPUT_SUPPORT_ENABLE is set to 2 to enable extra features. */ -#define GPT_PRV_EXTRA_FEATURES_ENABLED (2U) - -#define R_GPT0_GTINTAD_ADTRAUEN_Pos (16U) - -/*********************************************************************************************************************** - * Typedef definitions - **********************************************************************************************************************/ - -/* Duty cycle mode. */ -typedef enum e_gpt_duty_cycle_mode -{ - GPT_DUTY_CYCLE_MODE_REGISTER = 0, // Duty cycle depends on compare match - GPT_DUTY_CYCLE_MODE_0_PERCENT = 2, // Output low - GPT_DUTY_CYCLE_MODE_100_PERCENT = 3, // Output high -} gpt_duty_cycle_mode_t; - -/* Count direction */ -typedef enum e_gpt_dir -{ - GPT_DIR_COUNT_DOWN = 0, - GPT_DIR_COUNT_UP = 1 -} gpt_dir_t; - -typedef struct st_gpt_prv_duty_registers -{ - uint32_t gtccr_buffer; - uint32_t omdty; -} gpt_prv_duty_registers_t; - -typedef enum e_gpt_prv_capture_event -{ - GPT_PRV_CAPTURE_EVENT_A, - GPT_PRV_CAPTURE_EVENT_B, -} gpt_prv_capture_event_t; - -#if defined(__ARMCC_VERSION) || defined(__ICCARM__) -typedef void (BSP_CMSE_NONSECURE_CALL * gpt_prv_ns_callback)(timer_callback_args_t * p_args); -#elif defined(__GNUC__) -typedef BSP_CMSE_NONSECURE_CALL void (*volatile gpt_prv_ns_callback)(timer_callback_args_t * p_args); -#endif - -/*********************************************************************************************************************** - * Private function prototypes - **********************************************************************************************************************/ -static void gpt_hardware_initialize(gpt_instance_ctrl_t * const p_instance_ctrl, timer_cfg_t const * const p_cfg); - -static void gpt_common_open(gpt_instance_ctrl_t * const p_instance_ctrl, timer_cfg_t const * const p_cfg); - -static uint32_t gpt_clock_frequency_get(gpt_instance_ctrl_t * const p_instance_ctrl); - -static void gpt_hardware_events_disable(gpt_instance_ctrl_t * p_instance_ctrl); - -static void r_gpt_disable_irq(IRQn_Type irq); - -static inline void r_gpt_write_protect_enable(gpt_instance_ctrl_t * const p_instance_ctrl, - uint32_t write_protect_setting); -static inline uint32_t r_gpt_write_protect_disable(gpt_instance_ctrl_t * const p_instance_ctrl); - -/* Noinline attribute added to reduce code size for CM23 GCC build. */ -static void r_gpt_enable_irq(IRQn_Type const irq, uint32_t priority, void * p_context) __attribute__((noinline)); - -#if GPT_CFG_OUTPUT_SUPPORT_ENABLE - -static void gpt_calculate_duty_cycle(gpt_instance_ctrl_t * const p_instance_ctrl, - uint32_t const duty_cycle_counts, - gpt_prv_duty_registers_t * p_duty_reg, - uint32_t pin); - -static uint32_t gpt_gtior_calculate(timer_cfg_t const * const p_cfg, gpt_pin_level_t const stop_level); - -#endif - -static void r_gpt_call_callback(gpt_instance_ctrl_t * p_ctrl, timer_event_t event, uint32_t capture); - -/*********************************************************************************************************************** - * ISR prototypes - **********************************************************************************************************************/ -void gpt_counter_overflow_isr(void); -void gpt_counter_underflow_isr(void); -void gpt_capture_a_isr(void); -void gpt_capture_b_isr(void); - -/*********************************************************************************************************************** - * Private global variables - **********************************************************************************************************************/ - -/*********************************************************************************************************************** - * Global Variables - **********************************************************************************************************************/ - -/* GPT implementation of timer interface */ -const timer_api_t g_timer_on_gpt = -{ - .open = R_GPT_Open, - .stop = R_GPT_Stop, - .start = R_GPT_Start, - .reset = R_GPT_Reset, - .enable = R_GPT_Enable, - .disable = R_GPT_Disable, - .periodSet = R_GPT_PeriodSet, - .dutyCycleSet = R_GPT_DutyCycleSet, - .infoGet = R_GPT_InfoGet, - .statusGet = R_GPT_StatusGet, - .callbackSet = R_GPT_CallbackSet, - .close = R_GPT_Close, -}; - -/*******************************************************************************************************************//** - * @addtogroup GPT - * @{ - **********************************************************************************************************************/ - -/*********************************************************************************************************************** - * Functions - **********************************************************************************************************************/ - -/*******************************************************************************************************************//** - * Initializes the timer module and applies configurations. Implements @ref timer_api_t::open. - * - * GPT hardware does not support one-shot functionality natively. When using one-shot mode, the timer will be stopped - * in an ISR after the requested period has elapsed. - * - * The GPT implementation of the general timer can accept a gpt_extended_cfg_t extension parameter. - * - * Example: - * @snippet r_gpt_example.c R_GPT_Open - * - * @retval FSP_SUCCESS Initialization was successful and timer has started. - * @retval FSP_ERR_ASSERTION A required input pointer is NULL or the source divider is invalid. - * @retval FSP_ERR_ALREADY_OPEN Module is already open. - * @retval FSP_ERR_IRQ_BSP_DISABLED timer_cfg_t::mode is ::TIMER_MODE_ONE_SHOT or timer_cfg_t::p_callback is not - * NULL, but ISR is not enabled. ISR must be enabled to use one-shot mode or - * callback. - * @retval FSP_ERR_INVALID_MODE Triangle wave PWM is only supported if GPT_CFG_OUTPUT_SUPPORT_ENABLE is 2. - * Selected channel does not support external count sources. - * @retval FSP_ERR_IP_CHANNEL_NOT_PRESENT The channel requested in the p_cfg parameter is not available on this device. - **********************************************************************************************************************/ -fsp_err_t R_GPT_Open (timer_ctrl_t * const p_ctrl, timer_cfg_t const * const p_cfg) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_cfg); - FSP_ASSERT(NULL != p_cfg->p_extend); - FSP_ASSERT(NULL != p_instance_ctrl); - - #if (2U == BSP_FEATURE_GPT_CLOCK_DIVIDER_STEP_SIZE) - #if (BSP_FEATURE_GPT_CLOCK_DIVIDER_VALUE_7_9_VALID) - FSP_ASSERT(p_cfg->source_div <= 10U); - #else - FSP_ASSERT((p_cfg->source_div != 7U) && (p_cfg->source_div != 9U) && (p_cfg->source_div <= 10)); - #endif - #else - FSP_ASSERT((0U == (p_cfg->source_div % 2U)) && (p_cfg->source_div <= 10)); - #endif - - #if GPT_PRV_EXTRA_FEATURES_ENABLED != GPT_CFG_OUTPUT_SUPPORT_ENABLE - FSP_ERROR_RETURN(p_cfg->mode <= TIMER_MODE_PWM, FSP_ERR_INVALID_MODE); - #endif - - FSP_ERROR_RETURN(GPT_OPEN != p_instance_ctrl->open, FSP_ERR_ALREADY_OPEN); -#endif - - p_instance_ctrl->channel_mask = 1U << p_cfg->channel; - -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ERROR_RETURN((p_instance_ctrl->channel_mask & BSP_FEATURE_GPT_VALID_CHANNEL_MASK), - FSP_ERR_IP_CHANNEL_NOT_PRESENT); - if ((p_cfg->p_callback) || (TIMER_MODE_ONE_SHOT == p_cfg->mode)) - { - FSP_ERROR_RETURN(p_cfg->cycle_end_irq >= 0, FSP_ERR_IRQ_BSP_DISABLED); - } - - gpt_extended_cfg_t * p_extend = (gpt_extended_cfg_t *) p_cfg->p_extend; - FSP_ERROR_RETURN((!p_extend->count_up_source && !p_extend->count_down_source) || - (BSP_FEATURE_GPT_EVENT_COUNT_CHANNEL_MASK & p_instance_ctrl->channel_mask), - FSP_ERR_INVALID_MODE); - - #if GPT_PRV_EXTRA_FEATURES_ENABLED == GPT_CFG_OUTPUT_SUPPORT_ENABLE - - /* Callback is required if underflow interrupt is enabled. */ - gpt_extended_pwm_cfg_t const * p_pwm_cfg = p_extend->p_pwm_cfg; - if (NULL != p_pwm_cfg) - { - if (p_pwm_cfg->trough_irq >= 0) - { - FSP_ASSERT(NULL != p_cfg->p_callback); - } - } - #endif -#endif - - /* Initialize control structure based on configurations. */ - gpt_common_open(p_instance_ctrl, p_cfg); - - gpt_hardware_initialize(p_instance_ctrl, p_cfg); - - p_instance_ctrl->open = GPT_OPEN; - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Stops timer. Implements @ref timer_api_t::stop. - * - * Example: - * @snippet r_gpt_example.c R_GPT_Stop - * - * @retval FSP_SUCCESS Timer successfully stopped. - * @retval FSP_ERR_ASSERTION p_ctrl was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - **********************************************************************************************************************/ -fsp_err_t R_GPT_Stop (timer_ctrl_t * const p_ctrl) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - - /* Stop timer */ - p_instance_ctrl->p_reg->GTSTP = p_instance_ctrl->channel_mask; - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Starts timer. Implements @ref timer_api_t::start. - * - * Example: - * @snippet r_gpt_example.c R_GPT_Start - * - * @retval FSP_SUCCESS Timer successfully started. - * @retval FSP_ERR_ASSERTION p_ctrl was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - **********************************************************************************************************************/ -fsp_err_t R_GPT_Start (timer_ctrl_t * const p_ctrl) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - - /* Start timer */ - p_instance_ctrl->p_reg->GTSTR = p_instance_ctrl->channel_mask; - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Resets the counter value to 0. Implements @ref timer_api_t::reset. - * - * @note This function also updates to the new period if no counter overflow has occurred since the last call to - * R_GPT_PeriodSet(). - * - * @retval FSP_SUCCESS Counter value written successfully. - * @retval FSP_ERR_ASSERTION p_ctrl was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - **********************************************************************************************************************/ -fsp_err_t R_GPT_Reset (timer_ctrl_t * const p_ctrl) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - - /* Clear timer counter. */ - p_instance_ctrl->p_reg->GTCLR = p_instance_ctrl->channel_mask; - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Enables external event triggers that start, stop, clear, or capture the counter. Implements @ref timer_api_t::enable. - * - * Example: - * @snippet r_gpt_example.c R_GPT_Enable - * - * @retval FSP_SUCCESS External events successfully enabled. - * @retval FSP_ERR_ASSERTION p_ctrl was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - **********************************************************************************************************************/ -fsp_err_t R_GPT_Enable (timer_ctrl_t * const p_ctrl) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - - /* Enable use of GTSTR, GTSTP, and GTCLR for this channel. */ - gpt_extended_cfg_t * p_extend = (gpt_extended_cfg_t *) p_instance_ctrl->p_cfg->p_extend; - uint32_t gtssr = GPT_PRV_ENABLE_GROUP_SOFTWARE_UPDATE; - uint32_t gtpsr = GPT_PRV_ENABLE_GROUP_SOFTWARE_UPDATE; - uint32_t gtcsr = GPT_PRV_ENABLE_GROUP_SOFTWARE_UPDATE; - - /* OR with user settings. */ - gtssr |= p_extend->start_source; - gtpsr |= p_extend->stop_source; - gtcsr |= p_extend->clear_source; - - uint32_t wp = r_gpt_write_protect_disable(p_instance_ctrl); - - /* Set the count sources. Ensure stop and clear sources are set before start source, and capture sources are set - * after start source. */ - p_instance_ctrl->p_reg->GTPSR = gtpsr; - p_instance_ctrl->p_reg->GTCSR = gtcsr; - p_instance_ctrl->p_reg->GTSSR = gtssr; - p_instance_ctrl->p_reg->GTICASR = p_extend->capture_a_source; - p_instance_ctrl->p_reg->GTICBSR = p_extend->capture_b_source; - - r_gpt_write_protect_enable(p_instance_ctrl, wp | GPT_PRV_GTWP_RESET_VALUE); - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Disables external event triggers that start, stop, clear, or capture the counter. Implements @ref timer_api_t::disable. - * - * @note The timer could be running after R_GPT_Disable(). To ensure it is stopped, call R_GPT_Stop(). - * - * Example: - * @snippet r_gpt_example.c R_GPT_Disable - * - * @retval FSP_SUCCESS External events successfully disabled. - * @retval FSP_ERR_ASSERTION p_ctrl was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - **********************************************************************************************************************/ -fsp_err_t R_GPT_Disable (timer_ctrl_t * const p_ctrl) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - - uint32_t wp = r_gpt_write_protect_disable(p_instance_ctrl); - - gpt_hardware_events_disable(p_instance_ctrl); - - r_gpt_write_protect_enable(p_instance_ctrl, wp | GPT_PRV_GTWP_RESET_VALUE); - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Sets period value provided. If the timer is running, the period will be updated after the next counter overflow. - * If the timer is stopped, this function resets the counter and updates the period. - * Implements @ref timer_api_t::periodSet. - * - * @warning If periodic output is used, the duty cycle buffer registers are updated after the period buffer register. - * If this function is called while the timer is running and a GPT overflow occurs during processing, the duty cycle - * will not be the desired 50% duty cycle until the counter overflow after processing completes. - * - * Example: - * @snippet r_gpt_example.c R_GPT_PeriodSet - * - * @retval FSP_SUCCESS Period value written successfully. - * @retval FSP_ERR_ASSERTION p_ctrl was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - **********************************************************************************************************************/ -fsp_err_t R_GPT_PeriodSet (timer_ctrl_t * const p_ctrl, uint32_t const period_counts) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - - uint32_t wp = r_gpt_write_protect_disable(p_instance_ctrl); - - /* Update period buffer register. The actual period is one cycle longer than the register value for saw waves - * and twice the register value for triangle waves. Reference section 23.2.21 "General PWM Timer Cycle Setting - * Register (GTPR)". The setting passed to the configuration is expected to be half the desired period for - * triangle waves. */ - uint32_t new_gtpr = period_counts - 1U; -#if GPT_PRV_EXTRA_FEATURES_ENABLED == GPT_CFG_OUTPUT_SUPPORT_ENABLE - if (p_instance_ctrl->p_cfg->mode >= TIMER_MODE_TRIANGLE_WAVE_SYMMETRIC_PWM) - { - new_gtpr = period_counts; - } -#endif - - p_instance_ctrl->p_reg->GTPBR = new_gtpr; - -#if GPT_CFG_OUTPUT_SUPPORT_ENABLE - - /* Set a 50% duty cycle so the period of the waveform on the output pin matches the requested period. */ - if (TIMER_MODE_PERIODIC == p_instance_ctrl->p_cfg->mode) - { - /* The GTIOCA/GTIOCB pins transition 1 cycle after compare match when buffer operation is used. Reference - * Figure 23.34 "Example setting for saw-wave PWM mode" in the RA6M3 manual R01UH0886EJ0100. To get a duty cycle - * as close to 50% as possible, duty cycle (register) = (period (counts) / 2) - 1. */ - uint32_t duty_cycle_50_percent = (period_counts >> 1) - 1U; - p_instance_ctrl->p_reg->GTCCR[GPT_PRV_GTCCRC] = duty_cycle_50_percent; - p_instance_ctrl->p_reg->GTCCR[GPT_PRV_GTCCRE] = duty_cycle_50_percent; - } -#endif - - /* If the counter is not counting, update period register and reset counter. */ - if (0U == p_instance_ctrl->p_reg->GTCR_b.CST) - { - p_instance_ctrl->p_reg->GTPR = new_gtpr; - -#if GPT_CFG_OUTPUT_SUPPORT_ENABLE - p_instance_ctrl->p_reg->GTBER = GPT_PRV_GTBER_BUFFER_ENABLE_FORCE_TRANSFER; -#endif - - p_instance_ctrl->p_reg->GTCLR = p_instance_ctrl->channel_mask; - } - - r_gpt_write_protect_enable(p_instance_ctrl, wp | GPT_PRV_GTWP_RESET_VALUE); - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Sets duty cycle on requested pin. Implements @ref timer_api_t::dutyCycleSet. - * - * Duty cycle is updated in the buffer register. The updated duty cycle is reflected after the next cycle end (counter - * overflow). - * - * Example: - * @snippet r_gpt_example.c R_GPT_DutyCycleSet - * - * @param[in] p_ctrl Pointer to instance control block. - * @param[in] duty_cycle_counts Duty cycle to set in counts. - * @param[in] pin Use gpt_io_pin_t to select GPT_IO_PIN_GTIOCA or GPT_IO_PIN_GTIOCB - * - * @retval FSP_SUCCESS Duty cycle updated successfully. - * @retval FSP_ERR_ASSERTION p_ctrl was NULL or the pin is not one of gpt_io_pin_t - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - * @retval FSP_ERR_INVALID_ARGUMENT Duty cycle is larger than period. - * @retval FSP_ERR_INVALID_MODE GPT_IO_PIN_TROUGH, and GPT_IO_PIN_CREST settings are invalid in the this mode. - * @retval FSP_ERR_UNSUPPORTED GPT_CFG_OUTPUT_SUPPORT_ENABLE is 0. - **********************************************************************************************************************/ -fsp_err_t R_GPT_DutyCycleSet (timer_ctrl_t * const p_ctrl, uint32_t const duty_cycle_counts, uint32_t const pin) -{ -#if GPT_CFG_OUTPUT_SUPPORT_ENABLE - uint32_t tmp_pin = pin & 3U; - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; - #if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ASSERT(tmp_pin <= GPT_IO_PIN_GTIOCA_AND_GTIOCB); - bool pwm_mode3_pin = 0 != (pin & (GPT_IO_PIN_CREST | GPT_IO_PIN_TROUGH)); - if (TIMER_MODE_TRIANGLE_WAVE_ASYMMETRIC_PWM_MODE3 == p_instance_ctrl->p_cfg->mode) - { - /* In TIMER_MODE_TRIANGLE_WAVE_ASYMMETRIC_PWM_MODE3, the duty cycle must be for either a trough or crest. */ - FSP_ERROR_RETURN(pwm_mode3_pin, FSP_ERR_INVALID_MODE); - } - else - { - FSP_ERROR_RETURN(!pwm_mode3_pin, FSP_ERR_INVALID_MODE); - } - - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); - FSP_ERROR_RETURN(duty_cycle_counts <= (p_instance_ctrl->p_reg->GTPR + 1), FSP_ERR_INVALID_ARGUMENT); - #endif - - /* Set duty cycle. */ - gpt_prv_duty_registers_t duty_regs = {UINT32_MAX, 0}; - - gpt_calculate_duty_cycle(p_instance_ctrl, duty_cycle_counts, &duty_regs, pin); - - uint32_t wp = r_gpt_write_protect_disable(p_instance_ctrl); - - /* Read modify write bitfield access is used to update GTUDDTYC to make sure we don't clobber settings for the - * other pin. */ - uint32_t gtuddtyc = p_instance_ctrl->p_reg->GTUDDTYC; - - /* Only update GTCCR if 0% or 100% duty is not requested */ - if (!duty_regs.omdty) - { - uint32_t reg_offset = 2U; - if (0 != (pin & GPT_IO_PIN_CREST)) - { - /* - * In TIMER_MODE_TRIANGLE_WAVE_ASYMMETRIC_PWM_MODE3, if this is a crest duty cycle, then update the crest - * duty cycle register. Otherwise, update the trough duty cycle register. - */ - reg_offset = 4U; - } - - if (0 != (pin & GPT_IO_PIN_GTIOCA_AND_GTIOCB)) - { - p_instance_ctrl->p_reg->GTCCR[reg_offset] = duty_regs.gtccr_buffer; - p_instance_ctrl->p_reg->GTCCR[reg_offset + 1] = duty_regs.gtccr_buffer; - } - else - { - p_instance_ctrl->p_reg->GTCCR[tmp_pin + reg_offset] = duty_regs.gtccr_buffer; - } - } - - if (GPT_IO_PIN_GTIOCB != tmp_pin) - { - /* GTIOCA or both GTIOCA and GTIOCB. */ - gtuddtyc &= ~R_GPT0_GTUDDTYC_OADTY_Msk; - gtuddtyc |= duty_regs.omdty << R_GPT0_GTUDDTYC_OADTY_Pos; - } - - if ((GPT_IO_PIN_GTIOCA_AND_GTIOCB == pin) && duty_regs.omdty) - { - /* When setting both pins to 0%/100% duty recalculate OBDTY before setting */ - gpt_calculate_duty_cycle(p_instance_ctrl, duty_cycle_counts, &duty_regs, GPT_IO_PIN_GTIOCB); - } - - if (GPT_IO_PIN_GTIOCA != tmp_pin) - { - /* GTIOCB or both GTIOCA and GTIOCB. */ - gtuddtyc &= ~R_GPT0_GTUDDTYC_OBDTY_Msk; - gtuddtyc |= duty_regs.omdty << R_GPT0_GTUDDTYC_OBDTY_Pos; - } - - p_instance_ctrl->p_reg->GTUDDTYC = gtuddtyc; - - r_gpt_write_protect_enable(p_instance_ctrl, wp | GPT_PRV_GTWP_RESET_VALUE); - - return FSP_SUCCESS; -#else - FSP_PARAMETER_NOT_USED(p_ctrl); - FSP_PARAMETER_NOT_USED(duty_cycle_counts); - FSP_PARAMETER_NOT_USED(pin); - - FSP_RETURN(FSP_ERR_UNSUPPORTED); -#endif -} - -/*******************************************************************************************************************//** - * Get timer information and store it in provided pointer p_info. Implements @ref timer_api_t::infoGet. - * - * Example: - * @snippet r_gpt_example.c R_GPT_InfoGet - * - * @retval FSP_SUCCESS Period, count direction, frequency, and ELC event written to caller's - * structure successfully. - * @retval FSP_ERR_ASSERTION p_ctrl or p_info was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - **********************************************************************************************************************/ -fsp_err_t R_GPT_InfoGet (timer_ctrl_t * const p_ctrl, timer_info_t * const p_info) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ASSERT(NULL != p_info); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - - /* Get and store period */ - uint32_t gtpr = p_instance_ctrl->p_reg->GTPR; - uint32_t period_counts = gtpr + 1; -#if GPT_PRV_EXTRA_FEATURES_ENABLED == GPT_CFG_OUTPUT_SUPPORT_ENABLE - if (p_instance_ctrl->p_cfg->mode >= TIMER_MODE_TRIANGLE_WAVE_SYMMETRIC_PWM) - { - period_counts = gtpr; - } -#endif - p_info->period_counts = period_counts; - - /* Get and store clock frequency */ - p_info->clock_frequency = gpt_clock_frequency_get(p_instance_ctrl); - - /* Get and store clock counting direction. Read count direction setting */ - p_info->count_direction = TIMER_DIRECTION_UP; - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Get current timer status and store it in provided pointer p_status. Implements @ref timer_api_t::statusGet. - * - * Example: - * @snippet r_gpt_example.c R_GPT_StatusGet - * - * @retval FSP_SUCCESS Current timer state and counter value set successfully. - * @retval FSP_ERR_ASSERTION p_ctrl or p_status was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - **********************************************************************************************************************/ -fsp_err_t R_GPT_StatusGet (timer_ctrl_t * const p_ctrl, timer_status_t * const p_status) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ASSERT(NULL != p_status); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - - /* Get counter state. */ - p_status->state = (timer_state_t) p_instance_ctrl->p_reg->GTCR_b.CST; - - /* Get counter value */ - p_status->counter = p_instance_ctrl->p_reg->GTCNT; - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Set counter value. - * - * @note Do not call this API while the counter is counting. The counter value can only be updated while the counter - * is stopped. - * - * @retval FSP_SUCCESS Counter value updated. - * @retval FSP_ERR_ASSERTION p_ctrl or p_status was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - * @retval FSP_ERR_IN_USE The timer is running. Stop the timer before calling this function. - **********************************************************************************************************************/ -fsp_err_t R_GPT_CounterSet (timer_ctrl_t * const p_ctrl, uint32_t counter) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); - FSP_ERROR_RETURN(0U == p_instance_ctrl->p_reg->GTCR_b.CST, FSP_ERR_IN_USE); -#endif - - uint32_t wp = r_gpt_write_protect_disable(p_instance_ctrl); - - /* Set counter value */ - p_instance_ctrl->p_reg->GTCNT = counter; - - r_gpt_write_protect_enable(p_instance_ctrl, wp | GPT_PRV_GTWP_RESET_VALUE); - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Enable output for GTIOCA and/or GTIOCB. - * - * @retval FSP_SUCCESS Output is enabled. - * @retval FSP_ERR_ASSERTION p_ctrl or p_status was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - **********************************************************************************************************************/ -fsp_err_t R_GPT_OutputEnable (timer_ctrl_t * const p_ctrl, gpt_io_pin_t pin) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - - uint32_t wp = r_gpt_write_protect_disable(p_instance_ctrl); - - uint32_t gtior = p_instance_ctrl->p_reg->GTIOR; - if (GPT_IO_PIN_GTIOCB != pin) - { - /* GTIOCA or both GTIOCA and GTIOCB. */ - gtior |= R_GPT0_GTIOR_OAE_Msk; - } - - if (GPT_IO_PIN_GTIOCA != pin) - { - /* GTIOCB or both GTIOCA and GTIOCB. */ - gtior |= R_GPT0_GTIOR_OBE_Msk; - } - - p_instance_ctrl->p_reg->GTIOR = gtior; - - r_gpt_write_protect_enable(p_instance_ctrl, wp | GPT_PRV_GTWP_RESET_VALUE); - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Disable output for GTIOCA and/or GTIOCB. - * - * @retval FSP_SUCCESS Output is disabled. - * @retval FSP_ERR_ASSERTION p_ctrl or p_status was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - **********************************************************************************************************************/ -fsp_err_t R_GPT_OutputDisable (timer_ctrl_t * const p_ctrl, gpt_io_pin_t pin) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - - uint32_t wp = r_gpt_write_protect_disable(p_instance_ctrl); - - uint32_t gtior = p_instance_ctrl->p_reg->GTIOR; - if (GPT_IO_PIN_GTIOCB != pin) - { - /* GTIOCA or both GTIOCA and GTIOCB. */ - gtior &= ~R_GPT0_GTIOR_OAE_Msk; - } - - if (GPT_IO_PIN_GTIOCA != pin) - { - /* GTIOCB or both GTIOCA and GTIOCB. */ - gtior &= ~R_GPT0_GTIOR_OBE_Msk; - } - - p_instance_ctrl->p_reg->GTIOR = gtior; - - r_gpt_write_protect_enable(p_instance_ctrl, wp | GPT_PRV_GTWP_RESET_VALUE); - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Set A/D converter start request compare match value. - * - * @retval FSP_SUCCESS Counter value updated. - * @retval FSP_ERR_ASSERTION p_ctrl or p_status was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - **********************************************************************************************************************/ -fsp_err_t R_GPT_AdcTriggerSet (timer_ctrl_t * const p_ctrl, - gpt_adc_compare_match_t which_compare_match, - uint32_t compare_match_value) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - - uint32_t wp = r_gpt_write_protect_disable(p_instance_ctrl); - - /* Set A/D converter start request compare match value. */ - volatile uint32_t * p_gtadtr = &p_instance_ctrl->p_reg->GTADTRA; - p_gtadtr[which_compare_match] = compare_match_value; - - r_gpt_write_protect_enable(p_instance_ctrl, wp | GPT_PRV_GTWP_RESET_VALUE); - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Set the Output Delay setting for the PWM output pin. - * - * @retval FSP_SUCCESS The output delay was set. - * @retval FSP_ERR_ASSERTION An input parameter was invalid. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - * @retval FSP_ERR_INVALID_CHANNEL The channel does not support this feature. - * @retval FSP_ERR_NOT_INITIALIZED The PWM Output Delay Circuit has not been initialized. - * @retval FSP_ERR_INVALID_STATE The PWM Output Delay setting cannot be updated in the current state. - * @retval FSP_ERR_UNSUPPORTED This feature is not supported on this MCU. - **********************************************************************************************************************/ -fsp_err_t R_GPT_PwmOutputDelaySet (timer_ctrl_t * const p_ctrl, - gpt_pwm_output_delay_edge_t edge, - gpt_pwm_output_delay_setting_t delay_setting, - uint32_t const pin) -{ -#if 0U != BSP_FEATURE_GPT_ODC_VALID_CHANNEL_MASK && GPT_CFG_OUTPUT_SUPPORT_ENABLE - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; - - #if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); - FSP_ERROR_RETURN(0U != (BSP_FEATURE_GPT_ODC_VALID_CHANNEL_MASK & p_instance_ctrl->channel_mask), - FSP_ERR_INVALID_CHANNEL); - FSP_ERROR_RETURN(0U != (R_GPT_ODC->GTDLYCR1 & R_GPT_ODC_GTDLYCR1_DLLEN_Msk), FSP_ERR_NOT_INITIALIZED); - - if (TIMER_MODE_PWM == p_instance_ctrl->p_cfg->mode) - { - /* In Saw-wave mode, do not change the settings for the delay while the compare-match value is greater than or - * equal to GTPR - 2. */ - uint32_t gtpr = p_instance_ctrl->p_reg->GTPR; - uint32_t compare_match = p_instance_ctrl->p_reg->GTCCR[GPT_PRV_GTCCRC + pin]; - FSP_ERROR_RETURN(gtpr - 2 > compare_match, FSP_ERR_INVALID_STATE); - } - else - { - uint32_t compare_match; - if (TIMER_MODE_TRIANGLE_WAVE_ASYMMETRIC_PWM_MODE3 == p_instance_ctrl->p_cfg->mode) - { - /* In TIMER_MODE_TRIANGLE_WAVE_ASYMMETRIC_PWM_MODE3, the trough compare match value is set in - * GTCCRD, and GTCCRF. */ - compare_match = p_instance_ctrl->p_reg->GTCCR[GPT_PRV_GTCCRD + pin]; - } - else - { - /* In TIMER_MODE_TRIANGLE_WAVE_ASYMMETRIC_PWM and TIMER_MODE_TRIANGLE_WAVE_SYMMETRIC_PWM, the trough compare match value is - * set in GTCCRC, and GTCCRE. */ - compare_match = p_instance_ctrl->p_reg->GTCCR[GPT_PRV_GTCCRC + pin]; - } - - timer_direction_t count_direction = (timer_direction_t) p_instance_ctrl->p_reg->GTST_b.TUCF; - - /* In Triangle-wave mode, do not change the settings for the delay while the counter if going down and the compare-match - * value is less than or equal to 2. */ - FSP_ERROR_RETURN(TIMER_DIRECTION_DOWN != count_direction || 2 < compare_match, FSP_ERR_INVALID_STATE); - } - #endif - - FSP_CRITICAL_SECTION_DEFINE; - - if (GPT_PWM_OUTPUT_DELAY_SETTING_BYPASS == delay_setting) - { - /* Enter a critical section in order to ensure that multiple GPT channels don't access the common - * register simultaneously. */ - FSP_CRITICAL_SECTION_ENTER; - - #if GPT_CFG_WRITE_PROTECT_ENABLE - - /* GTDLYCR2 is protected by R_GPT::GTWP. */ - uint32_t wp = R_GPT0->GTWP; - R_GPT0->GTWP = GPT_PRV_GTWP_RESET_VALUE; - R_GPT0->GTWP; - #endif - - /* Enable the Delay Generation Circuit bypass. */ - R_GPT_ODC->GTDLYCR2 &= (uint16_t) (~p_instance_ctrl->channel_mask & UINT16_MAX); - - #if GPT_CFG_WRITE_PROTECT_ENABLE - - /* Restore the previous value of GTWP. */ - R_GPT0->GTWP = wp | GPT_PRV_GTWP_RESET_VALUE; - #endif - - FSP_CRITICAL_SECTION_EXIT; - } - else - { - /* Calculate the offset for the register than needs to be set. */ - uint32_t channel_offset = sizeof(uint32_t) * p_instance_ctrl->p_cfg->channel; - uint32_t pin_offset = - (uint32_t) ((uint32_t) &R_GPT_ODC->GTDLYR[0].B - (uint32_t) &R_GPT_ODC->GTDLYR[0].A) * pin; - uint32_t edge_offset = - (uint32_t) ((uint32_t) &R_GPT_ODC->GTDLYF[0].A - (uint32_t) &R_GPT_ODC->GTDLYR[0].A) * edge; - uint16_t * p_gtdlyfnx = - (uint16_t *) ((uint32_t) &R_GPT_ODC->GTDLYR[0].A + channel_offset + pin_offset + edge_offset); - - /* Unprotect the delay setting register. */ - uint32_t wp = r_gpt_write_protect_disable(p_instance_ctrl); - - /* Write the delay setting to the register. */ - *p_gtdlyfnx = (uint16_t) delay_setting; - - /* Restore the previous value of GTWP. */ - r_gpt_write_protect_enable(p_instance_ctrl, wp | GPT_PRV_GTWP_RESET_VALUE); - - /* Check if the channel has already been enabled. */ - if (0U == (R_GPT_ODC->GTDLYCR2 & p_instance_ctrl->channel_mask)) - { - /* Enter a critical section in order to ensure that multiple GPT channels don't access the common - * register simultaneously. */ - FSP_CRITICAL_SECTION_ENTER; - - #if GPT_CFG_WRITE_PROTECT_ENABLE - - /* GTDLYCR2 is protected by R_GPT::GTWP. */ - wp = R_GPT0->GTWP; - R_GPT0->GTWP = GPT_PRV_GTWP_RESET_VALUE; - R_GPT0->GTWP; - #endif - - /* Disable the Delay Generation Circuit bypass. */ - R_GPT_ODC->GTDLYCR2 |= (uint16_t) p_instance_ctrl->channel_mask; - - #if GPT_CFG_WRITE_PROTECT_ENABLE - - /* Restore the previous value of GTWP. */ - R_GPT0->GTWP = wp | GPT_PRV_GTWP_RESET_VALUE; - #endif - - FSP_CRITICAL_SECTION_EXIT; - } - } - - return FSP_SUCCESS; -#else - FSP_PARAMETER_NOT_USED(p_ctrl); - FSP_PARAMETER_NOT_USED(edge); - FSP_PARAMETER_NOT_USED(delay_setting); - FSP_PARAMETER_NOT_USED(pin); - - return FSP_ERR_UNSUPPORTED; -#endif -} - -/*******************************************************************************************************************//** - * Updates the user callback with the option to provide memory for the callback argument structure. - * Implements @ref timer_api_t::callbackSet. - * - * @retval FSP_SUCCESS Callback updated successfully. - * @retval FSP_ERR_ASSERTION A required pointer is NULL. - * @retval FSP_ERR_NOT_OPEN The control block has not been opened. - * @retval FSP_ERR_NO_CALLBACK_MEMORY p_callback is non-secure and p_callback_memory is either secure or NULL. - **********************************************************************************************************************/ -fsp_err_t R_GPT_CallbackSet (timer_ctrl_t * const p_api_ctrl, - void ( * p_callback)(timer_callback_args_t *), - void const * const p_context, - timer_callback_args_t * const p_callback_memory) -{ - gpt_instance_ctrl_t * p_ctrl = (gpt_instance_ctrl_t *) p_api_ctrl; - -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(p_ctrl); - FSP_ASSERT(p_callback); - FSP_ERROR_RETURN(GPT_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - -#if BSP_TZ_SECURE_BUILD - - /* Get security state of p_callback */ - bool callback_is_secure = - (NULL == cmse_check_address_range((void *) p_callback, sizeof(void *), CMSE_AU_NONSECURE)); - - #if GPT_CFG_PARAM_CHECKING_ENABLE - - /* In secure projects, p_callback_memory must be provided in non-secure space if p_callback is non-secure */ - timer_callback_args_t * const p_callback_memory_checked = cmse_check_pointed_object(p_callback_memory, - CMSE_AU_NONSECURE); - FSP_ERROR_RETURN(callback_is_secure || (NULL != p_callback_memory_checked), FSP_ERR_NO_CALLBACK_MEMORY); - #endif -#endif - - /* Store callback and context */ -#if BSP_TZ_SECURE_BUILD - p_ctrl->p_callback = callback_is_secure ? p_callback : - (void (*)(timer_callback_args_t *))cmse_nsfptr_create(p_callback); -#else - p_ctrl->p_callback = p_callback; -#endif - p_ctrl->p_context = p_context; - p_ctrl->p_callback_memory = p_callback_memory; - - return FSP_SUCCESS; -} - -/*******************************************************************************************************************//** - * Stops counter, disables output pins, and clears internal driver data. Implements @ref timer_api_t::close. - * - * @retval FSP_SUCCESS Successful close. - * @retval FSP_ERR_ASSERTION p_ctrl was NULL. - * @retval FSP_ERR_NOT_OPEN The instance is not opened. - **********************************************************************************************************************/ -fsp_err_t R_GPT_Close (timer_ctrl_t * const p_ctrl) -{ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) p_ctrl; - fsp_err_t err = FSP_SUCCESS; - -#if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ASSERT(NULL != p_instance_ctrl); - FSP_ERROR_RETURN(GPT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); -#endif - - /* Disable interrupts. */ - gpt_extended_cfg_t * p_extend = (gpt_extended_cfg_t *) p_instance_ctrl->p_cfg->p_extend; - r_gpt_disable_irq(p_instance_ctrl->p_cfg->cycle_end_irq); - r_gpt_disable_irq(p_extend->capture_a_irq); - r_gpt_disable_irq(p_extend->capture_b_irq); -#if GPT_PRV_EXTRA_FEATURES_ENABLED == GPT_CFG_OUTPUT_SUPPORT_ENABLE - gpt_extended_pwm_cfg_t const * p_pwm_cfg = p_extend->p_pwm_cfg; - if (NULL != p_pwm_cfg) - { - r_gpt_disable_irq(p_pwm_cfg->trough_irq); - } -#endif - - /* Clear open flag. */ - p_instance_ctrl->open = 0U; - - uint32_t wp = r_gpt_write_protect_disable(p_instance_ctrl); - - /* Stop counter. */ - p_instance_ctrl->p_reg->GTSTP = p_instance_ctrl->channel_mask; - - /* Disable output. */ - p_instance_ctrl->p_reg->GTIOR = 0U; - - r_gpt_write_protect_enable(p_instance_ctrl, wp | GPT_PRV_GTWP_RESET_VALUE); - - return err; -} - -/*******************************************************************************************************************//** - * Initialize the PWM Delay Generation Circuit (PDG). - * This function must be called before calling @ref R_GPT_PwmOutputDelaySet. - * - * @note This function will delay for 20 microseconds. - * - * @retval FSP_SUCCESS Initialization sequence completed successfully. - * @retval FSP_ERR_INVALID_STATE The source clock frequnecy is out of the required range for the PDG. - * @retval FSP_ERR_UNSUPPORTED This feature is not supported. - **********************************************************************************************************************/ -fsp_err_t R_GPT_PwmOutputDelayInitialize () -{ -#if 0U != BSP_FEATURE_GPT_ODC_VALID_CHANNEL_MASK && GPT_CFG_OUTPUT_SUPPORT_ENABLE - #if BSP_FEATURE_GPT_ODC_FRANGE_FREQ_MIN > 0 || GPT_CFG_PARAM_CHECKING_ENABLE - #if BSP_FEATURE_BSP_HAS_GPT_CLOCK && BSP_CFG_GPT_CLOCK_BYPASS == 0 - - /* Calculate the GPTCK Divider. */ - uint32_t divider = R_SYSTEM->GPTCKDIVCR; - - if (0U == divider) - { - divider = 1U; - } - else - { - divider *= 2U; - } - - /* Calculate the GPTCK Frequency. */ - uint32_t gpt_frequency = R_BSP_SourceClockHzGet((fsp_priv_source_clock_t) R_SYSTEM->GPTCKCR_b.GPTCKSEL) / divider; - #else - - /* Calculate the PCLKD Frequency. */ - uint32_t gpt_frequency = R_FSP_SystemClockHzGet(FSP_PRIV_CLOCK_PCLKD); - #endif - #endif - - #if GPT_CFG_PARAM_CHECKING_ENABLE - FSP_ERROR_RETURN(BSP_FEATURE_GPT_ODC_FREQ_MAX >= gpt_frequency, FSP_ERR_INVALID_STATE); - FSP_ERROR_RETURN(BSP_FEATURE_GPT_ODC_FREQ_MIN <= gpt_frequency, FSP_ERR_INVALID_STATE); - #endif - - uint32_t gtdlycr1 = R_GPT_ODC_GTDLYCR1_DLYRST_Msk; - - #if BSP_FEATURE_GPT_ODC_FRANGE_FREQ_MIN > 0 - if (BSP_FEATURE_GPT_ODC_FRANGE_FREQ_MIN >= gpt_frequency) - { - gtdlycr1 |= R_GPT_ODC_GTDLYCR1_FRANGE_Msk; - } - #endif - - #if BSP_FEATURE_BSP_HAS_GPT_CLOCK && GPT_CFG_GPTCLK_BYPASS - - /* Bypass the GPTCLK. GPT instances will use PCLKD as the GPT Core clock. */ - R_GPT_GTCLK->GTCLKCR = 1U; - #endif - - /* Cancel the module-stop state for the PDG. */ - R_BSP_MODULE_START(FSP_IP_GPT, 0); - - #if GPT_CFG_WRITE_PROTECT_ENABLE - - /* Disable write protection for GPT registers if they are protected. */ - R_GPT0->GTWP = GPT_PRV_GTWP_RESET_VALUE; - R_GPT0->GTWP; - #endif - - /* Reset the PWM Delay Generation Circuit. */ - R_GPT_ODC->GTDLYCR1 = (uint16_t) gtdlycr1; - R_GPT_ODC->GTDLYCR2 = 0; - - /* Enable the DLL. */ - R_GPT_ODC->GTDLYCR1 = (uint16_t) (gtdlycr1 | R_GPT_ODC_GTDLYCR1_DLLEN_Msk); - - /* Wait for the DLL to be enabled. */ - R_BSP_SoftwareDelay(20, BSP_DELAY_UNITS_MICROSECONDS); - - /* Release the PWM Delay Generation Circuit from reset. */ - R_GPT_ODC->GTDLYCR1 &= (uint16_t) ~R_GPT_ODC_GTDLYCR1_DLYRST_Msk; - - #if GPT_CFG_WRITE_PROTECT_ENABLE - - /* Re-enable write protection for GPT registers. */ - R_GPT0->GTWP = GPT_PRV_GTWP_WRITE_PROTECT; - #endif - - return FSP_SUCCESS; -#else - - return FSP_ERR_UNSUPPORTED; -#endif -} - -/** @} (end addtogroup GPT) */ - -/*******************************************************************************************************************//** - * Private Functions - **********************************************************************************************************************/ - -/*******************************************************************************************************************//** - * Enables write protection. - * - * @param[in] p_instance_ctrl Instance control block. - * @param[in] write_protect_setting The value of GTWP prior to being cleared. - **********************************************************************************************************************/ -static inline void r_gpt_write_protect_enable (gpt_instance_ctrl_t * const p_instance_ctrl, - uint32_t write_protect_setting) -{ -#if GPT_CFG_WRITE_PROTECT_ENABLE - p_instance_ctrl->p_reg->GTWP = write_protect_setting; -#else - FSP_PARAMETER_NOT_USED(p_instance_ctrl); - FSP_PARAMETER_NOT_USED(write_protect_setting); -#endif -} - -/*******************************************************************************************************************//** - * Disables write protection. - * - * @param[in] p_instance_ctrl Instance control block. - **********************************************************************************************************************/ -static inline uint32_t r_gpt_write_protect_disable (gpt_instance_ctrl_t * const p_instance_ctrl) -{ -#if GPT_CFG_WRITE_PROTECT_ENABLE - uint32_t write_protect_setting = p_instance_ctrl->p_reg->GTWP; - p_instance_ctrl->p_reg->GTWP = GPT_PRV_GTWP_RESET_VALUE; - - return write_protect_setting; -#else - FSP_PARAMETER_NOT_USED(p_instance_ctrl); - - return 0U; -#endif -} - -/*******************************************************************************************************************//** - * Initializes control structure based on configuration. - * - * @param[in] p_instance_ctrl Instance control block. - * @param[in] p_cfg Pointer to timer configuration. - **********************************************************************************************************************/ -static void gpt_common_open (gpt_instance_ctrl_t * const p_instance_ctrl, timer_cfg_t const * const p_cfg) -{ - /* Initialize control structure. */ - p_instance_ctrl->p_cfg = p_cfg; - - /* If callback is not null or timer mode is one shot, make sure the IRQ is enabled and store callback in the - * control block. - * @note The GPT hardware does not support one-shot mode natively. To support one-shot mode, the timer will be - * stopped and cleared using software in the ISR. *//* Determine if this is a 32-bit or a 16-bit timer. */ - p_instance_ctrl->variant = TIMER_VARIANT_16_BIT; - if (0U != (p_instance_ctrl->channel_mask & BSP_FEATURE_GPT_32BIT_CHANNEL_MASK)) - { - p_instance_ctrl->variant = TIMER_VARIANT_32_BIT; - } - - /* Save register base address. */ - uint32_t base_address = (uint32_t) R_GPT0 + (p_cfg->channel * ((uint32_t) R_GPT1 - (uint32_t) R_GPT0)); - p_instance_ctrl->p_reg = (R_GPT0_Type *) base_address; - - /* Set callback and context pointers, if configured */ - p_instance_ctrl->p_callback = p_cfg->p_callback; - p_instance_ctrl->p_context = p_cfg->p_context; - p_instance_ctrl->p_callback_memory = NULL; -} - -/*******************************************************************************************************************//** - * Performs hardware initialization of the GPT. - * - * @param[in] p_instance_ctrl Instance control block. - * @param[in] p_cfg Pointer to timer configuration. - **********************************************************************************************************************/ -static void gpt_hardware_initialize (gpt_instance_ctrl_t * const p_instance_ctrl, timer_cfg_t const * const p_cfg) -{ - /* Save pointer to extended configuration structure. */ - gpt_extended_cfg_t * p_extend = (gpt_extended_cfg_t *) p_cfg->p_extend; - -#if BSP_FEATURE_BSP_HAS_GPT_CLOCK && GPT_CFG_GPTCLK_BYPASS - - /* Bypass the GPTCLK. GPT instances will use PCLKD as the GPT Core clock. */ - R_GPT_GTCLK->GTCLKCR = 1U; -#endif - - /* Power on GPT before setting any hardware registers. Make sure the counter is stopped before setting mode - * register, PCLK divisor register, and counter register. */ - R_BSP_MODULE_START(FSP_IP_GPT, p_cfg->channel); - -#if GPT_CFG_OUTPUT_SUPPORT_ENABLE - if (0U != (BSP_FEATURE_GPT_ODC_VALID_CHANNEL_MASK & p_instance_ctrl->channel_mask)) - { - /* Enter a critical section in order to ensure that multiple GPT channels don't access the common - * register simultaneously. */ - FSP_CRITICAL_SECTION_DEFINE; - FSP_CRITICAL_SECTION_ENTER; - - #if GPT_CFG_WRITE_PROTECT_ENABLE - - /* Disable write protection for GPT registers if they are protected. */ - uint32_t wp = R_GPT0->GTWP; - R_GPT0->GTWP = GPT_PRV_GTWP_RESET_VALUE; - R_GPT0->GTWP; - #endif - - /* Enable the Delay Generation Circuit bypass. */ - R_GPT_ODC->GTDLYCR2 &= (uint16_t) (~p_instance_ctrl->channel_mask & UINT16_MAX); - - #if GPT_CFG_WRITE_PROTECT_ENABLE - R_GPT0->GTWP = wp | GPT_PRV_GTWP_RESET_VALUE; - #endif - - FSP_CRITICAL_SECTION_EXIT; - } -#endif - - /* Initialize all registers that may affect operation of this driver to reset values. Skip these since they - * affect all channels, and are initialized in GTCR and GTCNT: GTSTR, GTSTP, GTCLR. GTCR is set immediately after - * clearing the module stop bit to ensure the timer is stopped before proceeding with configuration. */ - p_instance_ctrl->p_reg->GTWP = GPT_PRV_GTWP_RESET_VALUE; - p_instance_ctrl->p_reg->GTCR = 0U; - p_instance_ctrl->p_reg->GTST = 0U; - p_instance_ctrl->p_reg->GTCNT = 0U; - - /* GTPR, GTCCRn, GTIOR, GTSSR, GTPSR, GTCSR, GTUPSR, GTDNSR, GTPBR, and GTUDDTYC are set by this driver. */ - - /* Initialization sets all register required for up counting as described in hardware manual (Figure 23.4 in the - * RA6M3 manual R01UH0886EJ0100) and other registers required by the driver. */ - - /* Dividers for GPT are half the enum value. */ - uint32_t gtcr_tpcs = p_cfg->source_div; - uint32_t gtcr = gtcr_tpcs << R_GPT0_GTCR_TPCS_Pos; - - /* Store period register setting. The actual period and is one cycle longer than the register value for saw waves - * and twice the register value for triangle waves. Reference section 23.2.21 "General PWM Timer Cycle Setting - * Register (GTPR)". The setting passed to the configuration is expected to be half the desired period for - * triangle waves. */ - uint32_t gtpr = p_cfg->period_counts - 1U; -#if GPT_PRV_EXTRA_FEATURES_ENABLED == GPT_CFG_OUTPUT_SUPPORT_ENABLE - - /* Saw-wave PWM mode is set in GTCR.MD for all modes except TIMER_MODE_TRIANGLE_WAVE_SYMMETRIC_PWM and - * TIMER_MODE_TRIANGLE_WAVE_ASYMMETRIC_PWM. */ - if (p_cfg->mode >= TIMER_MODE_TRIANGLE_WAVE_SYMMETRIC_PWM) - { - gtcr |= ((uint32_t) p_cfg->mode << R_GPT0_GTCR_MD_Pos); - gtpr = p_cfg->period_counts; - } -#endif - - /* Counter must be stopped to update TPCS. Reference section 23.2.12 "General PWM Timer Control Register (GTCR)" - * in the RA6M3 manual R01UH0886EJ0100. */ - p_instance_ctrl->p_reg->GTCR = gtcr; - - gpt_hardware_events_disable(p_instance_ctrl); - - /* Configure the up/down count sources. These are not affected by enable/disable. */ - p_instance_ctrl->p_reg->GTUPSR = p_extend->count_up_source; - p_instance_ctrl->p_reg->GTDNSR = p_extend->count_down_source; - - /* Set period. The actual period is one cycle longer than the register value. Reference section 23.2.21 - * "General PWM Timer Cycle Setting Register (GTPR)". */ - p_instance_ctrl->p_reg->GTPBR = gtpr; - p_instance_ctrl->p_reg->GTPR = gtpr; - - uint32_t gtuddtyc = 0U; - uint32_t gtior = p_extend->gtior_setting.gtior; - -#if GPT_CFG_OUTPUT_SUPPORT_ENABLE - - /* For one shot mode, the compare match buffer register must be loaded with a value that exceeds the timer - * cycle end value so that second compare match event would never occur and hence there will be only a - * single pulse. Writing to the upper bits is ignored for 16-bit timers. */ - gpt_prv_duty_registers_t duty_regs = {UINT32_MAX, 0}; - - if (TIMER_MODE_PERIODIC == p_cfg->mode) - { - /* The GTIOCA/GTIOCB pins transition 1 cycle after compare match when buffer operation is used. Reference - * Figure 23.34 "Example setting for saw-wave PWM mode" in the RA6M3 manual R01UH0886EJ0100. To get a duty cycle - * as close to 50% as possible, duty cycle (register) = (period (counts) / 2) - 1. */ - uint32_t duty_cycle_50_percent = (p_cfg->period_counts >> 1) - 1U; - duty_regs.gtccr_buffer = duty_cycle_50_percent; - } - - if (p_cfg->mode >= TIMER_MODE_PWM) - { - gpt_calculate_duty_cycle(p_instance_ctrl, p_cfg->duty_cycle_counts, &duty_regs, GPT_IO_PIN_GTIOCA); - } - - /* Set the compare match and compare match buffer registers based on previously calculated values. */ - p_instance_ctrl->p_reg->GTCCR[GPT_PRV_GTCCRC] = duty_regs.gtccr_buffer; - p_instance_ctrl->p_reg->GTCCR[GPT_PRV_GTCCRE] = duty_regs.gtccr_buffer; - - /* If the requested duty cycle is 0% or 100%, set this in the registers. */ - gtuddtyc |= duty_regs.omdty << R_GPT0_GTUDDTYC_OADTY_Pos; - gtuddtyc |= duty_regs.omdty << R_GPT0_GTUDDTYC_OBDTY_Pos; - - /* Check if custom GTIOR settings are provided. */ - if (0 == p_extend->gtior_setting.gtior) - { - /* If custom GTIOR settings are not provided, calculate GTIOR. */ - if (p_extend->gtioca.output_enabled) - { - uint32_t gtioca_gtior = gpt_gtior_calculate(p_cfg, p_extend->gtioca.stop_level); - gtior |= gtioca_gtior << R_GPT0_GTIOR_GTIOA_Pos; - } - - if (p_extend->gtiocb.output_enabled) - { - uint32_t gtiocb_gtior = gpt_gtior_calculate(p_cfg, p_extend->gtiocb.stop_level); - gtior |= gtiocb_gtior << R_GPT0_GTIOR_GTIOB_Pos; - } - } -#endif - -#if GPT_PRV_GPTE_OR_GPTEH_CHANNEL_MASK - if ((1U << p_cfg->channel) & GPT_PRV_GPTE_OR_GPTEH_CHANNEL_MASK) - { - /* This register is available on GPTE and GPTEH only. It must be cleared before setting. When modifying the - * IVTT[2:0] bits, first set the IVTC[1:0] bits to 00b. Reference section 23.2.18 "General PWM Timer Interrupt - * and A/D Converter Start Request Skipping Setting Register (GTITC)"" of the RA6M3 manual R01UH0886EJ0100. */ - p_instance_ctrl->p_reg->GTITC = 0U; - } -#endif - -#if GPT_PRV_EXTRA_FEATURES_ENABLED == GPT_CFG_OUTPUT_SUPPORT_ENABLE - gpt_extended_pwm_cfg_t const * p_pwm_cfg = p_extend->p_pwm_cfg; - if (NULL != p_pwm_cfg) - { - p_instance_ctrl->p_reg->GTINTAD = ((uint32_t) p_pwm_cfg->output_disable << R_GPT0_GTINTAD_GRPDTE_Pos) | - ((uint32_t) p_pwm_cfg->poeg_link << R_GPT0_GTINTAD_GRP_Pos) | - ((uint32_t) p_pwm_cfg->adc_trigger << R_GPT0_GTINTAD_ADTRAUEN_Pos); - p_instance_ctrl->p_reg->GTDVU = p_pwm_cfg->dead_time_count_up; - - /* Set GTDTCR.TDE only if one of the dead time values is non-zero. */ - uint32_t gtdtcr = - ((p_pwm_cfg->dead_time_count_up > 0) || (p_pwm_cfg->dead_time_count_down > 0)); - - #if GPT_PRV_GPTE_OR_GPTEH_CHANNEL_MASK - if ((1U << p_cfg->channel) & GPT_PRV_GPTE_OR_GPTEH_CHANNEL_MASK) - { - /* These registers are only available on GPTE and GPTEH. */ - p_instance_ctrl->p_reg->GTITC = ((uint32_t) p_pwm_cfg->interrupt_skip_source << R_GPT0_GTITC_IVTC_Pos) | - ((uint32_t) p_pwm_cfg->interrupt_skip_count << R_GPT0_GTITC_IVTT_Pos) | - ((uint32_t) p_pwm_cfg->interrupt_skip_adc << R_GPT0_GTITC_ADTAL_Pos); - p_instance_ctrl->p_reg->GTDVD = p_pwm_cfg->dead_time_count_down; - p_instance_ctrl->p_reg->GTADTRA = p_pwm_cfg->adc_a_compare_match; - p_instance_ctrl->p_reg->GTADTRB = p_pwm_cfg->adc_b_compare_match; - } - #endif - - /* Check if custom GTIOR settings are provided. */ - if (0 == p_extend->gtior_setting.gtior) - { - /* If custom GTIOR settings are not provided, set gtioca_disable_settings and gtiocb_disable_settings. */ - gtior |= (uint32_t) (p_pwm_cfg->gtioca_disable_setting << R_GPT0_GTIOR_OADF_Pos); - gtior |= (uint32_t) (p_pwm_cfg->gtiocb_disable_setting << R_GPT0_GTIOR_OBDF_Pos); - } - - p_instance_ctrl->p_reg->GTDTCR = gtdtcr; - } - else -#endif - { - /* GTADTR* registers are unused if GTINTAD is cleared. */ - p_instance_ctrl->p_reg->GTINTAD = 0U; - p_instance_ctrl->p_reg->GTDTCR = 0U; - - /* GTDVU, GTDVD, GTDBU, GTDBD, and GTSOTR are not used if GTDTCR is cleared. */ - } - - /* Check if custom GTIOR settings are provided. */ - if (0 == p_extend->gtior_setting.gtior) - { - /* - * If custom GTIOR settings are not provided, configure the noise filter for - * the GTIOC pins. - */ - gtior |= (uint32_t) (p_extend->capture_filter_gtioca << R_GPT0_GTIOR_NFAEN_Pos); - gtior |= (uint32_t) (p_extend->capture_filter_gtiocb << R_GPT0_GTIOR_NFBEN_Pos); - } - - /* Enable the compare match buffer. */ - p_instance_ctrl->p_reg->GTBER = GPT_PRV_GTBER_BUFFER_ENABLE_FORCE_TRANSFER; - -#if GPT_CFG_OUTPUT_SUPPORT_ENABLE - if (TIMER_MODE_ONE_SHOT == p_cfg->mode) - { - /* In one shot mode, the output pin toggles when counting starts, then again when the period expires. - * The buffer is enabled to set the compare match to UINT32_MAX after the one shot pulse is output - * so that the pin level will not change if the period expires again before the timer is stopped in - * the interrupt.*/ - p_instance_ctrl->p_reg->GTCCR[GPT_PRV_GTCCRA] = 0U; - p_instance_ctrl->p_reg->GTCCR[GPT_PRV_GTCCRB] = 0U; - } -#endif - - /* Reset counter to 0. */ - p_instance_ctrl->p_reg->GTCLR = p_instance_ctrl->channel_mask; - - /* Set the I/O control register. */ - p_instance_ctrl->p_reg->GTIOR = gtior; - - /* Configure duty cycle and force timer to count up. GTUDDTYC must be set, then cleared to force the count - * direction to be reflected when counting starts. Reference section 23.2.13 "General PWM Timer Count Direction - * and Duty Setting Register (GTUDDTYC)" in the RA6M3 manual R01UH0886EJ0100. */ - p_instance_ctrl->p_reg->GTUDDTYC = gtuddtyc | 3U; - p_instance_ctrl->p_reg->GTUDDTYC = gtuddtyc | 1U; - - r_gpt_write_protect_enable(p_instance_ctrl, GPT_PRV_GTWP_WRITE_PROTECT); - - /* Enable CPU interrupts if callback is not null. Also enable interrupts for one shot mode. - * @note The GPT hardware does not support one-shot mode natively. To support one-shot mode, the timer will be - * stopped and cleared using software in the ISR. */ - r_gpt_enable_irq(p_cfg->cycle_end_irq, p_cfg->cycle_end_ipl, p_instance_ctrl); - r_gpt_enable_irq(p_extend->capture_a_irq, p_extend->capture_a_ipl, p_instance_ctrl); - r_gpt_enable_irq(p_extend->capture_b_irq, p_extend->capture_b_ipl, p_instance_ctrl); -#if GPT_PRV_EXTRA_FEATURES_ENABLED == GPT_CFG_OUTPUT_SUPPORT_ENABLE - if (NULL != p_pwm_cfg) - { - r_gpt_enable_irq(p_pwm_cfg->trough_irq, p_pwm_cfg->trough_ipl, p_instance_ctrl); - } -#endif -} - -/*******************************************************************************************************************//** - * Disables hardware events that would cause the timer to start, stop, clear, or capture. - * - * @param[in] p_instance_ctrl Instance control structure - **********************************************************************************************************************/ -static void gpt_hardware_events_disable (gpt_instance_ctrl_t * p_instance_ctrl) -{ - /* Enable use of GTSTR, GTSTP, and GTCLR for this channel. */ - p_instance_ctrl->p_reg->GTSSR = GPT_PRV_ENABLE_GROUP_SOFTWARE_UPDATE; - p_instance_ctrl->p_reg->GTPSR = GPT_PRV_ENABLE_GROUP_SOFTWARE_UPDATE; - p_instance_ctrl->p_reg->GTCSR = GPT_PRV_ENABLE_GROUP_SOFTWARE_UPDATE; - p_instance_ctrl->p_reg->GTICASR = GPT_SOURCE_NONE; - p_instance_ctrl->p_reg->GTICBSR = GPT_SOURCE_NONE; -} - -/*******************************************************************************************************************//** - * Disables interrupt if it is a valid vector number. - * - * @param[in] irq Interrupt number - **********************************************************************************************************************/ -static void r_gpt_disable_irq (IRQn_Type irq) -{ - /* Disable interrupts. */ - if (irq >= 0) - { - R_BSP_IrqDisable(irq); - R_FSP_IsrContextSet(irq, NULL); - } -} - -/*******************************************************************************************************************//** - * Configures and enables interrupt if it is a valid vector number. - * - * @param[in] irq Interrupt number - * @param[in] priority NVIC priority of the interrupt - * @param[in] p_context The interrupt context is a pointer to data required in the ISR. - **********************************************************************************************************************/ -static void r_gpt_enable_irq (IRQn_Type const irq, uint32_t priority, void * p_context) -{ - if (irq >= 0) - { - R_BSP_IrqCfgEnable(irq, priority, p_context); - } -} - -#if GPT_CFG_OUTPUT_SUPPORT_ENABLE - -/*******************************************************************************************************************//** - * Calculates duty cycle register values. GTPR must be set before entering this function. - * - * @param[in] p_instance_ctrl Instance control structure - * @param[in] duty_cycle_counts Duty cycle to set - * @param[out] p_duty_reg Duty cycle register values - **********************************************************************************************************************/ -static void gpt_calculate_duty_cycle (gpt_instance_ctrl_t * const p_instance_ctrl, - uint32_t const duty_cycle_counts, - gpt_prv_duty_registers_t * p_duty_reg, - uint32_t pin) -{ - /* Determine the current period. The actual period is one cycle longer than the register value for saw waves - * and twice the register value for triangle waves. Reference section 23.2.21 "General PWM Timer Cycle Setting - * Register (GTPR)". The setting passed to the configuration is expected to be half the desired duty cycle for - * triangle waves. */ - uint32_t current_period = p_instance_ctrl->p_reg->GTPR; - #if GPT_PRV_EXTRA_FEATURES_ENABLED == GPT_CFG_OUTPUT_SUPPORT_ENABLE - if (p_instance_ctrl->p_cfg->mode < TIMER_MODE_TRIANGLE_WAVE_SYMMETRIC_PWM) - #endif - { - current_period++; - } - - bool duty_zero = (0U == duty_cycle_counts); - bool duty_high = (duty_cycle_counts >= current_period); - - if (duty_zero || duty_high) - { - uint32_t gtior; - - if (!(GPT_IO_PIN_GTIOCB & pin)) - { - gtior = p_instance_ctrl->p_reg->GTIOR_b.GTIOA; - } - else - { - gtior = p_instance_ctrl->p_reg->GTIOR_b.GTIOB; - } - - bool first_level_low; - - if (p_instance_ctrl->p_cfg->mode >= TIMER_MODE_TRIANGLE_WAVE_SYMMETRIC_PWM) - { - /* In triangle PWM modes use the initial pin level to determine 0%/100% setting. */ - first_level_low = !(gtior & 0x10); - } - else - { - /* In normal PWM mode use the cycle end setting to determine 0%/100% setting */ - first_level_low = (gtior & 0xC) == 0x4; - } - - if ((duty_zero && !first_level_low) || (duty_high && first_level_low)) - { - p_duty_reg->omdty = GPT_DUTY_CYCLE_MODE_0_PERCENT; - } - else - { - p_duty_reg->omdty = GPT_DUTY_CYCLE_MODE_100_PERCENT; - } - } - else - { - uint32_t temp_duty_cycle = duty_cycle_counts; - - #if GPT_PRV_EXTRA_FEATURES_ENABLED == GPT_CFG_OUTPUT_SUPPORT_ENABLE - if (p_instance_ctrl->p_cfg->mode >= TIMER_MODE_TRIANGLE_WAVE_SYMMETRIC_PWM) - { - p_duty_reg->gtccr_buffer = temp_duty_cycle; - } - else - #endif - { - /* The GTIOCA/GTIOCB pins transition 1 cycle after compare match when buffer operation is used. Reference - * Figure 23.34 "Example setting for saw-wave PWM mode" in the RA6M3 manual R01UH0886EJ0100. */ - temp_duty_cycle--; - p_duty_reg->gtccr_buffer = temp_duty_cycle; - } - } -} - -#endif - -/*******************************************************************************************************************//** - * Calculates clock frequency of GPT counter. Divides GPT clock by GPT clock divisor. - * - * @param[in] p_instance_ctrl Instance control block - * - * @return Clock frequency of the GPT counter. - **********************************************************************************************************************/ -static uint32_t gpt_clock_frequency_get (gpt_instance_ctrl_t * const p_instance_ctrl) -{ - /* Look up PCLKD frequency and divide it by GPT PCLKD divider. */ - timer_source_div_t pclk_divisor = (timer_source_div_t) (p_instance_ctrl->p_reg->GTCR_b.TPCS); - uint32_t pclk_freq_hz = R_FSP_SystemClockHzGet(FSP_PRIV_CLOCK_PCLKD); - - return pclk_freq_hz >> pclk_divisor; -} - -#if GPT_CFG_OUTPUT_SUPPORT_ENABLE - -/*******************************************************************************************************************//** - * Calculates GTIOR settings for given mode and stop level. - * - * @param[in] p_instance_ctrl Instance control block - * @param[in] p_cfg Timer configuration - * @param[in] level Output level after timer stops - **********************************************************************************************************************/ -static uint32_t gpt_gtior_calculate (timer_cfg_t const * const p_cfg, gpt_pin_level_t const stop_level) -{ - /* The stop level is used as both the initial level and the stop level. */ - uint32_t gtior = R_GPT0_GTIOR_OAE_Msk | ((uint32_t) stop_level << R_GPT0_GTIOR_OADFLT_Pos) | - ((uint32_t) stop_level << GPT_PRV_GTIOR_INITIAL_LEVEL_BIT); - - uint32_t gtion = GPT_PRV_GTIO_LOW_COMPARE_MATCH_HIGH_CYCLE_END; - - if (TIMER_MODE_PWM == p_cfg->mode) - { - /* Use default: GTIOn is high at cycle end, then low at compare match. */ - } - - #if GPT_PRV_EXTRA_FEATURES_ENABLED == GPT_CFG_OUTPUT_SUPPORT_ENABLE - else if (p_cfg->mode >= TIMER_MODE_TRIANGLE_WAVE_SYMMETRIC_PWM) - { - gtion = GPT_PRV_GTIO_TOGGLE_COMPARE_MATCH; - } - #endif - else - { - /* In one-shot mode, the output pin goes high after the first compare match (one cycle after the timer starts counting). */ - if (GPT_PIN_LEVEL_LOW == stop_level) - { - gtion = GPT_PRV_GTIO_HIGH_COMPARE_MATCH_LOW_CYCLE_END; - } - } - - gtior |= gtion; - - return gtior; -} - -#endif - -/*******************************************************************************************************************//** - * Calls user callback. - * - * @param[in] p_ctrl Pointer to GPT instance control block - * @param[in] event Event code - * @param[in] capture Event capture counts (if applicable) - **********************************************************************************************************************/ -static void r_gpt_call_callback (gpt_instance_ctrl_t * p_ctrl, timer_event_t event, uint32_t capture) -{ - timer_callback_args_t args; - - /* Store callback arguments in memory provided by user if available. This allows callback arguments to be - * stored in non-secure memory so they can be accessed by a non-secure callback function. */ - timer_callback_args_t * p_args = p_ctrl->p_callback_memory; - if (NULL == p_args) - { - /* Store on stack */ - p_args = &args; - } - else - { - /* Save current arguments on the stack in case this is a nested interrupt. */ - args = *p_args; - } - - p_args->event = event; - p_args->capture = capture; - p_args->p_context = p_ctrl->p_context; - -#if BSP_TZ_SECURE_BUILD - - /* p_callback can point to a secure function or a non-secure function. */ - if (!cmse_is_nsfptr(p_ctrl->p_callback)) - { - /* If p_callback is secure, then the project does not need to change security state. */ - p_ctrl->p_callback(p_args); - } - else - { - /* If p_callback is Non-secure, then the project must change to Non-secure state in order to call the callback. */ - gpt_prv_ns_callback p_callback = (gpt_prv_ns_callback) (p_ctrl->p_callback); - p_callback(p_args); - } - -#else - - /* If the project is not Trustzone Secure, then it will never need to change security state in order to call the callback. */ - p_ctrl->p_callback(p_args); -#endif - - if (NULL != p_ctrl->p_callback_memory) - { - /* Restore callback memory in case this is a nested interrupt. */ - *p_ctrl->p_callback_memory = args; - } -} - -/*******************************************************************************************************************//** - * Common processing for input capture interrupt. - * - * @param[in] event Which input capture event occurred - **********************************************************************************************************************/ -static void r_gpt_capture_common_isr (gpt_prv_capture_event_t event) -{ - /* Save context if RTOS is used */ - FSP_CONTEXT_SAVE - - IRQn_Type irq = R_FSP_CurrentIrqGet(); - - /* Clear pending IRQ to make sure it doesn't fire again after exiting */ - R_BSP_IrqStatusClear(irq); - - /* Recover ISR context saved in open. */ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) R_FSP_IsrContextGet(irq); - - /* Get captured value. */ - uint32_t counter = p_instance_ctrl->p_reg->GTCCR[event]; - - /* If we captured a one-shot pulse, then disable future captures. */ - if (TIMER_MODE_ONE_SHOT == p_instance_ctrl->p_cfg->mode) - { - /* Disable captures. */ - gpt_hardware_events_disable(p_instance_ctrl); - - /* Clear pending interrupt to make sure it doesn't fire again if another overflow has already occurred. */ - R_BSP_IrqClearPending(irq); - } - - /* If a callback is provided, then call it with the captured counter value. */ - if (NULL != p_instance_ctrl->p_callback) - { - r_gpt_call_callback(p_instance_ctrl, - (timer_event_t) ((uint32_t) TIMER_EVENT_CAPTURE_A + (uint32_t) event), - counter); - } - - /* Restore context if RTOS is used */ - FSP_CONTEXT_RESTORE -} - -/*******************************************************************************************************************//** - * Stops the timer if one-shot mode, clears interrupts, and calls callback if one was provided in the open function. - **********************************************************************************************************************/ -void gpt_counter_overflow_isr (void) -{ - /* Save context if RTOS is used */ - FSP_CONTEXT_SAVE; - - IRQn_Type irq = R_FSP_CurrentIrqGet(); - - /* Clear pending IRQ to make sure it doesn't fire again after exiting */ - R_BSP_IrqStatusClear(irq); - - /* Recover ISR context saved in open. */ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) R_FSP_IsrContextGet(irq); - - /* If one-shot mode is selected, stop the timer since period has expired. */ - if (TIMER_MODE_ONE_SHOT == p_instance_ctrl->p_cfg->mode) - { - uint32_t wp = r_gpt_write_protect_disable(p_instance_ctrl); - - p_instance_ctrl->p_reg->GTSTP = p_instance_ctrl->channel_mask; - - /* Clear the GPT counter and the overflow flag after the one shot pulse has being generated */ - p_instance_ctrl->p_reg->GTCNT = 0; - p_instance_ctrl->p_reg->GTCCR[GPT_PRV_GTCCRA] = 0; - p_instance_ctrl->p_reg->GTCCR[GPT_PRV_GTCCRB] = 0; - - r_gpt_write_protect_enable(p_instance_ctrl, wp | GPT_PRV_GTWP_RESET_VALUE); - - /* Clear pending interrupt to make sure it doesn't fire again if another overflow has already occurred. */ - R_BSP_IrqClearPending(irq); - } - - if (NULL != p_instance_ctrl->p_callback) - { - r_gpt_call_callback(p_instance_ctrl, TIMER_EVENT_CYCLE_END, 0); - } - - /* Restore context if RTOS is used */ - FSP_CONTEXT_RESTORE; -} - -#if GPT_PRV_EXTRA_FEATURES_ENABLED == GPT_CFG_OUTPUT_SUPPORT_ENABLE - -/*******************************************************************************************************************//** - * Only supported for asymmetric triangle-wave PWM. Notifies application of trough event. - **********************************************************************************************************************/ -void gpt_counter_underflow_isr (void) -{ - /* Save context if RTOS is used */ - FSP_CONTEXT_SAVE; - - IRQn_Type irq = R_FSP_CurrentIrqGet(); - - /* Clear pending IRQ to make sure it doesn't fire again after exiting */ - R_BSP_IrqStatusClear(irq); - - /* Recover ISR context saved in open. */ - gpt_instance_ctrl_t * p_instance_ctrl = (gpt_instance_ctrl_t *) R_FSP_IsrContextGet(irq); - - /* Call user callback. */ - r_gpt_call_callback(p_instance_ctrl, TIMER_EVENT_TROUGH, 0); - - /* Restore context if RTOS is used */ - FSP_CONTEXT_RESTORE; -} - -#endif - -/*******************************************************************************************************************//** - * Interrupt triggered by a capture A source. - * - * Clears interrupt, disables captures if one-shot mode, and calls callback if one was provided in the open function. - **********************************************************************************************************************/ -void gpt_capture_a_isr (void) -{ - r_gpt_capture_common_isr(GPT_PRV_CAPTURE_EVENT_A); -} - -/*******************************************************************************************************************//** - * Interrupt triggered by a capture B source. - * - * Clears interrupt, disables captures if one-shot mode, and calls callback if one was provided in the open function. - **********************************************************************************************************************/ -void gpt_capture_b_isr (void) -{ - r_gpt_capture_common_isr(GPT_PRV_CAPTURE_EVENT_B); -} diff --git a/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_adc_cfg.h b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_adc_cfg.h deleted file mode 100644 index 9c59889ca8..0000000000 --- a/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_adc_cfg.h +++ /dev/null @@ -1,5 +0,0 @@ -/* generated configuration header file - do not edit */ -#ifndef R_ADC_CFG_H_ -#define R_ADC_CFG_H_ -#define ADC_CFG_PARAM_CHECKING_ENABLE (BSP_CFG_PARAM_CHECKING_ENABLE) -#endif /* R_ADC_CFG_H_ */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_gpt_cfg.h b/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_gpt_cfg.h deleted file mode 100644 index fd876266d3..0000000000 --- a/bsp/renesas/ra6m3-hmi-board/ra_cfg/fsp_cfg/r_gpt_cfg.h +++ /dev/null @@ -1,8 +0,0 @@ -/* generated configuration header file - do not edit */ -#ifndef R_GPT_CFG_H_ -#define R_GPT_CFG_H_ -#define GPT_CFG_PARAM_CHECKING_ENABLE (BSP_CFG_PARAM_CHECKING_ENABLE) -#define GPT_CFG_OUTPUT_SUPPORT_ENABLE (1) -#define GPT_CFG_WRITE_PROTECT_ENABLE (0) -#define GPT_CFG_GPTCLK_BYPASS 1 -#endif /* R_GPT_CFG_H_ */ diff --git a/bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.c b/bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.c index 1e3a11e13e..cdcffb3b68 100644 --- a/bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.c +++ b/bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.c @@ -1,487 +1,5 @@ /* generated HAL source file - do not edit */ #include "hal_data.h" - -/* Macros to tie dynamic ELC links to ADC_TRIGGER_SYNC_ELC option in adc_trigger_t. */ -#define ADC_TRIGGER_ADC0 ADC_TRIGGER_SYNC_ELC -#define ADC_TRIGGER_ADC0_B ADC_TRIGGER_SYNC_ELC -#define ADC_TRIGGER_ADC1 ADC_TRIGGER_SYNC_ELC -#define ADC_TRIGGER_ADC1_B ADC_TRIGGER_SYNC_ELC -gpt_instance_ctrl_t g_timer8_ctrl; -#if 0 -const gpt_extended_pwm_cfg_t g_timer8_pwm_extend = -{ - .trough_ipl = (BSP_IRQ_DISABLED), -#if defined(VECTOR_NUMBER_GPT8_COUNTER_UNDERFLOW) - .trough_irq = VECTOR_NUMBER_GPT8_COUNTER_UNDERFLOW, -#else - .trough_irq = FSP_INVALID_VECTOR, -#endif - .poeg_link = GPT_POEG_LINK_POEG0, - .output_disable = GPT_OUTPUT_DISABLE_NONE, - .adc_trigger = GPT_ADC_TRIGGER_NONE, - .dead_time_count_up = 0, - .dead_time_count_down = 0, - .adc_a_compare_match = 0, - .adc_b_compare_match = 0, - .interrupt_skip_source = GPT_INTERRUPT_SKIP_SOURCE_NONE, - .interrupt_skip_count = GPT_INTERRUPT_SKIP_COUNT_0, - .interrupt_skip_adc = GPT_INTERRUPT_SKIP_ADC_NONE, - .gtioca_disable_setting = GPT_GTIOC_DISABLE_PROHIBITED, - .gtiocb_disable_setting = GPT_GTIOC_DISABLE_PROHIBITED, -}; -#endif -const gpt_extended_cfg_t g_timer8_extend = -{ - .gtioca = { .output_enabled = true, - .stop_level = GPT_PIN_LEVEL_LOW - }, - .gtiocb = { .output_enabled = true, - .stop_level = GPT_PIN_LEVEL_LOW - }, - .start_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .stop_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .clear_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .count_up_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .count_down_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .capture_a_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .capture_b_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .capture_a_ipl = (BSP_IRQ_DISABLED), - .capture_b_ipl = (BSP_IRQ_DISABLED), -#if defined(VECTOR_NUMBER_GPT8_CAPTURE_COMPARE_A) - .capture_a_irq = VECTOR_NUMBER_GPT8_CAPTURE_COMPARE_A, -#else - .capture_a_irq = FSP_INVALID_VECTOR, -#endif -#if defined(VECTOR_NUMBER_GPT8_CAPTURE_COMPARE_B) - .capture_b_irq = VECTOR_NUMBER_GPT8_CAPTURE_COMPARE_B, -#else - .capture_b_irq = FSP_INVALID_VECTOR, -#endif - .capture_filter_gtioca = GPT_CAPTURE_FILTER_NONE, - .capture_filter_gtiocb = GPT_CAPTURE_FILTER_NONE, -#if 0 - .p_pwm_cfg = &g_timer8_pwm_extend, -#else - .p_pwm_cfg = NULL, -#endif -#if 0 - .gtior_setting.gtior_b.gtioa = (0U << 4U) | (0U << 2U) | (0U << 0U), - .gtior_setting.gtior_b.oadflt = (uint32_t) GPT_PIN_LEVEL_LOW, - .gtior_setting.gtior_b.oahld = 0U, - .gtior_setting.gtior_b.oae = (uint32_t) true, - .gtior_setting.gtior_b.oadf = (uint32_t) GPT_GTIOC_DISABLE_PROHIBITED, - .gtior_setting.gtior_b.nfaen = ((uint32_t) GPT_CAPTURE_FILTER_NONE & 1U), - .gtior_setting.gtior_b.nfcsa = ((uint32_t) GPT_CAPTURE_FILTER_NONE >> 1U), - .gtior_setting.gtior_b.gtiob = (0U << 4U) | (0U << 2U) | (0U << 0U), - .gtior_setting.gtior_b.obdflt = (uint32_t) GPT_PIN_LEVEL_LOW, - .gtior_setting.gtior_b.obhld = 0U, - .gtior_setting.gtior_b.obe = (uint32_t) true, - .gtior_setting.gtior_b.obdf = (uint32_t) GPT_GTIOC_DISABLE_PROHIBITED, - .gtior_setting.gtior_b.nfben = ((uint32_t) GPT_CAPTURE_FILTER_NONE & 1U), - .gtior_setting.gtior_b.nfcsb = ((uint32_t) GPT_CAPTURE_FILTER_NONE >> 1U), -#else - .gtior_setting.gtior = 0U, -#endif -}; -const timer_cfg_t g_timer8_cfg = -{ - .mode = TIMER_MODE_PWM, - /* Actual period: 35.791394133333334 seconds. Actual duty: 50%. */ .period_counts = (uint32_t) 0x100000000, .duty_cycle_counts = 0x80000000, .source_div = (timer_source_div_t)0, - .channel = 8, - .p_callback = NULL, - /** If NULL then do not add & */ -#if defined(NULL) - .p_context = NULL, -#else - .p_context = &NULL, -#endif - .p_extend = &g_timer8_extend, - .cycle_end_ipl = (BSP_IRQ_DISABLED), -#if defined(VECTOR_NUMBER_GPT8_COUNTER_OVERFLOW) - .cycle_end_irq = VECTOR_NUMBER_GPT8_COUNTER_OVERFLOW, -#else - .cycle_end_irq = FSP_INVALID_VECTOR, -#endif -}; -/* Instance structure to use this module. */ -const timer_instance_t g_timer8 = -{ - .p_ctrl = &g_timer8_ctrl, - .p_cfg = &g_timer8_cfg, - .p_api = &g_timer_on_gpt -}; -gpt_instance_ctrl_t g_timer0_ctrl; -#if 0 -const gpt_extended_pwm_cfg_t g_timer0_pwm_extend = -{ - .trough_ipl = (BSP_IRQ_DISABLED), -#if defined(VECTOR_NUMBER_GPT0_COUNTER_UNDERFLOW) - .trough_irq = VECTOR_NUMBER_GPT0_COUNTER_UNDERFLOW, -#else - .trough_irq = FSP_INVALID_VECTOR, -#endif - .poeg_link = GPT_POEG_LINK_POEG0, - .output_disable = GPT_OUTPUT_DISABLE_NONE, - .adc_trigger = GPT_ADC_TRIGGER_NONE, - .dead_time_count_up = 0, - .dead_time_count_down = 0, - .adc_a_compare_match = 0, - .adc_b_compare_match = 0, - .interrupt_skip_source = GPT_INTERRUPT_SKIP_SOURCE_NONE, - .interrupt_skip_count = GPT_INTERRUPT_SKIP_COUNT_0, - .interrupt_skip_adc = GPT_INTERRUPT_SKIP_ADC_NONE, - .gtioca_disable_setting = GPT_GTIOC_DISABLE_PROHIBITED, - .gtiocb_disable_setting = GPT_GTIOC_DISABLE_PROHIBITED, -}; -#endif -const gpt_extended_cfg_t g_timer0_extend = -{ - .gtioca = { .output_enabled = true, - .stop_level = GPT_PIN_LEVEL_LOW - }, - .gtiocb = { .output_enabled = false, - .stop_level = GPT_PIN_LEVEL_LOW - }, - .start_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .stop_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .clear_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .count_up_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .count_down_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .capture_a_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .capture_b_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .capture_a_ipl = (BSP_IRQ_DISABLED), - .capture_b_ipl = (BSP_IRQ_DISABLED), -#if defined(VECTOR_NUMBER_GPT0_CAPTURE_COMPARE_A) - .capture_a_irq = VECTOR_NUMBER_GPT0_CAPTURE_COMPARE_A, -#else - .capture_a_irq = FSP_INVALID_VECTOR, -#endif -#if defined(VECTOR_NUMBER_GPT0_CAPTURE_COMPARE_B) - .capture_b_irq = VECTOR_NUMBER_GPT0_CAPTURE_COMPARE_B, -#else - .capture_b_irq = FSP_INVALID_VECTOR, -#endif - .capture_filter_gtioca = GPT_CAPTURE_FILTER_NONE, - .capture_filter_gtiocb = GPT_CAPTURE_FILTER_NONE, -#if 0 - .p_pwm_cfg = &g_timer0_pwm_extend, -#else - .p_pwm_cfg = NULL, -#endif -#if 0 - .gtior_setting.gtior_b.gtioa = (0U << 4U) | (0U << 2U) | (0U << 0U), - .gtior_setting.gtior_b.oadflt = (uint32_t) GPT_PIN_LEVEL_LOW, - .gtior_setting.gtior_b.oahld = 0U, - .gtior_setting.gtior_b.oae = (uint32_t) true, - .gtior_setting.gtior_b.oadf = (uint32_t) GPT_GTIOC_DISABLE_PROHIBITED, - .gtior_setting.gtior_b.nfaen = ((uint32_t) GPT_CAPTURE_FILTER_NONE & 1U), - .gtior_setting.gtior_b.nfcsa = ((uint32_t) GPT_CAPTURE_FILTER_NONE >> 1U), - .gtior_setting.gtior_b.gtiob = (0U << 4U) | (0U << 2U) | (0U << 0U), - .gtior_setting.gtior_b.obdflt = (uint32_t) GPT_PIN_LEVEL_LOW, - .gtior_setting.gtior_b.obhld = 0U, - .gtior_setting.gtior_b.obe = (uint32_t) false, - .gtior_setting.gtior_b.obdf = (uint32_t) GPT_GTIOC_DISABLE_PROHIBITED, - .gtior_setting.gtior_b.nfben = ((uint32_t) GPT_CAPTURE_FILTER_NONE & 1U), - .gtior_setting.gtior_b.nfcsb = ((uint32_t) GPT_CAPTURE_FILTER_NONE >> 1U), -#else - .gtior_setting.gtior = 0U, -#endif -}; -const timer_cfg_t g_timer0_cfg = -{ - .mode = TIMER_MODE_PWM, - /* Actual period: 35.791394133333334 seconds. Actual duty: 50%. */ .period_counts = (uint32_t) 0x100000000, .duty_cycle_counts = 0x80000000, .source_div = (timer_source_div_t)0, - .channel = 0, - .p_callback = NULL, - /** If NULL then do not add & */ -#if defined(NULL) - .p_context = NULL, -#else - .p_context = &NULL, -#endif - .p_extend = &g_timer0_extend, - .cycle_end_ipl = (BSP_IRQ_DISABLED), -#if defined(VECTOR_NUMBER_GPT0_COUNTER_OVERFLOW) - .cycle_end_irq = VECTOR_NUMBER_GPT0_COUNTER_OVERFLOW, -#else - .cycle_end_irq = FSP_INVALID_VECTOR, -#endif -}; -/* Instance structure to use this module. */ -const timer_instance_t g_timer0 = -{ - .p_ctrl = &g_timer0_ctrl, - .p_cfg = &g_timer0_cfg, - .p_api = &g_timer_on_gpt -}; -gpt_instance_ctrl_t g_timer2_ctrl; -#if 0 -const gpt_extended_pwm_cfg_t g_timer2_pwm_extend = -{ - .trough_ipl = (BSP_IRQ_DISABLED), -#if defined(VECTOR_NUMBER_GPT2_COUNTER_UNDERFLOW) - .trough_irq = VECTOR_NUMBER_GPT2_COUNTER_UNDERFLOW, -#else - .trough_irq = FSP_INVALID_VECTOR, -#endif - .poeg_link = GPT_POEG_LINK_POEG0, - .output_disable = GPT_OUTPUT_DISABLE_NONE, - .adc_trigger = GPT_ADC_TRIGGER_NONE, - .dead_time_count_up = 0, - .dead_time_count_down = 0, - .adc_a_compare_match = 0, - .adc_b_compare_match = 0, - .interrupt_skip_source = GPT_INTERRUPT_SKIP_SOURCE_NONE, - .interrupt_skip_count = GPT_INTERRUPT_SKIP_COUNT_0, - .interrupt_skip_adc = GPT_INTERRUPT_SKIP_ADC_NONE, - .gtioca_disable_setting = GPT_GTIOC_DISABLE_PROHIBITED, - .gtiocb_disable_setting = GPT_GTIOC_DISABLE_PROHIBITED, -}; -#endif -const gpt_extended_cfg_t g_timer2_extend = -{ - .gtioca = { .output_enabled = false, - .stop_level = GPT_PIN_LEVEL_LOW - }, - .gtiocb = { .output_enabled = true, - .stop_level = GPT_PIN_LEVEL_LOW - }, - .start_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .stop_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .clear_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .count_up_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .count_down_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .capture_a_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .capture_b_source = (gpt_source_t) ( GPT_SOURCE_NONE), - .capture_a_ipl = (BSP_IRQ_DISABLED), - .capture_b_ipl = (BSP_IRQ_DISABLED), -#if defined(VECTOR_NUMBER_GPT2_CAPTURE_COMPARE_A) - .capture_a_irq = VECTOR_NUMBER_GPT2_CAPTURE_COMPARE_A, -#else - .capture_a_irq = FSP_INVALID_VECTOR, -#endif -#if defined(VECTOR_NUMBER_GPT2_CAPTURE_COMPARE_B) - .capture_b_irq = VECTOR_NUMBER_GPT2_CAPTURE_COMPARE_B, -#else - .capture_b_irq = FSP_INVALID_VECTOR, -#endif - .capture_filter_gtioca = GPT_CAPTURE_FILTER_NONE, - .capture_filter_gtiocb = GPT_CAPTURE_FILTER_NONE, -#if 0 - .p_pwm_cfg = &g_timer2_pwm_extend, -#else - .p_pwm_cfg = NULL, -#endif -#if 0 - .gtior_setting.gtior_b.gtioa = (0U << 4U) | (0U << 2U) | (0U << 0U), - .gtior_setting.gtior_b.oadflt = (uint32_t) GPT_PIN_LEVEL_LOW, - .gtior_setting.gtior_b.oahld = 0U, - .gtior_setting.gtior_b.oae = (uint32_t) false, - .gtior_setting.gtior_b.oadf = (uint32_t) GPT_GTIOC_DISABLE_PROHIBITED, - .gtior_setting.gtior_b.nfaen = ((uint32_t) GPT_CAPTURE_FILTER_NONE & 1U), - .gtior_setting.gtior_b.nfcsa = ((uint32_t) GPT_CAPTURE_FILTER_NONE >> 1U), - .gtior_setting.gtior_b.gtiob = (0U << 4U) | (0U << 2U) | (0U << 0U), - .gtior_setting.gtior_b.obdflt = (uint32_t) GPT_PIN_LEVEL_LOW, - .gtior_setting.gtior_b.obhld = 0U, - .gtior_setting.gtior_b.obe = (uint32_t) true, - .gtior_setting.gtior_b.obdf = (uint32_t) GPT_GTIOC_DISABLE_PROHIBITED, - .gtior_setting.gtior_b.nfben = ((uint32_t) GPT_CAPTURE_FILTER_NONE & 1U), - .gtior_setting.gtior_b.nfcsb = ((uint32_t) GPT_CAPTURE_FILTER_NONE >> 1U), -#else - .gtior_setting.gtior = 0U, -#endif -}; -const timer_cfg_t g_timer2_cfg = -{ - .mode = TIMER_MODE_PWM, - /* Actual period: 35.791394133333334 seconds. Actual duty: 50%. */ .period_counts = (uint32_t) 0x100000000, .duty_cycle_counts = 0x80000000, .source_div = (timer_source_div_t)0, - .channel = 2, - .p_callback = NULL, - /** If NULL then do not add & */ -#if defined(NULL) - .p_context = NULL, -#else - .p_context = &NULL, -#endif - .p_extend = &g_timer2_extend, - .cycle_end_ipl = (BSP_IRQ_DISABLED), -#if defined(VECTOR_NUMBER_GPT2_COUNTER_OVERFLOW) - .cycle_end_irq = VECTOR_NUMBER_GPT2_COUNTER_OVERFLOW, -#else - .cycle_end_irq = FSP_INVALID_VECTOR, -#endif -}; -/* Instance structure to use this module. */ -const timer_instance_t g_timer2 = -{ - .p_ctrl = &g_timer2_ctrl, - .p_cfg = &g_timer2_cfg, - .p_api = &g_timer_on_gpt -}; -sci_uart_instance_ctrl_t g_uart4_ctrl; - - baud_setting_t g_uart4_baud_setting = - { - /* Baud rate calculated with 0.160% error. */ .abcse = 0, .abcs = 0, .bgdm = 1, .cks = 0, .brr = 64, .mddr = (uint8_t) 256, .brme = false - }; - - /** UART extended configuration for UARTonSCI HAL driver */ - const sci_uart_extended_cfg_t g_uart4_cfg_extend = - { - .clock = SCI_UART_CLOCK_INT, - .rx_edge_start = SCI_UART_START_BIT_FALLING_EDGE, - .noise_cancel = SCI_UART_NOISE_CANCELLATION_DISABLE, - .rx_fifo_trigger = SCI_UART_RX_FIFO_TRIGGER_MAX, - .p_baud_setting = &g_uart4_baud_setting, - .flow_control = SCI_UART_FLOW_CONTROL_RTS, - #if 0xFF != 0xFF - .flow_control_pin = BSP_IO_PORT_FF_PIN_0xFF, - #else - .flow_control_pin = (bsp_io_port_pin_t) UINT16_MAX, - #endif - }; - - /** UART interface configuration */ - const uart_cfg_t g_uart4_cfg = - { - .channel = 4, - .data_bits = UART_DATA_BITS_8, - .parity = UART_PARITY_OFF, - .stop_bits = UART_STOP_BITS_1, - .p_callback = user_uart4_callback, - .p_context = NULL, - .p_extend = &g_uart4_cfg_extend, -#define RA_NOT_DEFINED (1) -#if (RA_NOT_DEFINED == RA_NOT_DEFINED) - .p_transfer_tx = NULL, -#else - .p_transfer_tx = &RA_NOT_DEFINED, -#endif -#if (RA_NOT_DEFINED == RA_NOT_DEFINED) - .p_transfer_rx = NULL, -#else - .p_transfer_rx = &RA_NOT_DEFINED, -#endif -#undef RA_NOT_DEFINED - .rxi_ipl = (12), - .txi_ipl = (12), - .tei_ipl = (12), - .eri_ipl = (12), -#if defined(VECTOR_NUMBER_SCI4_RXI) - .rxi_irq = VECTOR_NUMBER_SCI4_RXI, -#else - .rxi_irq = FSP_INVALID_VECTOR, -#endif -#if defined(VECTOR_NUMBER_SCI4_TXI) - .txi_irq = VECTOR_NUMBER_SCI4_TXI, -#else - .txi_irq = FSP_INVALID_VECTOR, -#endif -#if defined(VECTOR_NUMBER_SCI4_TEI) - .tei_irq = VECTOR_NUMBER_SCI4_TEI, -#else - .tei_irq = FSP_INVALID_VECTOR, -#endif -#if defined(VECTOR_NUMBER_SCI4_ERI) - .eri_irq = VECTOR_NUMBER_SCI4_ERI, -#else - .eri_irq = FSP_INVALID_VECTOR, -#endif - }; - -/* Instance structure to use this module. */ -const uart_instance_t g_uart4 = -{ - .p_ctrl = &g_uart4_ctrl, - .p_cfg = &g_uart4_cfg, - .p_api = &g_uart_on_sci -}; -adc_instance_ctrl_t g_adc0_ctrl; -const adc_extended_cfg_t g_adc0_cfg_extend = -{ - .add_average_count = ADC_ADD_OFF, - .clearing = ADC_CLEAR_AFTER_READ_ON, - .trigger_group_b = ADC_TRIGGER_SYNC_ELC, - .double_trigger_mode = ADC_DOUBLE_TRIGGER_DISABLED, - .adc_vref_control = ADC_VREF_CONTROL_VREFH, - .enable_adbuf = 0, -#if defined(VECTOR_NUMBER_ADC0_WINDOW_A) - .window_a_irq = VECTOR_NUMBER_ADC0_WINDOW_A, -#else - .window_a_irq = FSP_INVALID_VECTOR, -#endif - .window_a_ipl = (BSP_IRQ_DISABLED), -#if defined(VECTOR_NUMBER_ADC0_WINDOW_B) - .window_b_irq = VECTOR_NUMBER_ADC0_WINDOW_B, -#else - .window_b_irq = FSP_INVALID_VECTOR, -#endif - .window_b_ipl = (BSP_IRQ_DISABLED), -}; -const adc_cfg_t g_adc0_cfg = -{ - .unit = 0, - .mode = ADC_MODE_CONTINUOUS_SCAN, - .resolution = ADC_RESOLUTION_12_BIT, - .alignment = (adc_alignment_t) ADC_ALIGNMENT_RIGHT, - .trigger = ADC_TRIGGER_SOFTWARE, - .p_callback = NULL, - /** If NULL then do not add & */ -#if defined(NULL) - .p_context = NULL, -#else - .p_context = &NULL, -#endif - .p_extend = &g_adc0_cfg_extend, -#if defined(VECTOR_NUMBER_ADC0_SCAN_END) - .scan_end_irq = VECTOR_NUMBER_ADC0_SCAN_END, -#else - .scan_end_irq = FSP_INVALID_VECTOR, -#endif - .scan_end_ipl = (BSP_IRQ_DISABLED), -#if defined(VECTOR_NUMBER_ADC0_SCAN_END_B) - .scan_end_b_irq = VECTOR_NUMBER_ADC0_SCAN_END_B, -#else - .scan_end_b_irq = FSP_INVALID_VECTOR, -#endif - .scan_end_b_ipl = (BSP_IRQ_DISABLED), -}; -#if ((0) | (0)) -const adc_window_cfg_t g_adc0_window_cfg = -{ - .compare_mask = 0, - .compare_mode_mask = 0, - .compare_cfg = (0) | (0) | (0) | (ADC_COMPARE_CFG_EVENT_OUTPUT_OR), - .compare_ref_low = 0, - .compare_ref_high = 0, - .compare_b_channel = (ADC_WINDOW_B_CHANNEL_0), - .compare_b_mode = (ADC_WINDOW_B_MODE_LESS_THAN_OR_OUTSIDE), - .compare_b_ref_low = 0, - .compare_b_ref_high = 0, -}; -#endif -const adc_channel_cfg_t g_adc0_channel_cfg = -{ - .scan_mask = ADC_MASK_CHANNEL_0 | ADC_MASK_CHANNEL_1 | ADC_MASK_CHANNEL_2 | ADC_MASK_CHANNEL_3 | ADC_MASK_CHANNEL_5 | ADC_MASK_CHANNEL_7 | ADC_MASK_CHANNEL_20 | 0, - .scan_mask_group_b = 0, - .priority_group_a = ADC_GROUP_A_PRIORITY_OFF, - .add_mask = 0, - .sample_hold_mask = 0, - .sample_hold_states = 24, -#if ((0) | (0)) - .p_window_cfg = (adc_window_cfg_t *) &g_adc0_window_cfg, -#else - .p_window_cfg = NULL, -#endif -}; -/* Instance structure to use this module. */ -const adc_instance_t g_adc0 = -{ - .p_ctrl = &g_adc0_ctrl, - .p_cfg = &g_adc0_cfg, - .p_channel_cfg = &g_adc0_channel_cfg, - .p_api = &g_adc_on_adc -}; sci_uart_instance_ctrl_t g_uart9_ctrl; baud_setting_t g_uart9_baud_setting = diff --git a/bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.h b/bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.h index c5e48699b0..7e3e2152a5 100644 --- a/bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.h +++ b/bsp/renesas/ra6m3-hmi-board/ra_gen/hal_data.h @@ -4,69 +4,9 @@ #include #include "bsp_api.h" #include "common_data.h" -#include "r_gpt.h" -#include "r_timer_api.h" #include "r_sci_uart.h" #include "r_uart_api.h" -#include "r_adc.h" -#include "r_adc_api.h" FSP_HEADER -/** Timer on GPT Instance. */ -extern const timer_instance_t g_timer8; - -/** Access the GPT instance using these structures when calling API functions directly (::p_api is not used). */ -extern gpt_instance_ctrl_t g_timer8_ctrl; -extern const timer_cfg_t g_timer8_cfg; - -#ifndef NULL -void NULL(timer_callback_args_t * p_args); -#endif -/** Timer on GPT Instance. */ -extern const timer_instance_t g_timer0; - -/** Access the GPT instance using these structures when calling API functions directly (::p_api is not used). */ -extern gpt_instance_ctrl_t g_timer0_ctrl; -extern const timer_cfg_t g_timer0_cfg; - -#ifndef NULL -void NULL(timer_callback_args_t * p_args); -#endif -/** Timer on GPT Instance. */ -extern const timer_instance_t g_timer2; - -/** Access the GPT instance using these structures when calling API functions directly (::p_api is not used). */ -extern gpt_instance_ctrl_t g_timer2_ctrl; -extern const timer_cfg_t g_timer2_cfg; - -#ifndef NULL -void NULL(timer_callback_args_t * p_args); -#endif -/** UART on SCI Instance. */ - extern const uart_instance_t g_uart4; - - /** Access the UART instance using these structures when calling API functions directly (::p_api is not used). */ - extern sci_uart_instance_ctrl_t g_uart4_ctrl; - extern const uart_cfg_t g_uart4_cfg; - extern const sci_uart_extended_cfg_t g_uart4_cfg_extend; - - #ifndef user_uart4_callback - void user_uart4_callback(uart_callback_args_t * p_args); - #endif -/** ADC on ADC Instance. */ -extern const adc_instance_t g_adc0; - -/** Access the ADC instance using these structures when calling API functions directly (::p_api is not used). */ -extern adc_instance_ctrl_t g_adc0_ctrl; -extern const adc_cfg_t g_adc0_cfg; -extern const adc_channel_cfg_t g_adc0_channel_cfg; - -#ifndef NULL -void NULL(adc_callback_args_t * p_args); -#endif - -#ifndef NULL -#define ADC_DMAC_CHANNELS_PER_BLOCK_NULL 7 -#endif /** UART on SCI Instance. */ extern const uart_instance_t g_uart9; diff --git a/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.c b/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.c index 28065e8415..1bddd01208 100644 --- a/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.c +++ b/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.c @@ -8,10 +8,6 @@ [1] = sci_uart_txi_isr, /* SCI9 TXI (Transmit data empty) */ [2] = sci_uart_tei_isr, /* SCI9 TEI (Transmit end) */ [3] = sci_uart_eri_isr, /* SCI9 ERI (Receive error) */ - [4] = sci_uart_rxi_isr, /* SCI4 RXI (Received data full) */ - [5] = sci_uart_txi_isr, /* SCI4 TXI (Transmit data empty) */ - [6] = sci_uart_tei_isr, /* SCI4 TEI (Transmit end) */ - [7] = sci_uart_eri_isr, /* SCI4 ERI (Receive error) */ }; const bsp_interrupt_event_t g_interrupt_event_link_select[BSP_ICU_VECTOR_MAX_ENTRIES] = { @@ -19,9 +15,5 @@ [1] = BSP_PRV_IELS_ENUM(EVENT_SCI9_TXI), /* SCI9 TXI (Transmit data empty) */ [2] = BSP_PRV_IELS_ENUM(EVENT_SCI9_TEI), /* SCI9 TEI (Transmit end) */ [3] = BSP_PRV_IELS_ENUM(EVENT_SCI9_ERI), /* SCI9 ERI (Receive error) */ - [4] = BSP_PRV_IELS_ENUM(EVENT_SCI4_RXI), /* SCI4 RXI (Received data full) */ - [5] = BSP_PRV_IELS_ENUM(EVENT_SCI4_TXI), /* SCI4 TXI (Transmit data empty) */ - [6] = BSP_PRV_IELS_ENUM(EVENT_SCI4_TEI), /* SCI4 TEI (Transmit end) */ - [7] = BSP_PRV_IELS_ENUM(EVENT_SCI4_ERI), /* SCI4 ERI (Receive error) */ }; #endif \ No newline at end of file diff --git a/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.h b/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.h index bd5655b853..d1ae7d9cbd 100644 --- a/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.h +++ b/bsp/renesas/ra6m3-hmi-board/ra_gen/vector_data.h @@ -3,7 +3,7 @@ #define VECTOR_DATA_H /* Number of interrupts allocated */ #ifndef VECTOR_DATA_IRQ_COUNT - #define VECTOR_DATA_IRQ_COUNT (8) + #define VECTOR_DATA_IRQ_COUNT (4) #endif /* ISR prototypes */ void sci_uart_rxi_isr(void); @@ -20,12 +20,4 @@ #define SCI9_TEI_IRQn ((IRQn_Type) 2) /* SCI9 TEI (Transmit end) */ #define VECTOR_NUMBER_SCI9_ERI ((IRQn_Type) 3) /* SCI9 ERI (Receive error) */ #define SCI9_ERI_IRQn ((IRQn_Type) 3) /* SCI9 ERI (Receive error) */ - #define VECTOR_NUMBER_SCI4_RXI ((IRQn_Type) 4) /* SCI4 RXI (Received data full) */ - #define SCI4_RXI_IRQn ((IRQn_Type) 4) /* SCI4 RXI (Received data full) */ - #define VECTOR_NUMBER_SCI4_TXI ((IRQn_Type) 5) /* SCI4 TXI (Transmit data empty) */ - #define SCI4_TXI_IRQn ((IRQn_Type) 5) /* SCI4 TXI (Transmit data empty) */ - #define VECTOR_NUMBER_SCI4_TEI ((IRQn_Type) 6) /* SCI4 TEI (Transmit end) */ - #define SCI4_TEI_IRQn ((IRQn_Type) 6) /* SCI4 TEI (Transmit end) */ - #define VECTOR_NUMBER_SCI4_ERI ((IRQn_Type) 7) /* SCI4 ERI (Receive error) */ - #define SCI4_ERI_IRQn ((IRQn_Type) 7) /* SCI4 ERI (Receive error) */ #endif /* VECTOR_DATA_H */ \ No newline at end of file diff --git a/bsp/renesas/ra6m3-hmi-board/rtconfig.h b/bsp/renesas/ra6m3-hmi-board/rtconfig.h index dfd1959641..d9cbc69663 100644 --- a/bsp/renesas/ra6m3-hmi-board/rtconfig.h +++ b/bsp/renesas/ra6m3-hmi-board/rtconfig.h @@ -27,7 +27,6 @@ #define RT_USING_DEBUG #define RT_DEBUGING_COLOR #define RT_DEBUGING_CONTEXT -#define RT_DEBUGING_INIT /* Inter-Thread communication */ @@ -85,11 +84,7 @@ #define RT_USING_SERIAL #define RT_USING_SERIAL_V2 #define RT_SERIAL_USING_DMA -#define RT_USING_I2C -#define RT_USING_I2C_BITOPS #define RT_USING_PIN -#define RT_USING_ADC -#define RT_USING_PWM /* Using USB */ @@ -113,17 +108,16 @@ /* Socket is in the 'Network' category */ -#define RT_USING_CPLUSPLUS /* Network */ +/* Memory protection */ + + /* Utilities */ -/* Memory management */ - - /* RT-Thread Utestcases */ @@ -143,6 +137,12 @@ /* CYW43012 WiFi */ +/* BL808 WiFi */ + + +/* CYW43439 WiFi */ + + /* IoT Cloud */ @@ -181,8 +181,6 @@ /* Micrium: Micrium software products porting for RT-Thread */ -#define PKG_USING_PERF_COUNTER -#define PKG_USING_PERF_COUNTER_LATEST_VERSION /* peripheral libraries and drivers */ @@ -213,14 +211,6 @@ /* Arduino libraries */ -#define PKG_USING_RTDUINO -#define RTDUINO_THREAD_SIZE 2048 -#define RTDUINO_THREAD_PRIO 30 -#define RTDUINO_SUPPORT_HIGH_PRECISION_MICROS -#define RTDUINO_USING_WIRE -#define RTDUINO_WIRE_BUFFER_LENGTH 32 -#define RTDUINO_USING_SERVO -#define PKG_USING_RTDUINO_LATEST_VERSION /* Projects and Demos */ @@ -262,24 +252,14 @@ /* Onboard Peripheral Drivers */ -#define BSP_USING_ARDUINO /* On-chip Peripheral Drivers */ #define BSP_USING_GPIO #define BSP_USING_UART -#define BSP_USING_UART4 -#define BSP_UART4_RX_BUFSIZE 256 -#define BSP_UART4_TX_BUFSIZE 0 #define BSP_USING_UART9 #define BSP_UART9_RX_BUFSIZE 256 #define BSP_UART9_TX_BUFSIZE 0 -#define BSP_USING_I2C -#define BSP_USING_ADC -#define BSP_USING_ADC0 -#define BSP_USING_PWM -#define BSP_USING_PWM2 -#define BSP_USING_PWM2_CH2 /* Board extended module Drivers */ diff --git a/bsp/renesas/ra6m4-cpk/README.md b/bsp/renesas/ra6m4-cpk/README.md index bc0141bb1f..facf3401ad 100644 --- a/bsp/renesas/ra6m4-cpk/README.md +++ b/bsp/renesas/ra6m4-cpk/README.md @@ -168,6 +168,15 @@ void hal_entry(void) 3. 如何将 **”CPK-RA6M4板级支持包“**添加到 FSP 中,请参考文档[如何导入板级支持包](https://www2.renesas.cn/document/ppt/1527171?language=zh&r=1527191) 4. 请查看文档:[使用 FSP 配置外设驱动](../docs/RA系列使用FSP配置外设驱动.md),在 MDK 中通过添加自定义命名来打开当前工程的 FSP 配置。 +目前仓库 bsp 默认使能最小体量配置,用户可通过如下步骤使能 env 外设配置: + +1. 在 bsp 目录下打开 env 工具,使用 `scons --target=mdk5`命令生成 MDK 工程。 +2. 打开 bsp 目录下的`project.uvprojx`文件,选择上方导航栏的 `Software Components`配置,打开后找到`Flex Software`下的`RA Configuration`旁的配置按钮,该操作会自动查找当前电脑环境下安装的 fsp 版本,选择指定版本后进入 fsp。 + ![](../docs/figures/mdk_rasc.png) +3. 在进入 fsp 后我们可以发现,已经存在了一些已经配置完成的外设,此时我们点击`Generate Project Content`按钮即可生成所需驱动文件。 + ![](../docs/figures/fsp_configure.png) +4. 接下来回到 env,使能所需的外设配置后保存退出即可。 + **ENV 配置** - 如何使用 ENV 工具:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/#/development-tools/env/env) diff --git a/bsp/renesas/ra6m4-cpk/board/Kconfig b/bsp/renesas/ra6m4-cpk/board/Kconfig index 308a32b680..c7f17e6cf8 100644 --- a/bsp/renesas/ra6m4-cpk/board/Kconfig +++ b/bsp/renesas/ra6m4-cpk/board/Kconfig @@ -8,11 +8,36 @@ menu "Hardware Drivers Config" default y menu "Onboard Peripheral Drivers" - config BSP_USING_SEGGER_RTT_CONSOLE - bool "Enable SEGGER-RTT for console" - select PKG_USING_SEGGER_RTT + + config BSP_USING_SEGGER_RTT_CONSOLE + bool "Enable SEGGER-RTT for console" + select PKG_USING_SEGGER_RTT + default n + + config BSP_USING_SPI_LCD + bool "Enable SPI LCD" + select BSP_USING_GPIO + select BSP_USING_SPI + select BSP_USING_SPI1 default n + menuconfig BSP_USING_LVGL + bool "Enable LVGL for LCD" + select PKG_USING_LVGL + default n + if BSP_USING_LVGL + config BSP_USING_LCD_ILI9431 + bool "Enable LVGL for LCD_ILI9431" + select PKG_USING_ILI9341 + select BSP_USING_SPI_LCD + default n + + config BSP_USING_LVGL_DEMO + bool "Enable LVGL demo" + select PKG_USING_LV_MUSIC_DEMO + default y + endif + endmenu menu "On-chip Peripheral Drivers" @@ -446,10 +471,24 @@ menu "Hardware Drivers Config" select RT_LIBC_USING_FILEIO select RT_USING_POSIX_DEVIO if BSP_USING_SDHI - config SDHI_USING_1_BIT - bool "Use 1-bit Mode(4-bit when disable)" - default y - endif + menuconfig BSP_USING_SDHI0 + bool "Enable SDHI0" + default n + if BSP_USING_SDHI0 + config SDHI_USING_1_BIT + bool "Use 1-bit Mode(4-bit when disable)" + default y + endif + + menuconfig BSP_USING_SDHI1 + bool "Enable SDHI1" + default n + if BSP_USING_SDHI1 + config SDHI_USING_1_BIT + bool "Use 1-bit Mode(4-bit when disable)" + default y + endif + endif menuconfig BSP_USING_CAN bool "Enable CAN" @@ -465,32 +504,6 @@ menu "Hardware Drivers Config" default n endif - config BSP_USING_SPI_LCD - bool "Enable SPI LCD" - select BSP_USING_GPIO - select BSP_USING_SPI - select BSP_USING_SPI1 - default n - - menuconfig BSP_USING_LVGL - bool "Enable LVGL for LCD" - select PKG_USING_LVGL - default n - if BSP_USING_LVGL - config BSP_USING_LCD_ILI9431 - bool "Enable LVGL for LCD_ILI9431" - select PKG_USING_ILI9341 - select BSP_USING_SPI_LCD - default n - endif - - if BSP_USING_LVGL - config BSP_USING_LVGL_DEMO - bool "Enable LVGL demo" - select PKG_USING_LV_MUSIC_DEMO - default y - endif - endmenu menu "Board extended module Drivers" diff --git a/bsp/renesas/ra6m4-iot/README.md b/bsp/renesas/ra6m4-iot/README.md index 5dbc72639b..8e31ab83d8 100644 --- a/bsp/renesas/ra6m4-iot/README.md +++ b/bsp/renesas/ra6m4-iot/README.md @@ -155,6 +155,15 @@ void hal_entry(void) 3. 如何将 **”IOT-RA6M4 板级支持包“**添加到 FSP 中,请参考文档[如何导入板级支持包](https://www2.renesas.cn/document/ppt/1527171?language=zh&r=1527191) 4. 请查看文档:[使用瑞萨 FSP 配置工具](../docs/RA系列使用FSP配置外设驱动.md)。在 MDK 中通过添加自定义命名来打开当前工程的 FSP 配置。 +目前仓库 bsp 默认使能最小体量配置,用户可通过如下步骤使能 env 外设配置: + +1. 在 bsp 目录下打开 env 工具,使用 `scons --target=mdk5`命令生成 MDK 工程。 +2. 打开 bsp 目录下的`project.uvprojx`文件,选择上方导航栏的 `Software Components`配置,打开后找到`Flex Software`下的`RA Configuration`旁的配置按钮,该操作会自动查找当前电脑环境下安装的 fsp 版本,选择指定版本后进入 fsp。 + ![](../docs/figures/mdk_rasc.png) +3. 在进入 fsp 后我们可以发现,已经存在了一些已经配置完成的外设,此时我们点击`Generate Project Content`按钮即可生成所需驱动文件。 + ![](../docs/figures/fsp_configure.png) +4. 接下来回到 env,使能所需的外设配置后保存退出即可。 + **ENV 配置** - 如何使用 ENV 工具:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/#/development-tools/env/env) @@ -167,7 +176,6 @@ void hal_entry(void) 3. 输入`pkgs --update`命令更新软件包。 4. 输入`scons --target=mdk5` 命令重新生成工程。 - ## FAQ ### 使用 MDK 的 DEBUG 时如果遇到提示 “Error: Flash Download failed Cortex-M33” 怎么办? diff --git a/bsp/renesas/ra6m4-iot/board/Kconfig b/bsp/renesas/ra6m4-iot/board/Kconfig index 8fcf428d6c..709d626b68 100644 --- a/bsp/renesas/ra6m4-iot/board/Kconfig +++ b/bsp/renesas/ra6m4-iot/board/Kconfig @@ -425,10 +425,24 @@ menu "Hardware Drivers Config" select RT_LIBC_USING_FILEIO select RT_USING_POSIX_DEVIO if BSP_USING_SDHI - config SDHI_USING_1_BIT - bool "Use 1-bit Mode(4-bit when disable)" - default y - endif + menuconfig BSP_USING_SDHI0 + bool "Enable SDHI0" + default n + if BSP_USING_SDHI0 + config SDHI_USING_1_BIT + bool "Use 1-bit Mode(4-bit when disable)" + default y + endif + + menuconfig BSP_USING_SDHI1 + bool "Enable SDHI1" + default n + if BSP_USING_SDHI1 + config SDHI_USING_1_BIT + bool "Use 1-bit Mode(4-bit when disable)" + default y + endif + endif menuconfig BSP_USING_CAN bool "Enable CAN" diff --git a/bsp/renesas/ra8d1-ek/.config b/bsp/renesas/ra8d1-ek/.config index cb796468ff..bc43e16064 100644 --- a/bsp/renesas/ra8d1-ek/.config +++ b/bsp/renesas/ra8d1-ek/.config @@ -22,6 +22,7 @@ CONFIG_RT_TICK_PER_SECOND=1000 CONFIG_RT_USING_OVERFLOW_CHECK=y CONFIG_RT_USING_HOOK=y CONFIG_RT_HOOK_USING_FUNC_PTR=y +# CONFIG_RT_USING_HOOKLIST is not set CONFIG_RT_USING_IDLE_HOOK=y CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 CONFIG_IDLE_THREAD_STACK_SIZE=256 @@ -73,6 +74,7 @@ CONFIG_RT_USING_HEAP=y CONFIG_RT_USING_DEVICE=y # CONFIG_RT_USING_DEVICE_OPS is not set # CONFIG_RT_USING_INTERRUPT_INFO is not set +# CONFIG_RT_USING_THREDSAFE_PRINTF is not set CONFIG_RT_USING_CONSOLE=y CONFIG_RT_CONSOLEBUF_SIZE=128 CONFIG_RT_CONSOLE_DEVICE_NAME="uart9" @@ -117,16 +119,6 @@ CONFIG_FINSH_USING_OPTION_COMPLETION=y # DFS: device virtual file system # # CONFIG_RT_USING_DFS is not set -# CONFIG_RT_USING_DFS_V1 is not set -# CONFIG_RT_USING_DFS_V2 is not set -# CONFIG_RT_DFS_ELM_USE_LFN_0 is not set -# CONFIG_RT_DFS_ELM_USE_LFN_1 is not set -# CONFIG_RT_DFS_ELM_USE_LFN_2 is not set -# CONFIG_RT_DFS_ELM_USE_LFN_3 is not set -# CONFIG_RT_DFS_ELM_LFN_UNICODE_0 is not set -# CONFIG_RT_DFS_ELM_LFN_UNICODE_1 is not set -# CONFIG_RT_DFS_ELM_LFN_UNICODE_2 is not set -# CONFIG_RT_DFS_ELM_LFN_UNICODE_3 is not set # CONFIG_RT_USING_FAL is not set # @@ -283,6 +275,21 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # # CONFIG_PKG_USING_WLAN_WICED is not set # CONFIG_PKG_USING_RW007 is not set + +# +# CYW43012 WiFi +# +# CONFIG_PKG_USING_WLAN_CYW43012 is not set + +# +# BL808 WiFi +# +# CONFIG_PKG_USING_WLAN_BL808 is not set + +# +# CYW43439 WiFi +# +# CONFIG_PKG_USING_WLAN_CYW43439 is not set # CONFIG_PKG_USING_COAP is not set # CONFIG_PKG_USING_NOPOLL is not set # CONFIG_PKG_USING_NETUTILS is not set @@ -304,7 +311,6 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_JIOT-C-SDK is not set # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set # CONFIG_PKG_USING_JOYLINK is not set -# CONFIG_PKG_USING_EZ_IOT_OS is not set # CONFIG_PKG_USING_IOTSHARP_SDK is not set # CONFIG_PKG_USING_NIMBLE is not set # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set @@ -325,6 +331,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_NMEALIB is not set # CONFIG_PKG_USING_PDULIB is not set # CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_BT_CYW43012 is not set +# CONFIG_PKG_USING_CYW43XX is not set # CONFIG_PKG_USING_LORAWAN_ED_STACK is not set # CONFIG_PKG_USING_WAYZ_IOTKIT is not set # CONFIG_PKG_USING_MAVLINK is not set @@ -344,6 +352,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_ZFTP is not set # CONFIG_PKG_USING_WOL is not set # CONFIG_PKG_USING_ZEPHYR_POLLING is not set +# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set +# CONFIG_PKG_USING_LHC_MODBUS is not set # # security packages @@ -390,7 +400,6 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # LVGL: powerful and easy-to-use embedded GUI library # # CONFIG_PKG_USING_LVGL is not set -# CONFIG_PKG_USING_LITTLEVGL2RTT is not set # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set # CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set @@ -465,6 +474,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_HASH_MATCH is not set # CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set # CONFIG_PKG_USING_VOFA_PLUS is not set +# CONFIG_PKG_USING_ZDEBUG is not set # # system packages @@ -501,6 +511,8 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_UC_COMMON is not set # CONFIG_PKG_USING_UC_MODBUS is not set # CONFIG_PKG_USING_FREERTOS_WRAPPER is not set +# CONFIG_PKG_USING_LITEOS_SDK is not set +# CONFIG_PKG_USING_TZ_DATABASE is not set # CONFIG_PKG_USING_CAIRO is not set # CONFIG_PKG_USING_PIXMAN is not set # CONFIG_PKG_USING_PARTITION is not set @@ -524,6 +536,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_QBOOT is not set # CONFIG_PKG_USING_PPOOL is not set # CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_RPMSG_LITE is not set # CONFIG_PKG_USING_LPM is not set # CONFIG_PKG_USING_TLSF is not set # CONFIG_PKG_USING_EVENT_RECORDER is not set @@ -537,6 +550,11 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_AGILE_UPGRADE is not set # CONFIG_PKG_USING_FLASH_BLOB is not set # CONFIG_PKG_USING_MLIBC is not set +# CONFIG_PKG_USING_TASK_MSG_BUS is not set +# CONFIG_PKG_USING_SFDB is not set +# CONFIG_PKG_USING_RTP is not set +# CONFIG_PKG_USING_REB is not set +# CONFIG_PKG_USING_R_RHEALSTONE is not set # # peripheral libraries and drivers @@ -601,6 +619,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_BALANCE is not set # CONFIG_PKG_USING_SHT2X is not set # CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_SHT4X is not set # CONFIG_PKG_USING_AD7746 is not set # CONFIG_PKG_USING_ADT74XX is not set # CONFIG_PKG_USING_MAX17048 is not set @@ -701,6 +720,11 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_FINGERPRINT is not set # CONFIG_PKG_USING_BT_ECB02C is not set # CONFIG_PKG_USING_UAT is not set +# CONFIG_PKG_USING_ST7789 is not set +# CONFIG_PKG_USING_VS1003 is not set +# CONFIG_PKG_USING_X9555 is not set +# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set +# CONFIG_PKG_USING_BT_MX01 is not set # CONFIG_PKG_USING_SPI_TOOLS is not set # @@ -715,6 +739,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_ULAPACK is not set # CONFIG_PKG_USING_QUEST is not set # CONFIG_PKG_USING_NAXOS is not set +# CONFIG_PKG_USING_R_TINYMAIX is not set # # Signal Processing and Control Algorithm Packages @@ -724,6 +749,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_UKAL is not set # CONFIG_PKG_USING_DIGITALCTRL is not set # CONFIG_PKG_USING_KISSFFT is not set +# CONFIG_PKG_USING_CMSIS_DSP is not set # # miscellaneous packages @@ -755,12 +781,14 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_DONUT is not set # CONFIG_PKG_USING_COWSAY is not set # CONFIG_PKG_USING_MORSE is not set +# CONFIG_PKG_USING_TINYSQUARE is not set # CONFIG_PKG_USING_LIBCSV is not set # CONFIG_PKG_USING_OPTPARSE is not set # CONFIG_PKG_USING_FASTLZ is not set # CONFIG_PKG_USING_MINILZO is not set # CONFIG_PKG_USING_QUICKLZ is not set # CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_RALARAM is not set # CONFIG_PKG_USING_MULTIBUTTON is not set # CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set # CONFIG_PKG_USING_CANFESTIVAL is not set @@ -798,6 +826,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # # CONFIG_PKG_USING_ARDUINO_MSGQ_C_CPP_DEMO is not set # CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_NINEINONE_SENSOR_SHIELD is not set # CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set # CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set @@ -805,13 +834,13 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # Sensors # # CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS is not set -# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L1X is not set -# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL6180X is not set -# CONFIG_PKG_USING_ADAFRUIT_MAX31855 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31855 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX6675 is not set @@ -856,7 +885,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set -# CONFIG_PKG_USING_ADAFRUIT_MSA301 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MSA301 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set @@ -895,7 +924,6 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set -# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set @@ -918,7 +946,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_ARDUINO_SEEED_TSL2561 is not set # CONFIG_PKG_USING_ARDUINO_SEEED_PAJ7620 is not set # CONFIG_PKG_USING_ARDUINO_SEEED_VL53L0X is not set -# CONFIG_PKG_USING_SEEED_ITG3200 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ITG3200 is not set # CONFIG_PKG_USING_ARDUINO_SEEED_SHT31 is not set # CONFIG_PKG_USING_ARDUINO_SEEED_HP20X is not set # CONFIG_PKG_USING_ARDUINO_SEEED_DRV2605L is not set @@ -926,7 +954,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_ARDUINO_SEEED_HMC5883L is not set # CONFIG_PKG_USING_ARDUINO_SEEED_LSM303DLH is not set # CONFIG_PKG_USING_ARDUINO_SEEED_TCS3414CS is not set -# CONFIG_PKG_USING_SEEED_MP503 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MP503 is not set # CONFIG_PKG_USING_ARDUINO_SEEED_BMP085 is not set # CONFIG_PKG_USING_ARDUINO_SEEED_HIGHTEMP is not set # CONFIG_PKG_USING_ARDUINO_SEEED_VEML6070 is not set @@ -939,12 +967,14 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_PKG_USING_ARDUINO_SEEED_MCP9600 is not set # CONFIG_PKG_USING_ARDUINO_SEEED_LTC2941 is not set # CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set # # Display # # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set # CONFIG_PKG_USING_ARDUINO_U8G2 is not set +# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set @@ -953,6 +983,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # # Timing # +# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set # CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set # CONFIG_PKG_USING_ARDUINO_TICKER is not set # CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set @@ -978,18 +1009,17 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set -# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TPA2016 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DRV2605 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS1841 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS3502 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set # # Other # # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set -# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set # # Signal IO @@ -1019,6 +1049,12 @@ CONFIG_SOC_SERIES_R7FA8M85=y # CONFIG_SOC_R7FA8D1AH=y +# +# Onboard Peripheral Drivers +# +# CONFIG_BSP_USING_FS is not set +# CONFIG_BSP_USING_LVGL is not set + # # On-chip Peripheral Drivers # @@ -1037,14 +1073,11 @@ CONFIG_BSP_UART9_TX_BUFSIZE=0 # CONFIG_BSP_USING_SCI is not set # CONFIG_BSP_USING_SPI is not set # CONFIG_BSP_USING_I2C is not set -# CONFIG_BSP_USING_FS is not set # CONFIG_BSP_USING_SDHI is not set # CONFIG_BSP_USING_PWM is not set # CONFIG_BSP_USING_CAN is not set # CONFIG_BSP_USING_LCD is not set -CONFIG_BSP_USING_SDRAM=y -CONFIG_BSP_USING_SDRAM_SIZE=0x8000000 +# CONFIG_BSP_USING_SDRAM is not set # CONFIG_BSP_USING_G2D is not set # CONFIG_BSP_USING_JPEG is not set # CONFIG_BSP_USING_ETH is not set -# CONFIG_BSP_USING_LVGL is not set diff --git a/bsp/renesas/ra8d1-ek/README.md b/bsp/renesas/ra8d1-ek/README.md index 742bb9afbf..e5304a82f7 100644 --- a/bsp/renesas/ra8d1-ek/README.md +++ b/bsp/renesas/ra8d1-ek/README.md @@ -167,6 +167,19 @@ void hal_entry(void) 3. 输入`pkgs --update`命令更新软件包。 4. 输入`scons --target=mdk5` 命令重新生成工程。 +**FSP配置** + +* 如何使用 FSP:[RA系列使用 FSP 配置外设驱动](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA系列使用FSP配置外设驱动?id=ra系列使用-fsp-配置外设驱动) + +目前仓库 bsp 默认使能最小体量配置,用户可通过如下步骤使能 env 外设配置: + +1. 在 bsp 目录下打开 env 工具,使用 `scons --target=mdk5`命令生成 MDK 工程。 +2. 打开 bsp 目录下的`project.uvprojx`文件,选择上方导航栏的 `Software Components`配置,打开后找到`Flex Software`下的`RA Configuration`旁的配置按钮,该操作会自动查找当前电脑环境下安装的 fsp 版本,选择指定版本后进入 fsp。 + ![](../docs/figures/mdk_rasc.png) +3. 在进入 fsp 后我们可以发现,已经存在了一些已经配置完成的外设,此时我们点击`Generate Project Content`按钮即可生成所需驱动文件。 + ![](../docs/figures/fsp_configure.png) +4. 接下来回到 env,使能所需的外设配置后保存退出即可。 + ## 联系人信息 在使用过程中若您有任何的想法和建议,建议您通过以下方式来联系到我们 [RT-Thread 社区论坛](https://club.rt-thread.org/) diff --git a/bsp/renesas/ra8d1-ek/README_EN.md b/bsp/renesas/ra8d1-ek/README_EN.md index f4bca06975..326bf88c50 100644 --- a/bsp/renesas/ra8d1-ek/README_EN.md +++ b/bsp/renesas/ra8d1-ek/README_EN.md @@ -138,6 +138,19 @@ The steps are as follows: 3. Enter the `pkgs --update` command to update the software package. 4. Enter the `scons --target=mdk5` command to regenerate the project. +**FSP Configuration** + +* How to Use FSP: [Configuring Peripheral Drivers for RA Series Using FSP](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA系列使用FSP配置外设驱动?id=ra系列使用-fsp-配置外设驱动) + +The current repository's BSP is configured with the minimum footprint enabled by default. Users can enable peripheral configurations through the following steps: + +1. Open the `env` tool in the BSP directory and use the `scons --target=mdk5` command to generate an MDK project. +2. Open the `project.uvprojx` file in the BSP directory, select the `Software Components` configuration in the top navigation bar, and open the configuration button next to `RA Configuration` under `Flex Software`. This operation will automatically detect the installed FSP version on the current computer. After selecting the specified version, enter FSP. + ![](../docs/figures/mdk_rasc.png) +3. Upon entering FSP, pre-configured peripherals are already present. Click the `Generate Project Content` button to generate the required driver files. + ![](../docs/figures/fsp_configure.png) +4. Return to `env`, enable the necessary peripheral configurations, save, and exit. + ## Contribute the Code If you’re interested in the EK-RA8D1 and have some cool projects you’d like to share with everyone, we’d love for you to contribute your code! You can check out [how to contribute to RT-Thread’s code](https://www.rt-thread.io/contribution.html). Let’s make something awesome together! \ No newline at end of file diff --git a/bsp/renesas/ra8d1-ek/board/Kconfig b/bsp/renesas/ra8d1-ek/board/Kconfig index 531186b99d..e2ce5bef45 100644 --- a/bsp/renesas/ra8d1-ek/board/Kconfig +++ b/bsp/renesas/ra8d1-ek/board/Kconfig @@ -7,6 +7,47 @@ menu "Hardware Drivers Config" select RT_USING_USER_MAIN default y + menu "Onboard Peripheral Drivers" + + menuconfig BSP_USING_FS + bool "Enable filesystem" + default n + if BSP_USING_FS + config BSP_USING_ONCHIP_FS + bool "Enable ONCHIP filesystem" + select RT_USING_FAL + select RT_USING_DFS_ELMFAT + select RT_USING_MTD_NOR + select BSP_USING_ONCHIP_FLASH + default n + config BSP_USING_SDCARD_FS + bool "Enable SDCARD filesystem" + select BSP_USING_SDHI + select BSP_USING_SDHI1 + select RT_USING_DFS_ELMFAT + default n + config BSP_USING_SPICARD_FS + bool "Enable SPI FLASH filesystem" + select BSP_USING_SCI_SPI + select BSP_USING_SCI_SPI2 + select RT_USING_SPI_MSD + select RT_USING_DFS_ELMFAT + default n + endif + + menuconfig BSP_USING_LVGL + bool "Enable LVGL for LCD" + select PKG_USING_LVGL + default n + if BSP_USING_LVGL + config BSP_USING_LCD_RGB + bool "Enable LVGL for LCD_RGB565" + select BSP_USING_LCD + default n + endif + + endmenu + menu "On-chip Peripheral Drivers" source "../libraries/HAL_Drivers/Kconfig" @@ -473,31 +514,6 @@ menu "Hardware Drivers Config" endif endif - menuconfig BSP_USING_FS - bool "Enable filesystem" - default n - if BSP_USING_FS - config BSP_USING_ONCHIP_FS - bool "Enable ONCHIP filesystem" - select RT_USING_FAL - select RT_USING_DFS_ELMFAT - select RT_USING_MTD_NOR - select BSP_USING_ONCHIP_FLASH - default n - config BSP_USING_SDCARD_FS - bool "Enable SDCARD filesystem" - select BSP_USING_SDHI - select RT_USING_DFS_ELMFAT - default n - config BSP_USING_SPICARD_FS - bool "Enable SPI FLASH filesystem" - select BSP_USING_SCI_SPI - select BSP_USING_SCI_SPI2 - select RT_USING_SPI_MSD - select RT_USING_DFS_ELMFAT - default n - endif - menuconfig BSP_USING_SDHI bool "Enable SDHI" default n @@ -506,10 +522,24 @@ menu "Hardware Drivers Config" select RT_LIBC_USING_FILEIO select RT_USING_POSIX_DEVIO if BSP_USING_SDHI - config SDHI_USING_1_BIT - bool "Use 1-bit Mode(4-bit when disable)" - default y - endif + menuconfig BSP_USING_SDHI0 + bool "Enable SDHI0" + default n + if BSP_USING_SDHI0 + config SDHI_USING_1_BIT + bool "Use 1-bit Mode(4-bit when disable)" + default y + endif + + menuconfig BSP_USING_SDHI1 + bool "Enable SDHI1" + default n + if BSP_USING_SDHI1 + config SDHI_USING_1_BIT + bool "Use 1-bit Mode(4-bit when disable)" + default y + endif + endif menuconfig BSP_USING_PWM bool "Enable PWM" @@ -566,16 +596,5 @@ menu "Hardware Drivers Config" select RT_USING_LWIP select RT_USING_NETDEV default n - - menuconfig BSP_USING_LVGL - bool "Enable LVGL for LCD" - select PKG_USING_LVGL - default n - if BSP_USING_LVGL - config BSP_USING_LCD_RGB - bool "Enable LVGL for LCD_RGB565" - select BSP_USING_LCD - default n - endif endmenu endmenu diff --git a/bsp/renesas/ra8d1-ek/ra/SConscript b/bsp/renesas/ra8d1-ek/ra/SConscript index 52e96ac900..294776d305 100644 --- a/bsp/renesas/ra8d1-ek/ra/SConscript +++ b/bsp/renesas/ra8d1-ek/ra/SConscript @@ -22,5 +22,9 @@ elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): cwd + '/fsp/inc/api', cwd + '/fsp/inc/instances',] +if GetDepend('BSP_USING_G2D'): + src += Glob(cwd + '/tes/dave2d/src/*.c') + CPPPATH += [cwd + '/tes/dave2d/inc'] + group = DefineGroup('ra', src, depend = [''], CPPPATH = CPPPATH) Return('group') diff --git a/bsp/renesas/ra8d1-ek/rtconfig.h b/bsp/renesas/ra8d1-ek/rtconfig.h index 3a11c24175..2745a13091 100644 --- a/bsp/renesas/ra8d1-ek/rtconfig.h +++ b/bsp/renesas/ra8d1-ek/rtconfig.h @@ -137,6 +137,15 @@ /* Wiced WiFi */ +/* CYW43012 WiFi */ + + +/* BL808 WiFi */ + + +/* CYW43439 WiFi */ + + /* IoT Cloud */ @@ -244,6 +253,9 @@ #define SOC_R7FA8D1AH +/* Onboard Peripheral Drivers */ + + /* On-chip Peripheral Drivers */ #define BSP_USING_GPIO @@ -251,7 +263,5 @@ #define BSP_USING_UART9 #define BSP_UART9_RX_BUFSIZE 256 #define BSP_UART9_TX_BUFSIZE 0 -#define BSP_USING_SDRAM -#define BSP_USING_SDRAM_SIZE 0x8000000 #endif diff --git a/bsp/renesas/ra8m1-ek/README.md b/bsp/renesas/ra8m1-ek/README.md index d65b45e491..23e4d0c7c2 100644 --- a/bsp/renesas/ra8m1-ek/README.md +++ b/bsp/renesas/ra8m1-ek/README.md @@ -167,6 +167,19 @@ void hal_entry(void) 3. 输入`pkgs --update`命令更新软件包。 4. 输入`scons --target=mdk5` 命令重新生成工程。 +**FSP配置** + +* 如何使用 FSP:[RA系列使用 FSP 配置外设驱动](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA系列使用FSP配置外设驱动?id=ra系列使用-fsp-配置外设驱动) + +目前仓库 bsp 默认使能最小体量配置,用户可通过如下步骤使能 env 外设配置: + +1. 在 bsp 目录下打开 env 工具,使用 `scons --target=mdk5`命令生成 MDK 工程。 +2. 打开 bsp 目录下的`project.uvprojx`文件,选择上方导航栏的 `Software Components`配置,打开后找到`Flex Software`下的`RA Configuration`旁的配置按钮,该操作会自动查找当前电脑环境下安装的 fsp 版本,选择指定版本后进入 fsp。 + ![](../docs/figures/mdk_rasc.png) +3. 在进入 fsp 后我们可以发现,已经存在了一些已经配置完成的外设,此时我们点击`Generate Project Content`按钮即可生成所需驱动文件。 + ![](../docs/figures/fsp_configure.png) +4. 接下来回到 env,使能所需的外设配置后保存退出即可。 + ## 联系人信息 在使用过程中若您有任何的想法和建议,建议您通过以下方式来联系到我们 [RT-Thread 社区论坛](https://club.rt-thread.org/) diff --git a/bsp/renesas/ra8m1-ek/README_EN.md b/bsp/renesas/ra8m1-ek/README_EN.md index 44e5570713..fab3d5c88e 100644 --- a/bsp/renesas/ra8m1-ek/README_EN.md +++ b/bsp/renesas/ra8m1-ek/README_EN.md @@ -127,6 +127,19 @@ The steps are as follows: 3. Enter the `pkgs --update` command to update the software package. 4. Enter the `scons --target=mdk5` command to regenerate the project. +**FSP Configuration** + +* How to Use FSP: [Configuring Peripheral Drivers for RA Series Using FSP](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA系列使用FSP配置外设驱动?id=ra系列使用-fsp-配置外设驱动) + +The current repository's BSP is configured with the minimum footprint enabled by default. Users can enable peripheral configurations through the following steps: + +1. Open the `env` tool in the BSP directory and use the `scons --target=mdk5` command to generate an MDK project. +2. Open the `project.uvprojx` file in the BSP directory, select the `Software Components` configuration in the top navigation bar, and open the configuration button next to `RA Configuration` under `Flex Software`. This operation will automatically detect the installed FSP version on the current computer. After selecting the specified version, enter FSP. + ![](../docs/figures/mdk_rasc.png) +3. Upon entering FSP, pre-configured peripherals are already present. Click the `Generate Project Content` button to generate the required driver files. + ![](../docs/figures/fsp_configure.png) +4. Return to `env`, enable the necessary peripheral configurations, save, and exit. + ## Contribute the Code If you’re interested in the EK-RA8M1 and have some cool projects you’d like to share with everyone, we’d love for you to contribute your code! You can check out [how to contribute to RT-Thread’s code](https://www.rt-thread.io/contribution.html). Let’s make something awesome together! \ No newline at end of file diff --git a/bsp/renesas/ra8m1-ek/board/Kconfig b/bsp/renesas/ra8m1-ek/board/Kconfig index af5784d1f5..e8142ff363 100644 --- a/bsp/renesas/ra8m1-ek/board/Kconfig +++ b/bsp/renesas/ra8m1-ek/board/Kconfig @@ -9,6 +9,19 @@ menu "Hardware Drivers Config" menu "Onboard Peripheral Drivers" + menuconfig BSP_USING_FS + bool "Enable filesystem" + default n + if BSP_USING_FS + config BSP_USING_SPICARD_FS + bool "Enable SPI FLASH filesystem" + select BSP_USING_SPI + select BSP_USING_SCI_SPI6 + select RT_USING_SPI_MSD + select RT_USING_DFS_ELMFAT + default n + endif + endmenu menu "On-chip Peripheral Drivers" @@ -495,18 +508,6 @@ menu "Hardware Drivers Config" bool "Enable DAC0" default n endif - menuconfig BSP_USING_FS - bool "Enable filesystem" - default n - if BSP_USING_FS - config BSP_USING_SPICARD_FS - bool "Enable SPI FLASH filesystem" - select BSP_USING_SPI - select BSP_USING_SCI_SPI6 - select RT_USING_SPI_MSD - select RT_USING_DFS_ELMFAT - default n - endif menuconfig BSP_USING_PWM bool "Enable PWM" diff --git a/bsp/renesas/tools/startup_check.py b/bsp/renesas/tools/startup_check.py index 0cf1e4f38b..94f4a012b8 100644 --- a/bsp/renesas/tools/startup_check.py +++ b/bsp/renesas/tools/startup_check.py @@ -2,9 +2,6 @@ import subprocess import sys import os -# cwd_path = os.getcwd() -# sys.path.append(os.path.join(os.path.dirname(cwd_path), 'rt-thread', 'tools')) - def check_git_exists(): try: # Check if Git is installed @@ -43,7 +40,7 @@ def revert_to_original(filepath): subprocess.call(["git", "checkout", filepath]) def startup_check(): - file_path = os.getcwd() + f"/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c" + file_path = os.getcwd() + "/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c" python_executable = 'python' if sys.version_info[0] == 2 else 'python3' # Check if Git is installed, if not, try to install it

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.instance->p_ctrl, sdhi.instance->p_cfg); host = sdio_host_create(&sdhi); if (host == RT_NULL) diff --git a/bsp/renesas/ra2l1-cpk/README.md b/bsp/renesas/ra2l1-cpk/README.md index 463811b840..ba01049006 100644 --- a/bsp/renesas/ra2l1-cpk/README.md +++ b/bsp/renesas/ra2l1-cpk/README.md @@ -138,6 +138,15 @@ void hal_entry(void) 3. 如何将 **板级支持包**添加到 FSP 中,请参考文档[如何导入板级支持包](https://www2.renesas.cn/cn/zh/document/gde/1596896?language=zh&r=1596841) 4. 请查看文档:[使用瑞萨 FSP 配置工具](./docs/使用瑞萨FSP配置工具.md)。在 MDK 中通过添加自定义命名来打开当前工程的 FSP 配置。 +目前仓库 bsp 默认使能最小体量配置,用户可通过如下步骤使能 env 外设配置: + +1. 在 bsp 目录下打开 env 工具,使用 `scons --target=mdk5`命令生成 MDK 工程。 +2. 打开 bsp 目录下的`project.uvprojx`文件,选择上方导航栏的 `Software Components`配置,打开后找到`Flex Software`下的`RA Configuration`旁的配置按钮,该操作会自动查找当前电脑环境下安装的 fsp 版本,选择指定版本后进入 fsp。 + ![](../docs/figures/mdk_rasc.png) +3. 在进入 fsp 后我们可以发现,已经存在了一些已经配置完成的外设,此时我们点击`Generate Project Content`按钮即可生成所需驱动文件。 + ![](../docs/figures/fsp_configure.png) +4. 接下来回到 env,使能所需的外设配置后保存退出即可。 + **ENV 配置** - 如何使用 ENV 工具:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/#/development-tools/env/env) @@ -150,7 +159,6 @@ void hal_entry(void) 3. 输入`pkgs --update`命令更新软件包。 4. 输入`scons --target=mdk5` 命令重新生成工程。 - ## FAQ ### 使用 MDK 的 DEBUG 时如果遇到提示 “Error: Flash Download failed Cortex-M23” 怎么办? diff --git a/bsp/renesas/ra4m2-eco/README.md b/bsp/renesas/ra4m2-eco/README.md index db154aeea0..a9f349da29 100644 --- a/bsp/renesas/ra4m2-eco/README.md +++ b/bsp/renesas/ra4m2-eco/README.md @@ -130,7 +130,18 @@ void hal_entry(void) - [RA4M2数据手册](https://bbs.elecfans.com/forum.php?mod=attachment&aid=MTIwMDQxNnxjOTJiOTgyOHwxNjcwNDY2MTg2fDU5NTQxMXwyMzEyNjc4) **FSP 配置** + 请查看 [RA-Eco-RA4M2-100PIN开发板资料](https://bbs.elecfans.com/jishu_2312678_1_1.html) 及官网和bsp/renesas/docs中的相关文档 + +目前仓库 bsp 默认使能最小体量配置,用户可通过如下步骤使能 env 外设配置: + +1. 在 bsp 目录下打开 env 工具,使用 `scons --target=mdk5`命令生成 MDK 工程。 +2. 打开 bsp 目录下的`project.uvprojx`文件,选择上方导航栏的 `Software Components`配置,打开后找到`Flex Software`下的`RA Configuration`旁的配置按钮,该操作会自动查找当前电脑环境下安装的 fsp 版本,选择指定版本后进入 fsp。 + ![](../docs/figures/mdk_rasc.png) +3. 在进入 fsp 后我们可以发现,已经存在了一些已经配置完成的外设,此时我们点击`Generate Project Content`按钮即可生成所需驱动文件。 + ![](../docs/figures/fsp_configure.png) +4. 接下来回到 env,使能所需的外设配置后保存退出即可。 + **ENV 配置** - 如何使用 ENV 工具:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/#/development-tools/env/env) @@ -143,7 +154,6 @@ void hal_entry(void) 3. 输入`pkgs --update`命令更新软件包。 4. 输入`scons --target=mdk5` 命令重新生成工程。 - ## FAQ ### 使用 MDK 的 DEBUG 时如果遇到提示 “Error: Flash Download failed Cortex-M33” 怎么办? diff --git a/bsp/renesas/ra4m2-eco/docs/pictures/fsp_configure.png b/bsp/renesas/ra4m2-eco/docs/pictures/fsp_configure.png new file mode 100644 index 0000000000000000000000000000000000000000..45d2b7a8960aec6303c745cd1098729a1a7ba4de GIT binary patch literal 46405 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 literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra4m2-eco/docs/pictures/mdk_rasc.png b/bsp/renesas/ra4m2-eco/docs/pictures/mdk_rasc.png new file mode 100644 index 0000000000000000000000000000000000000000..aeb52c942b6eac28c1f833916006e31e6d414675 GIT binary patch literal 263617 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 z%0D&hDe|Acw_bkiHLeB}wy(AmD?Y!&uOB6e2n1lUuZ55*dmg2=x&5(EQK_GyU3?O0IJ_JB)DdcIB(0&4>ChCYUm30~O6nj0 z&qi|SZof$qlA3kw9P}n?&ek@jqs6-SvUfUk%#8;%Ek~Vmt|M(g5R=vC8ySB&F9IT^j{W^Hj;hP-ho**Eh`u{{afyT4PU9Qq9a&KE0E`2q@GfFf^u14dSf+0!?dgO&!JFGbk-5jHb%ZJCP zG8mM<>O2h8YJJaj^$9 zgLsUhlWo{cc4-5>r4sPIRXH!G*_p7BGfI(+zOdCg%)Hcs1!SfIuwlxd@2XQzqN_cn zMPk-?evxk$PA*PX2HG;^NVy5)%9t05@y;*K{Ie{AtJ&muIpmGBe`a0p*QDbJ2tYz_ zI(ruzqq3BY#xO-OL+MSW5!Vqzr}rYcsvo|sw*yWKMFM^eA~?$bWp?a z^Q)vYIYX!zG53=?zr?CVRONF9CzSr#f<)1t7vJxG0F1O z)Z-IEeJFvd{_2RFp?;m1N_JFzk)wsfEd zz0hhe(MFX@I$aUUFC7cmyg;{iMY}y3X%$yj*R>Nr3uA4X(i+C@I!5x6P)0ei#z633 z(J3~ML(t>Uo~{$SIeuZZDIF#ollI*$WqnTa&F>-!K4RG2!5VNuL~4iSQQ!uqo4s