1 /** 2 ********************************************************************************************************************** 3 * @file stm32n6xx_hal_dts.h 4 * @author MCD Application Team 5 * @brief Header file of DTS HAL module. 6 ********************************************************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2023 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ********************************************************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -----------------------------------------------------------------------------*/ 20 #ifndef STM32N6xx_HAL_DTS_H 21 #define STM32N6xx_HAL_DTS_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ----------------------------------------------------------------------------------------------------------*/ 28 #include "stm32n6xx_hal_def.h" 29 30 /** @addtogroup STM32N6xx_HAL_Driver 31 * @{ 32 */ 33 34 /** @addtogroup DTS 35 * @{ 36 */ 37 38 /* Exported types ----------------------------------------------------------------------------------------------------*/ 39 40 /** @defgroup DTS_Exported_Types DTS Exported Types 41 * @{ 42 */ 43 /** 44 * @brief HAL DTS states definition 45 */ 46 typedef enum 47 { 48 HAL_DTS_STATE_RESET = 0x00U, /*!< DTS not initialized */ 49 HAL_DTS_STATE_READY = 0x01U, /*!< DTS initialized and ready for use */ 50 HAL_DTS_STATE_RUNNING_0 = 0x02U, /*!< DTS temperature measure in progress on sensor 0 */ 51 HAL_DTS_STATE_RUNNING_1 = 0x03U, /*!< DTS temperature measure in progress on sensor 1 */ 52 HAL_DTS_STATE_RUNNING_BOTH = 0x04U /*!< DTS temperature measure in progress on both sensors */ 53 } HAL_DTS_StateTypeDef; 54 55 /** 56 * @brief DTS sensors definition 57 */ 58 typedef enum 59 { 60 DTS_SENSOR_0 = 0x00U, /*!< DTS sensor 0 */ 61 DTS_SENSOR_1 = 0x01U, /*!< DTS sensor 1 */ 62 } HAL_DTS_Sensor; 63 64 /** 65 * @brief DTS handle structure definition 66 */ 67 #if (USE_HAL_DTS_REGISTER_CALLBACKS == 1) 68 typedef struct __DTS_HandleTypeDef 69 #else /* USE_HAL_DTS_REGISTER_CALLBACKS */ 70 typedef struct 71 #endif /* USE_HAL_DTS_REGISTER_CALLBACKS */ 72 { 73 DTS_TypeDef *Instance; /*!< DTS instance */ 74 __IO HAL_DTS_StateTypeDef State; /*!< DTS state */ 75 __IO uint32_t ErrorCode; /*!< DTS error code */ 76 uint32_t SensorMode[2U]; /*!< DTS sensor modes */ 77 #if (USE_HAL_DTS_REGISTER_CALLBACKS == 1) 78 void (*MspInitCallback)(struct __DTS_HandleTypeDef *hdts); /*!< DTS MSP init callback */ 79 void (*MspDeInitCallback)(struct __DTS_HandleTypeDef *hdts); /*!< DTS MSP de-init callback */ 80 void (*TemperatureCallback)(struct __DTS_HandleTypeDef *hdts, 81 HAL_DTS_Sensor Sensor); /*!< DTS temperature callback */ 82 void (*AlarmACallback)(struct __DTS_HandleTypeDef *hdts, 83 HAL_DTS_Sensor Sensor); /*!< DTS alarm A callback */ 84 void (*AlarmBCallback)(struct __DTS_HandleTypeDef *hdts, 85 HAL_DTS_Sensor Sensor); /*!< DTS alarm B callback */ 86 void (*ErrorCallback)(struct __DTS_HandleTypeDef *hdts, 87 HAL_DTS_Sensor Sensor); /*!< DTS error callback */ 88 #endif /* USE_HAL_DTS_REGISTER_CALLBACKS */ 89 } DTS_HandleTypeDef; 90 91 #if (USE_HAL_DTS_REGISTER_CALLBACKS == 1) 92 /** 93 * @brief DTS callback ID enumeration definition 94 */ 95 typedef enum 96 { 97 HAL_DTS_MSPINIT_CB_ID = 0x00U, /*!< DTS MSP init callback ID */ 98 HAL_DTS_MSPDEINIT_CB_ID = 0x01U /*!< DTS MSP de-init callback ID */ 99 } HAL_DTS_CallbackIDTypeDef; 100 101 /** 102 * @brief DTS sensor callback ID enumeration definition 103 */ 104 typedef enum 105 { 106 HAL_DTS_SENSOR_TEMPERATURE_CB_ID = 0x00U, /*!< DTS sensor temperature callback ID */ 107 HAL_DTS_SENSOR_ALARMA_CB_ID = 0x01U, /*!< DTS sensor alarm A callback ID */ 108 HAL_DTS_SENSOR_ALARMB_CB_ID = 0x02U, /*!< DTS sensor alarm B callback ID */ 109 HAL_DTS_SENSOR_ERROR_CB_ID = 0x03U, /*!< DTS sensor error callback ID */ 110 } HAL_DTS_SensorCallbackIDTypeDef; 111 112 /** 113 * @brief DTS callback pointers definition 114 */ 115 typedef void (*pDTS_CallbackTypeDef)(DTS_HandleTypeDef *hdts); 116 typedef void (*pDTS_SensorCallbackTypeDef)(DTS_HandleTypeDef *hdts, HAL_DTS_Sensor Sensor); 117 #endif /* USE_HAL_DTS_REGISTER_CALLBACKS */ 118 119 /** 120 * @brief DTS sensor configuration structure definition 121 */ 122 typedef struct 123 { 124 uint32_t Mode; /*!< Sensor mode. 125 This parameter can be a value of @ref DTS_SensorMode */ 126 uint32_t Resolution; /*!< Sensor resolution. 127 This parameter can be a value of @ref DTS_SensorResolution */ 128 uint32_t Trigger; /*!< Sensor trigger. 129 This parameter can be a value of @ref DTS_SensorTrigger. 130 @note This parameter is used only if Mode is set to DTS_SENSOR_MODE_TRIGGER */ 131 } DTS_SensorConfigTypeDef; 132 133 /** 134 * @brief DTS alarm configuration structure definition 135 */ 136 typedef struct 137 { 138 FunctionalState Enable; /*!< Alarm enable/disable */ 139 float_t Threshold; /*!< Alarm threshold in celsius degree. 140 This parameter must be a number between Min_Data = -40 and Max_Data = 125 */ 141 float_t Hysteresis; /*!< Alarm hysteresis in celsius degree. 142 This parameter must be a number between Min_Data = -40 and Max_Data = 125 */ 143 } DTS_AlarmConfigTypeDef; 144 /** 145 * @} 146 */ 147 148 /* Exported constants ------------------------------------------------------------------------------------------------*/ 149 150 /** @defgroup DTS_Exported_Constants DTS Exported Constants 151 * @{ 152 */ 153 154 /** @defgroup DTS_ErrorCode DTS error code 155 * @{ 156 */ 157 #define HAL_DTS_ERROR_NONE 0x00000000U /*!< No error */ 158 #define HAL_DTS_ERROR_INVALID_PARAM 0x00000001U /*!< Invalid parameter */ 159 #define HAL_DTS_ERROR_INVALID_STATE 0x00000002U /*!< Invalid state */ 160 #define HAL_DTS_ERROR_INVALID_SENSOR_MODE 0x00000004U /*!< Invalid sensor mode */ 161 #define HAL_DTS_ERROR_INVALID_SAMPLE 0x00000008U /*!< Invalid sample */ 162 #define HAL_DTS_ERROR_FAULT 0x00000010U /*!< Fault */ 163 #if (USE_HAL_DTS_REGISTER_CALLBACKS == 1) 164 #define HAL_DTS_ERROR_INVALID_CALLBACK 0x00000020U /*!< Invalid callback error */ 165 #endif /* USE_HAL_DTS_REGISTER_CALLBACKS */ 166 /** 167 * @} 168 */ 169 170 /** @defgroup DTS_SensorMode DTS sensor mode 171 * @{ 172 */ 173 #define DTS_SENSOR_MODE_DISABLE 0x00000000U /*!< No acquisition */ 174 #define DTS_SENSOR_MODE_SINGLE 0x00000106U /*!< Single acquisition */ 175 #define DTS_SENSOR_MODE_CONTINUOUS 0x0000010AU /*!< Continuous acquisitions */ 176 #define DTS_SENSOR_MODE_TRIGGER 0x00000102U /*!< Acquisition with trigger */ 177 /** 178 * @} 179 */ 180 181 /** @defgroup DTS_SensorResolution DTS sensor resolution 182 * @{ 183 */ 184 #define DTS_SENSOR_RESOLUTION_12BITS 0x00000001U /*!< Sensor resolution of 12 bits */ 185 #define DTS_SENSOR_RESOLUTION_10BITS 0x00000021U /*!< Sensor resolution of 10 bits */ 186 #define DTS_SENSOR_RESOLUTION_8BITS 0x00000041U /*!< Sensor resolution of 8 bits */ 187 /** 188 * @} 189 */ 190 191 /** @defgroup DTS_SensorTrigger DTS sensor trigger 192 * @{ 193 */ 194 #define DTS_SENSOR_TRIGGER_LPTIM4_OUT 0x00010000U /*!< LPTIM4 output signal */ 195 #define DTS_SENSOR_TRIGGER_LPTIM2_CH1 0x00020000U /*!< LPTIM2 channel 1 signal */ 196 #define DTS_SENSOR_TRIGGER_LPTIM3_CH1 0x00030000U /*!< LPTIM3 channel 1 signal */ 197 #define DTS_SENSOR_TRIGGER_EXTI13 0x00040000U /*!< EXTI13 signal */ 198 /** 199 * @} 200 */ 201 202 /** 203 * @} 204 */ 205 206 /* Exported macros ---------------------------------------------------------------------------------------------------*/ 207 208 /** @defgroup DTS_Exported_Macros DTS Exported Macros 209 * @{ 210 */ 211 #if (USE_HAL_DTS_REGISTER_CALLBACKS == 1) 212 #define __HAL_DTS_RESET_HANDLE_STATE(__HANDLE__) do{ \ 213 (__HANDLE__)->State = HAL_DTS_STATE_RESET; \ 214 (__HANDLE__)->MspInitCallback = NULL; \ 215 (__HANDLE__)->MspDeInitCallback = NULL; \ 216 } while(0) 217 #else /* USE_HAL_DTS_REGISTER_CALLBACKS */ 218 #define __HAL_DTS_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DTS_STATE_RESET) 219 #endif /* USE_HAL_DTS_REGISTER_CALLBACKS */ 220 221 #define IS_DTS_SENSOR_MODE(PARAM) (((PARAM) == DTS_SENSOR_MODE_DISABLE) || \ 222 ((PARAM) == DTS_SENSOR_MODE_SINGLE) || \ 223 ((PARAM) == DTS_SENSOR_MODE_CONTINUOUS) || \ 224 ((PARAM) == DTS_SENSOR_MODE_TRIGGER)) 225 226 #define IS_DTS_SENSOR_RESOLUTION(PARAM) (((PARAM) == DTS_SENSOR_RESOLUTION_12BITS) || \ 227 ((PARAM) == DTS_SENSOR_RESOLUTION_10BITS) || \ 228 ((PARAM) == DTS_SENSOR_RESOLUTION_8BITS)) 229 230 #define IS_DTS_SENSOR_TRIGGER(PARAM) (((PARAM) == DTS_SENSOR_TRIGGER_LPTIM4_OUT) || \ 231 ((PARAM) == DTS_SENSOR_TRIGGER_LPTIM2_CH1) || \ 232 ((PARAM) == DTS_SENSOR_TRIGGER_LPTIM3_CH1) || \ 233 ((PARAM) == DTS_SENSOR_TRIGGER_EXTI13)) 234 235 #define IS_DTS_ALARM_PARAM(PARAM) ((-40.0f <= (PARAM)) && ((PARAM) <= 125.0f)) 236 /** 237 * @} 238 */ 239 240 /* Exported functions ------------------------------------------------------------------------------------------------*/ 241 242 /** @addtogroup DTS_Exported_Functions 243 * @{ 244 */ 245 246 /* Initialization and de-initialization functions */ 247 /** @addtogroup DTS_Exported_Functions_Group1 248 * @{ 249 */ 250 HAL_StatusTypeDef HAL_DTS_Init(DTS_HandleTypeDef *hdts); 251 HAL_StatusTypeDef HAL_DTS_DeInit(DTS_HandleTypeDef *hdts); 252 void HAL_DTS_MspInit(DTS_HandleTypeDef *hdts); 253 void HAL_DTS_MspDeInit(DTS_HandleTypeDef *hdts); 254 #if (USE_HAL_DTS_REGISTER_CALLBACKS == 1) 255 HAL_StatusTypeDef HAL_DTS_RegisterCallback(DTS_HandleTypeDef *hdts, 256 HAL_DTS_CallbackIDTypeDef CallbackID, 257 pDTS_CallbackTypeDef pCallback); 258 HAL_StatusTypeDef HAL_DTS_UnRegisterCallback(DTS_HandleTypeDef *hdts, 259 HAL_DTS_CallbackIDTypeDef CallbackID); 260 HAL_StatusTypeDef HAL_DTS_RegisterSensorCallback(DTS_HandleTypeDef *hdts, 261 HAL_DTS_SensorCallbackIDTypeDef CallbackID, 262 pDTS_SensorCallbackTypeDef pCallback); 263 HAL_StatusTypeDef HAL_DTS_UnRegisterSensorCallback(DTS_HandleTypeDef *hdts, 264 HAL_DTS_SensorCallbackIDTypeDef CallbackID); 265 #endif /* USE_HAL_DTS_REGISTER_CALLBACKS */ 266 /** 267 * @} 268 */ 269 270 /* Temperature measurement functions */ 271 /** @addtogroup DTS_Exported_Functions_Group2 272 * @{ 273 */ 274 HAL_StatusTypeDef HAL_DTS_ConfigSensor(DTS_HandleTypeDef *hdts, 275 HAL_DTS_Sensor Sensor, 276 DTS_SensorConfigTypeDef *pSensorParams); 277 HAL_StatusTypeDef HAL_DTS_Start(DTS_HandleTypeDef *hdts, 278 HAL_DTS_Sensor Sensor); 279 HAL_StatusTypeDef HAL_DTS_PollForTemperature(DTS_HandleTypeDef *hdts, 280 HAL_DTS_Sensor Sensor, 281 uint32_t Timeout); 282 HAL_StatusTypeDef HAL_DTS_GetTemperature(DTS_HandleTypeDef *hdts, 283 HAL_DTS_Sensor Sensor, 284 float_t *pTemperature); 285 HAL_StatusTypeDef HAL_DTS_Stop(DTS_HandleTypeDef *hdts, 286 HAL_DTS_Sensor Sensor); 287 HAL_StatusTypeDef HAL_DTS_Start_IT(DTS_HandleTypeDef *hdts, 288 HAL_DTS_Sensor Sensor); 289 HAL_StatusTypeDef HAL_DTS_Stop_IT(DTS_HandleTypeDef *hdts, 290 HAL_DTS_Sensor Sensor); 291 void HAL_DTS_TemperatureCallback(DTS_HandleTypeDef *hdts, 292 HAL_DTS_Sensor Sensor); 293 HAL_StatusTypeDef HAL_DTS_GetExtremeTemperatures(DTS_HandleTypeDef *hdts, 294 HAL_DTS_Sensor Sensor, 295 float_t *pMin, 296 float_t *pMax); 297 HAL_StatusTypeDef HAL_DTS_ConfigSampleCounter(DTS_HandleTypeDef *hdts, 298 FunctionalState Enable, 299 FunctionalState Clear, 300 FunctionalState Hold); 301 HAL_StatusTypeDef HAL_DTS_GetSampleCounterValue(DTS_HandleTypeDef *hdts, 302 uint32_t *pNumber); 303 HAL_StatusTypeDef HAL_DTS_ConfigSampleDiscard(DTS_HandleTypeDef *hdts, 304 FunctionalState Status); 305 /** 306 * @} 307 */ 308 309 /* Alarms functions */ 310 /** @addtogroup DTS_Exported_Functions_Group3 311 * @{ 312 */ 313 HAL_StatusTypeDef HAL_DTS_ConfigAlarmA(DTS_HandleTypeDef *hdts, 314 HAL_DTS_Sensor Sensor, 315 const DTS_AlarmConfigTypeDef *pAlarmParams); 316 HAL_StatusTypeDef HAL_DTS_ConfigAlarmB(DTS_HandleTypeDef *hdts, 317 HAL_DTS_Sensor Sensor, 318 const DTS_AlarmConfigTypeDef *pAlarmParams); 319 void HAL_DTS_AlarmACallback(DTS_HandleTypeDef *hdts, 320 HAL_DTS_Sensor Sensor); 321 void HAL_DTS_AlarmBCallback(DTS_HandleTypeDef *hdts, 322 HAL_DTS_Sensor Sensor); 323 /** 324 * @} 325 */ 326 327 /* Generic functions */ 328 /** @addtogroup DTS_Exported_Functions_Group4 329 * @{ 330 */ 331 void HAL_DTS_IRQHandler(DTS_HandleTypeDef *hdts); 332 void HAL_DTS_ErrorCallback(DTS_HandleTypeDef *hdts, 333 HAL_DTS_Sensor Sensor); 334 HAL_DTS_StateTypeDef HAL_DTS_GetState(const DTS_HandleTypeDef *hdts); 335 uint32_t HAL_DTS_GetError(const DTS_HandleTypeDef *hdts); 336 /** 337 * @} 338 */ 339 340 /** 341 * @} 342 */ 343 344 /** 345 * @} 346 */ 347 348 /** 349 * @} 350 */ 351 352 #ifdef __cplusplus 353 } 354 #endif 355 356 #endif /* STM32N6xx_HAL_DTS_H */ 357