|
| 1 | +/*********************************************************************************************************************** |
| 2 | +* Copyright (c) 2013 Renesas Electronics Corporation and/or its affiliates |
| 3 | +* |
| 4 | +* SPDX-License-Identifier: BSD-3-Clause |
| 5 | +***********************************************************************************************************************/ |
| 6 | +/********************************************************************************************************************** |
| 7 | +* File Name : r_s12ad_rx_if.h |
| 8 | +* Description : 12-bit A/D Converter driver interface file. |
| 9 | +*********************************************************************************************************************** |
| 10 | +* History : DD.MM.YYYY Version Description |
| 11 | +* 22.07.2013 1.00 Initial Release. |
| 12 | +* 21.04.2014 1.20 Updated for RX210 advanced features; RX110/63x support. |
| 13 | +* 05.06.2014 1.30 Fixed channel mask bug in adc_enable_chans() |
| 14 | +* 06.11.2014 1.40 Added RX113 support. |
| 15 | +* 25.03.2015 2.00 Merged in r_s12ad_rx64m and added support for rx71m. |
| 16 | +* 25.03.2015 2.10 Added rx231 support and updated the minor version information |
| 17 | +* 01.03.2016 2.11 Added RX130 and RX230 support. |
| 18 | +* 01.10.2016 2.20 Added RX65x support. |
| 19 | +* 03.04.2017 2.30 Added RX65N-2MB and RX130-512KB support. |
| 20 | +* 03.09.2018 3.00 Added RX66T support. |
| 21 | +* 03.12.2018 3.01 Changed Minor version to '01' for update of xml file. |
| 22 | +* 28.12.2018 3.10 Added RX72T support. |
| 23 | +* 05.04.2019 4.00 Changed Major/Minor version to 4.00 for update below. |
| 24 | +* - Added support of GNUC and ICCRX. |
| 25 | +* - End of Update for RX210, RX631, and RX63N. |
| 26 | +* Deleted include of RX210, RX631, and RX63N. |
| 27 | +* Modified include pass of RX65N. |
| 28 | +* 06.28.2019 4.10 Added RX23W support. |
| 29 | +* 07.31.2019 4.20 Added RX72M support. |
| 30 | +* 08.30.2019 4.30 Added RX13T support. |
| 31 | +* 22.11.2019 4.40 Added RX66N and RX72N support. |
| 32 | +* 31.01.2020 4.41 Added support for RX13T with IAR Compiler. |
| 33 | +* 28.02.2020 4.50 Added RX23E-A support. |
| 34 | +* 10.06.2020 4.60 Added RX23T and RX24T and RX24U support. |
| 35 | +* 30.11.2020 4.61 Changed minor version for e2studio 2020-10 support. |
| 36 | +* 01.03.2021 4.70 Added RX72M 144pins and 100pins support. |
| 37 | +* Added RX23W 83pins support. |
| 38 | +* 31.05.2021 4.80 Added RX671 support. |
| 39 | +* 30.07.2021 4.90 Added RX140 support. |
| 40 | +* 01.11.2021 4.91 Fixed MDF file. |
| 41 | +* 19.11.2021 4.92 Added RX140 80pins support. |
| 42 | +* 30.11.2021 4.93 Added RX66T 48pins support. |
| 43 | +* 29.12.2021 5.00 Added RX660 support. |
| 44 | +* 01.08.2022 5.10 Added RX26T support. |
| 45 | +* 14.10.2022 5.20 Added RX23E-B support. |
| 46 | +* 03.04.2023 5.30 Added RX26T 48k support. |
| 47 | +* 13.02.2024 5.40 Added RX260 and RX261 support. |
| 48 | +* 20.03.2025 5.41 Changed the disclaimer in program sources. |
| 49 | +***********************************************************************************************************************/ |
| 50 | + |
| 51 | +#ifndef S12AD_PRV_IF_H |
| 52 | +#define S12AD_PRV_IF_H |
| 53 | + |
| 54 | +/****************************************************************************** |
| 55 | +Includes <System Includes> , "Project Includes" |
| 56 | +*******************************************************************************/ |
| 57 | +#include "platform.h" |
| 58 | + |
| 59 | +/* MCU SPECIFIC USER INTERFACE FILES */ |
| 60 | + |
| 61 | +#if defined(BSP_MCU_RX110) |
| 62 | +#include "./src/targets/rx110/r_s12ad_rx110_if.h" |
| 63 | +#elif defined(BSP_MCU_RX111) |
| 64 | +#include "./src/targets/rx111/r_s12ad_rx111_if.h" |
| 65 | +#elif defined(BSP_MCU_RX113) |
| 66 | +#include "./src/targets/rx113/r_s12ad_rx113_if.h" |
| 67 | +#elif defined(BSP_MCU_RX130) |
| 68 | +#include "./src/targets/rx130/r_s12ad_rx130_if.h" |
| 69 | +#elif defined(BSP_MCU_RX13T) |
| 70 | +#include "./src/targets/rx13T/r_s12ad_rx13t_if.h" |
| 71 | +#elif defined(BSP_MCU_RX140) |
| 72 | +#include "./src/targets/rx140/r_s12ad_rx140_if.h" |
| 73 | +#elif defined(BSP_MCU_RX230) |
| 74 | +#include "./src/targets/rx230/r_s12ad_rx230_if.h" |
| 75 | +#elif defined(BSP_MCU_RX231) |
| 76 | +#include "./src/targets/rx231/r_s12ad_rx231_if.h" |
| 77 | +#elif defined(BSP_MCU_RX23E_A) |
| 78 | +#include "./src/targets/rx23e-a/r_s12ad_rx23e-a_if.h" |
| 79 | +#elif defined(BSP_MCU_RX23E_B) |
| 80 | +#include "./src/targets/rx23e-b/r_s12ad_rx23e-b_if.h" |
| 81 | +#elif defined(BSP_MCU_RX23W) |
| 82 | +#include "./src/targets/rx23w/r_s12ad_rx23w_if.h" |
| 83 | +#elif defined(BSP_MCU_RX64M) |
| 84 | +#include "./src/targets/rx64m/r_s12ad_rx64m_if.h" |
| 85 | +#elif defined(BSP_MCU_RX65_ALL) |
| 86 | +#include "./src/targets/rx65n/r_s12ad_rx65n_if.h" |
| 87 | +#elif defined(BSP_MCU_RX660) |
| 88 | +#include "./src/targets/rx660/r_s12ad_rx660_if.h" |
| 89 | +#elif defined(BSP_MCU_RX66N) |
| 90 | +#include "./src/targets/rx66n/r_s12ad_rx66n_if.h" |
| 91 | +#elif defined(BSP_MCU_RX66T) |
| 92 | +#include "./src/targets/rx66t/r_s12ad_rx66t_if.h" |
| 93 | +#elif defined(BSP_MCU_RX671) |
| 94 | +#include "./src/targets/rx671/r_s12ad_rx671_if.h" |
| 95 | +#elif defined(BSP_MCU_RX71M) |
| 96 | +#include "./src/targets/rx71m/r_s12ad_rx71m_if.h" |
| 97 | +#elif defined(BSP_MCU_RX72T) |
| 98 | +#include "./src/targets/rx72t/r_s12ad_rx72t_if.h" |
| 99 | +#elif defined(BSP_MCU_RX72M) |
| 100 | +#include "./src/targets/rx72m/r_s12ad_rx72m_if.h" |
| 101 | +#elif defined(BSP_MCU_RX72N) |
| 102 | +#include "./src/targets/rx72n/r_s12ad_rx72n_if.h" |
| 103 | +#elif defined(BSP_MCU_RX23T) |
| 104 | +#include "./src/targets/rx23t/r_s12ad_rx23t_if.h" |
| 105 | +#elif defined(BSP_MCU_RX24T) |
| 106 | +#include "./src/targets/rx24t/r_s12ad_rx24t_if.h" |
| 107 | +#elif defined(BSP_MCU_RX24U) |
| 108 | +#include "./src/targets/rx24u/r_s12ad_rx24u_if.h" |
| 109 | +#elif defined(BSP_MCU_RX26T) |
| 110 | +#include "./src/targets/rx26t/r_s12ad_rx26t_if.h" |
| 111 | +#elif defined(BSP_MCU_RX260) |
| 112 | +#include "./src/targets/rx260/r_s12ad_rx260_if.h" |
| 113 | +#elif defined(BSP_MCU_RX261) |
| 114 | +#include "./src/targets/rx261/r_s12ad_rx261_if.h" |
| 115 | +#endif |
| 116 | + |
| 117 | +/****************************************************************************** |
| 118 | +Macro definitions |
| 119 | +*******************************************************************************/ |
| 120 | +/* Version Number of API. */ |
| 121 | +#define ADC_VERSION_MAJOR (5) |
| 122 | +#define ADC_VERSION_MINOR (41) |
| 123 | + |
| 124 | +/***************************************************************************** |
| 125 | +Typedef definitions |
| 126 | +******************************************************************************/ |
| 127 | + |
| 128 | +typedef enum e_adc_err // ADC API error codes |
| 129 | +{ |
| 130 | + ADC_SUCCESS = 0, |
| 131 | + ADC_ERR_AD_LOCKED, // Open() call is in progress elsewhere |
| 132 | + ADC_ERR_AD_NOT_CLOSED, // peripheral still running in another mode |
| 133 | + ADC_ERR_MISSING_PTR, // missing required pointer argument |
| 134 | + ADC_ERR_INVALID_ARG, // argument is not valid for parameter |
| 135 | + ADC_ERR_ILLEGAL_ARG, // argument is illegal for mode |
| 136 | + ADC_ERR_SCAN_NOT_DONE, // default, Group A, or Group B scan not done |
| 137 | + ADC_ERR_TRIG_ENABLED, // scan running, cannot configure comparator |
| 138 | + ADC_ERR_CONDITION_NOT_MET, // no chans/sensors passed comparator condition |
| 139 | + ADC_ERR_CONFIGURABLE_INT, // vector number of software configurable interrupt B is out of range |
| 140 | + ADC_ERR_UNKNOWN // unknown hardware error |
| 141 | +} adc_err_t; |
| 142 | + |
| 143 | + |
| 144 | +/* CALLBACK FUNCTION ARGUMENT DEFINITIONS */ |
| 145 | + |
| 146 | +typedef enum e_adc_cb_evt // callback function events |
| 147 | +{ |
| 148 | + ADC_EVT_SCAN_COMPLETE, // normal/Group A scan complete |
| 149 | + ADC_EVT_SCAN_COMPLETE_GROUPB, // Group B scan complete |
| 150 | +#if (defined(BSP_MCU_RX65_ALL) || defined(BSP_MCU_RX66T) || defined(BSP_MCU_RX72T) \ |
| 151 | + || defined(BSP_MCU_RX72M) || defined(BSP_MCU_RX13T) || defined(BSP_MCU_RX66N) \ |
| 152 | + || defined(BSP_MCU_RX72N) || defined(BSP_MCU_RX24T) || defined(BSP_MCU_RX24U) \ |
| 153 | + || defined(BSP_MCU_RX671) || defined(BSP_MCU_RX660) || defined(BSP_MCU_RX26T)) |
| 154 | + ADC_EVT_SCAN_COMPLETE_GROUPC, // Group C scan complete |
| 155 | +#endif |
| 156 | +#if (defined(BSP_MCU_RX64M) || defined(BSP_MCU_RX65_ALL) || defined(BSP_MCU_RX66T) \ |
| 157 | + || defined(BSP_MCU_RX71M) || defined(BSP_MCU_RX72T) || defined(BSP_MCU_RX72M) \ |
| 158 | + || defined(BSP_MCU_RX66N) || defined(BSP_MCU_RX72N) || defined(BSP_MCU_RX671) \ |
| 159 | + || defined(BSP_MCU_RX660) || defined(BSP_MCU_RX26T)) |
| 160 | + ADC_EVT_CONDITION_MET, // chans/sensors met comparator condition |
| 161 | +#endif |
| 162 | +#if (defined(BSP_MCU_RX65_ALL) || defined(BSP_MCU_RX66T) || defined(BSP_MCU_RX72T) \ |
| 163 | + || defined(BSP_MCU_RX72M) || defined(BSP_MCU_RX66N) || defined(BSP_MCU_RX72N) \ |
| 164 | + || defined(BSP_MCU_RX671) || defined(BSP_MCU_RX660) || defined(BSP_MCU_RX26T)) |
| 165 | + ADC_EVT_CONDITION_METB // chans/sensors met comparator condition |
| 166 | +#endif |
| 167 | +} adc_cb_evt_t; |
| 168 | + |
| 169 | +typedef struct st_adc_cb_args // callback arguments |
| 170 | +{ |
| 171 | + adc_cb_evt_t event; |
| 172 | +#if (defined(BSP_MCU_RX64M) || defined(BSP_MCU_RX65_ALL) || defined(BSP_MCU_RX66T) \ |
| 173 | + || defined(BSP_MCU_RX71M) || defined(BSP_MCU_RX72T) || defined(BSP_MCU_RX72M) \ |
| 174 | + || defined(BSP_MCU_RX66N) || defined(BSP_MCU_RX72N) || defined(BSP_MCU_RX671) \ |
| 175 | + || defined(BSP_MCU_RX660) || defined(BSP_MCU_RX26T)) |
| 176 | + uint32_t compare_flags; // valid only for compare event in Window A |
| 177 | +#endif |
| 178 | +#if (defined(BSP_MCU_RX65_ALL) || defined(BSP_MCU_RX66T) || defined(BSP_MCU_RX72T) \ |
| 179 | + || defined(BSP_MCU_RX72M) || defined(BSP_MCU_RX66N) || defined(BSP_MCU_RX72N) \ |
| 180 | + || defined(BSP_MCU_RX671) || defined(BSP_MCU_RX660) || defined(BSP_MCU_RX26T)) |
| 181 | + uint32_t compare_flagsb; // valid only for compare event in Window B |
| 182 | +#endif |
| 183 | +#if (defined(BSP_MCU_RX64M) || defined(BSP_MCU_RX65_ALL) || defined(BSP_MCU_RX66T) \ |
| 184 | + || defined(BSP_MCU_RX71M) || defined(BSP_MCU_RX72T) || defined(BSP_MCU_RX72M) \ |
| 185 | + || defined(BSP_MCU_RX66N) || defined(BSP_MCU_RX72N) || defined(BSP_MCU_RX24T) \ |
| 186 | + || defined(BSP_MCU_RX24U) || defined(BSP_MCU_RX671) || defined(BSP_MCU_RX26T)) |
| 187 | + uint8_t unit; |
| 188 | +#endif |
| 189 | +} adc_cb_args_t; |
| 190 | + |
| 191 | + |
| 192 | +/***************************************************************************** |
| 193 | +Public Functions |
| 194 | +******************************************************************************/ |
| 195 | +/****************************************************************************** |
| 196 | +* Function Name: R_ADC_Open |
| 197 | +* Description : This function applies power to the A/D peripheral, sets the |
| 198 | +* operational mode, trigger sources, interrupt priority, and |
| 199 | +* configurations common to all channels and sensors. If interrupt |
| 200 | +* priority is non-zero, the function takes a callback function |
| 201 | +* pointer for notifying the user at interrupt level whenever a |
| 202 | +* scan has completed. |
| 203 | +* |
| 204 | +* Arguments : unit - |
| 205 | +* Unit number |
| 206 | +* mode- |
| 207 | +* Operational mode (see enumeration below) |
| 208 | +* p_cfg- |
| 209 | +* Pointer to configuration structure (see below) |
| 210 | +* p_callback- |
| 211 | +* Optional pointer to function called from interrupt when |
| 212 | +* a scan completes |
| 213 | +* Return Value : ADC_SUCCESS- |
| 214 | +* Successful |
| 215 | +* ADC_ERR_AD_LOCKED- |
| 216 | +* Open() call is in progress elsewhere |
| 217 | +* ADC_ERR_AD_NOT_CLOSED- |
| 218 | +* Peripheral is still running in another mode; Perform |
| 219 | +* R_ADC_Close() first |
| 220 | +* ADC_ERR_INVALID_ARG- |
| 221 | +* mode or element of p_cfg structure has invalid value. |
| 222 | +* ADC_ERR_ILLEGAL_ARG- |
| 223 | +* an argument is illegal based upon mode |
| 224 | +* ADC_ERR_MISSING_PTR- |
| 225 | +* p_cfg pointer is FIT_NO_PTR/NULL |
| 226 | +*******************************************************************************/ |
| 227 | +adc_err_t R_ADC_Open(uint8_t const unit, |
| 228 | + adc_mode_t const mode, |
| 229 | + adc_cfg_t * const p_cfg, |
| 230 | + void (* const p_callback)(void *p_args)); |
| 231 | + |
| 232 | +/****************************************************************************** |
| 233 | +* Function Name: R_ADC_Control |
| 234 | +* Description : This function provides commands for enabling channels and |
| 235 | +* sensors and for runtime operations. These include enabling/ |
| 236 | +* disabling trigger sources and interrupts, initiating a |
| 237 | +* software trigger, and checking for scan completion. |
| 238 | +* |
| 239 | +* NOTE: Enabling a channel or a sensor, or setting the sample state count reg |
| 240 | +* cannot be done while the ADCSR.ADST bit is set (conversion in progress). |
| 241 | +* Because these commands should only be called once during initialization |
| 242 | +* before triggers are enabled, this should not be an issue. Registers |
| 243 | +* with this restriction include ADANSA, ADANSB, ADADS, ADADC, ADSSTR, |
| 244 | +* ADEXICR, and some bits in ADCSR and TSCR. |
| 245 | +* No runtime operational sequence checking of any kind is performed. |
| 246 | +* |
| 247 | +* Arguments : unit - |
| 248 | +* Unit number |
| 249 | +* cmd- |
| 250 | +* Command to run |
| 251 | +* p_args- |
| 252 | +* Pointer to optional configuration structure |
| 253 | +* Return Value : ADC_SUCCESS- |
| 254 | +* Successful |
| 255 | +* ADC_ERR_MISSING_PTR- |
| 256 | +* p_args pointer is FIT_NO_PTR/NULL when required as an argument |
| 257 | +* ADC_ERR_INVALID_ARG- |
| 258 | +* cmd or element of p_args structure has invalid value. |
| 259 | +* ADC_ERR_ILLEGAL_CMD- |
| 260 | +* cmd is illegal based upon mode |
| 261 | +* ADC_ERR_SCAN_NOT_DONE- |
| 262 | +* The requested scan has not completed |
| 263 | +* ADC_ERR_UNKNOWN |
| 264 | +* Did not receive expected hardware response |
| 265 | +*******************************************************************************/ |
| 266 | +adc_err_t R_ADC_Control(uint8_t const unit, |
| 267 | + adc_cmd_t const cmd, |
| 268 | + void * const p_args); |
| 269 | + |
| 270 | +/****************************************************************************** |
| 271 | +* Function Name: R_ADC_Read |
| 272 | +* Description : This function reads conversion results from a single channel, |
| 273 | +* sensor, or the double trigger register. |
| 274 | +* Arguments : unit - |
| 275 | +* Unit number |
| 276 | +* reg_id- |
| 277 | +* Id for the register to read (see enum below) |
| 278 | +* p_data- |
| 279 | +* Pointer to variable to load value into. |
| 280 | +* Return Value : ADC_SUCCESS- |
| 281 | +* Successful |
| 282 | +* ADC_ERR_INVALID_ARG- |
| 283 | +* reg_id contains an invalid value. |
| 284 | +* ADC_ERR_MISSING _PTR- |
| 285 | +* p_data is FIT_NO_PTR/NULL |
| 286 | +*******************************************************************************/ |
| 287 | +adc_err_t R_ADC_Read(uint8_t const unit, |
| 288 | + adc_reg_t const reg_id, |
| 289 | + uint16_t * const p_data); |
| 290 | + |
| 291 | + |
| 292 | +/****************************************************************************** |
| 293 | +* Function Name: R_ADC_ReadAll |
| 294 | +* Description : This function reads conversion results from all potential |
| 295 | +* sources, enabled or not. |
| 296 | +* Arguments : p_all_data- |
| 297 | +* Pointer to structure to load register values into. |
| 298 | +* Return Value : ADC_SUCCESS- |
| 299 | +* Successful |
| 300 | +* ADC_ERR_MISSING _PTR- |
| 301 | +* p_data is FIT_NO_PTR/NULL |
| 302 | +*******************************************************************************/ |
| 303 | +adc_err_t R_ADC_ReadAll(adc_data_t * const p_all_data); |
| 304 | + |
| 305 | +/****************************************************************************** |
| 306 | +* Function Name: R_ADC_Close |
| 307 | +* Description : This function ends any scan in progress, disables interrupts, |
| 308 | +* and removes power to the A/D peripheral. |
| 309 | +* Arguments : unit - Unit number |
| 310 | +* Return Value : ADC_SUCCESS - Successful |
| 311 | +* ADC_ERR_INVALID_ARG - unit contains an invalid value. |
| 312 | +*******************************************************************************/ |
| 313 | +adc_err_t R_ADC_Close(uint8_t const unit); |
| 314 | + |
| 315 | +/***************************************************************************** |
| 316 | +* Function Name: R_ADC_GetVersion |
| 317 | +* Description : Returns the version of this module. The version number is |
| 318 | +* encoded such that the top two bytes are the major version |
| 319 | +* number and the bottom two bytes are the minor version number. |
| 320 | +* Arguments : none |
| 321 | +* Return Value : version number |
| 322 | +******************************************************************************/ |
| 323 | +uint32_t R_ADC_GetVersion(void); |
| 324 | + |
| 325 | + |
| 326 | +#endif /* S12AD_PRV_IF_H */ |
0 commit comments