/** ****************************************************************************** * @file usbpd_pdo_defs.h * @author MCD Application Team * @brief Header file for definition of PDO/APDO values for 2 ports(DRP/SNK) configuration ****************************************************************************** * @attention * *

© Copyright (c) 2018 STMicroelectronics. * All rights reserved.

* * This software component is licensed by ST under Ultimate Liberty license * SLA0044, the "License"; You may not use this file except in compliance with * the License. You may obtain a copy of the License at: * www.st.com/SLA0044 * ****************************************************************************** */ #ifndef __USBPD_PDO_DEF_H_ #define __USBPD_PDO_DEF_H_ #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "usbpd_pwr_if.h" /* Define ------------------------------------------------------------------*/ /* Exported typedef ----------------------------------------------------------*/ /** * @brief USBPD Port PDO Structure definition * */ typedef struct { uint32_t ListOfPDO[USBPD_MAX_NB_PDO]; /*!< List of Power Data Objects list, defining port capabilities */ uint8_t NumberOfPDO; /*!< Number of Power Data Objects defined in ListOfPDO This parameter must be set at max to @ref USBPD_MAX_NB_PDO value */ } USBPD_PortPDO_TypeDef; /** * @brief USBPD Port PDO Storage Structure definition */ typedef struct { USBPD_PortPDO_TypeDef SourcePDO; /*!< SRC Power Data Objects */ USBPD_PortPDO_TypeDef SinkPDO; /*!< SNK Power Data Objects */ }USBPD_PWR_Port_PDO_Storage_TypeDef; /* Exported define -----------------------------------------------------------*/ #define USBPD_PDP_SRC_IN_WATTS 60 /* SRC PD Power in Watts */ #define USBPD_PDP_SNK_IN_WATTS 60 /* SINK PD Power in Watts */ /* Define board operating power and max power */ /* Request 5V and 1500mA in sink mode */ #define USBPD_BOARD_REQUESTED_VOLTAGE_MV 5000 #define USBPD_BOARD_MIN_VOLTAGE_MV_PORT0 4000 #define USBPD_BOARD_MIN_VOLTAGE_MV_PORT1 3300 #define USBPD_BOARD_MAX_VOLTAGE_MV 22000 /* PDP = 45W */ #define USBPD_PDO_APDO_9VPROG_45W_MAX_CURRENT 3 /* Max Current in A */ #define USBPD_PDO_APDO_15VPROG_45W_MAX_CURRENT 3 /* Max Current in A (PDP / 5) */ /* Programmable Power Supply Voltage Ranges */ #define USBPD_PDO_APDO_5VPROG_MIN_VOLTAGE 3.3 /* Min voltage in V */ #define USBPD_PDO_APDO_5VPROG_MAX_VOLTAGE 5.9 /* Max voltage in V */ /* Definitions of nb of PDO and APDO for each port */ #define USBPD_CORE_PDO_SRC_FIXED_MAX_CURRENT 3 #define USBPD_CORE_PDO_SNK_FIXED_MAX_CURRENT 3 #define USBPD_PDO_APDO_5VPROG_15W_MAX_CURRENT 3 /* Max Current in A (PDP / 5) */ /* Definitions of nb of PDO and APDO for each port */ #define PORT0_NB_SOURCEPDO 4 /* Number of Source PDOs (applicable for port 0) */ #define PORT1_NB_SOURCEPDO 0 /* Number of Source PDOs (applicable for port 1) */ #define PORT0_NB_SINKPDO 5 /* Number of Sink PDOs (applicable for port 0) */ #define PORT1_NB_SINKPDO 4 /* Number of Sink PDOs (applicable for port 1) */ #define PORT0_NB_SOURCEAPDO 0 /* Number of Source APDOs (applicable for port 0) */ #define PORT0_NB_SINKAPDO 0 /* Number of Sink APDOs (applicable for port 0) */ #define PORT1_NB_SOURCEAPDO 0 /* Number of Source APDOs (applicable for port 1) */ #define PORT1_NB_SINKAPDO 0 /* Number of Sink APDOs (applicable for port 1) */ /* Exported constants --------------------------------------------------------*/ /* Exported macro ------------------------------------------------------------*/ /* Exported variables --------------------------------------------------------*/ #ifndef __USBPD_PWR_IF_C extern uint8_t USBPD_NbPDO[4]; extern uint32_t PORT0_PDO_ListSRC[USBPD_MAX_NB_PDO]; extern uint32_t PORT0_PDO_ListSNK[USBPD_MAX_NB_PDO]; extern uint32_t PORT1_PDO_ListSRC[USBPD_MAX_NB_PDO]; extern uint32_t PORT1_PDO_ListSNK[USBPD_MAX_NB_PDO]; #else uint8_t USBPD_NbPDO[4] = {(PORT0_NB_SINKPDO + PORT0_NB_SINKAPDO), ((PORT0_NB_SOURCEPDO + PORT0_NB_SOURCEAPDO)), ((PORT1_NB_SINKPDO + PORT1_NB_SINKAPDO)), ((PORT1_NB_SOURCEPDO + PORT1_NB_SOURCEAPDO))}; /* Definition of Source PDO for Port 0 */ uint32_t PORT0_PDO_ListSRC[USBPD_MAX_NB_PDO] = { /* PDO 1 */ ( ((PWR_A_10MA(USBPD_CORE_PDO_SRC_FIXED_MAX_CURRENT)) << USBPD_PDO_SRC_FIXED_MAX_CURRENT_Pos) | ((PWR_V_50MV(5)) << USBPD_PDO_SRC_FIXED_VOLTAGE_Pos) | USBPD_PDO_SRC_FIXED_PEAKCURRENT_EQUAL | USBPD_PDO_SRC_FIXED_UNCHUNK_NOT_SUPPORTED | USBPD_PDO_SRC_FIXED_DRD_SUPPORTED | USBPD_PDO_SRC_FIXED_USBCOMM_NOT_SUPPORTED | USBPD_PDO_SRC_FIXED_EXT_POWER_NOT_AVAILABLE | USBPD_PDO_SRC_FIXED_USBSUSPEND_NOT_SUPPORTED | USBPD_PDO_SRC_FIXED_DRP_SUPPORTED | USBPD_PDO_TYPE_FIXED ), /* PDO 2 */ ( ((PWR_A_10MA(USBPD_CORE_PDO_SRC_FIXED_MAX_CURRENT)) << USBPD_PDO_SRC_FIXED_MAX_CURRENT_Pos) | ((PWR_V_50MV(9)) << USBPD_PDO_SRC_FIXED_VOLTAGE_Pos) | USBPD_PDO_SRC_FIXED_PEAKCURRENT_EQUAL | USBPD_PDO_SRC_FIXED_DRD_NOT_SUPPORTED | USBPD_PDO_SRC_FIXED_USBCOMM_NOT_SUPPORTED | USBPD_PDO_SRC_FIXED_EXT_POWER_NOT_AVAILABLE | USBPD_PDO_SRC_FIXED_USBSUSPEND_NOT_SUPPORTED | USBPD_PDO_SRC_FIXED_DRP_NOT_SUPPORTED | USBPD_PDO_TYPE_FIXED ), /* PDO 3 */ ( ((PWR_A_10MA(USBPD_CORE_PDO_SRC_FIXED_MAX_CURRENT)) << USBPD_PDO_SRC_FIXED_MAX_CURRENT_Pos) | ((PWR_V_50MV(15)) << USBPD_PDO_SRC_FIXED_VOLTAGE_Pos) | USBPD_PDO_SRC_FIXED_PEAKCURRENT_EQUAL | USBPD_PDO_SRC_FIXED_DRD_NOT_SUPPORTED | USBPD_PDO_SRC_FIXED_USBCOMM_NOT_SUPPORTED | USBPD_PDO_SRC_FIXED_EXT_POWER_NOT_AVAILABLE | USBPD_PDO_SRC_FIXED_USBSUSPEND_NOT_SUPPORTED | USBPD_PDO_SRC_FIXED_DRP_NOT_SUPPORTED | USBPD_PDO_TYPE_FIXED ), /* PDO 4 */ ( (((PWR_A_50MA(USBPD_PDO_APDO_9VPROG_45W_MAX_CURRENT)) << USBPD_PDO_SRC_APDO_MAX_CURRENT_Pos) & (USBPD_PDO_SRC_APDO_MAX_CURRENT_Msk)) | (((PWR_V_100MV(USBPD_PDO_APDO_5VPROG_MIN_VOLTAGE)) << USBPD_PDO_SRC_APDO_MIN_VOLTAGE_Pos) & (USBPD_PDO_SRC_APDO_MIN_VOLTAGE_Msk)) | (((PWR_V_100MV(USBPD_PDO_APDO_5VPROG_MAX_VOLTAGE)) << USBPD_PDO_SRC_APDO_MAX_VOLTAGE_Pos) & (USBPD_PDO_SRC_APDO_MAX_VOLTAGE_Msk)) | USBPD_PDO_TYPE_APDO ), /* PDO 5 */ (0x00000000U), /* PDO 6 */ (0x00000000U), /* PDO 7 */ (0x00000000U) }; /* Definition of Sink PDO for Port 0 */ uint32_t PORT0_PDO_ListSNK[USBPD_MAX_NB_PDO] = { /* PDO 1 */ ( ((PWR_A_10MA(USBPD_CORE_PDO_SRC_FIXED_MAX_CURRENT)) << USBPD_PDO_SRC_FIXED_MAX_CURRENT_Pos) | ((PWR_V_50MV(5)) << USBPD_PDO_SRC_FIXED_VOLTAGE_Pos) | USBPD_PDO_SNK_FIXED_FRS_NOT_SUPPORTED | USBPD_PDO_SNK_FIXED_DRD_SUPPORTED | USBPD_PDO_SNK_FIXED_USBCOMM_NOT_SUPPORTED | USBPD_PDO_SNK_FIXED_EXT_POWER_NOT_AVAILABLE | USBPD_PDO_SNK_FIXED_HIGHERCAPAB_NOT_SUPPORTED | USBPD_PDO_SNK_FIXED_DRP_SUPPORTED | USBPD_PDO_TYPE_FIXED ), /* PDO 2 */ ( ((PWR_A_10MA(1)) << USBPD_PDO_SRC_FIXED_MAX_CURRENT_Pos) | ((PWR_V_50MV(9)) << USBPD_PDO_SRC_FIXED_VOLTAGE_Pos) ), /* PDO 3 */ ( ((PWR_A_10MA(1)) << USBPD_PDO_SRC_FIXED_MAX_CURRENT_Pos) | ((PWR_V_50MV(15)) << USBPD_PDO_SRC_FIXED_VOLTAGE_Pos) ), /* PDO 4 */ (0x00000000U), /* PDO 5 */ (0x00000000U), /* PDO 6 */ (0x00000000U), /* PDO 7 */ (0x00000000U) }; /* Definition of Source PDO for Port 1 */ uint32_t PORT1_PDO_ListSRC[USBPD_MAX_NB_PDO] = { /* PDO 1 */ (0x00000000U), /* PDO 2 */ (0x00000000U), /* PDO 3 */ (0x00000000U), /* PDO 4 */ (0x00000000U), /* PDO 5 */ (0x00000000U), /* PDO 6 */ (0x00000000U), /* PDO 7 */ (0x00000000U) }; /* Definition of Sink PDO for Port 1 */ uint32_t PORT1_PDO_ListSNK[USBPD_MAX_NB_PDO] = { /* PDO 1 */ ( ((PWR_A_10MA(USBPD_CORE_PDO_SRC_FIXED_MAX_CURRENT)) << USBPD_PDO_SRC_FIXED_MAX_CURRENT_Pos) | ((PWR_V_50MV(5)) << USBPD_PDO_SRC_FIXED_VOLTAGE_Pos) | USBPD_PDO_SNK_FIXED_FRS_NOT_SUPPORTED | USBPD_PDO_SNK_FIXED_DRD_SUPPORTED | USBPD_PDO_SNK_FIXED_USBCOMM_NOT_SUPPORTED | USBPD_PDO_SNK_FIXED_EXT_POWER_NOT_AVAILABLE | USBPD_PDO_SNK_FIXED_HIGHERCAPAB_NOT_SUPPORTED | USBPD_PDO_SNK_FIXED_DRP_NOT_SUPPORTED | USBPD_PDO_TYPE_FIXED ), /* PDO 2 */ ( ((PWR_A_10MA(1)) << USBPD_PDO_SRC_FIXED_MAX_CURRENT_Pos) | ((PWR_V_50MV(9)) << USBPD_PDO_SRC_FIXED_VOLTAGE_Pos) ), /* PDO 3 */ ( ((PWR_A_10MA(1)) << USBPD_PDO_SRC_FIXED_MAX_CURRENT_Pos) | ((PWR_V_50MV(15)) << USBPD_PDO_SRC_FIXED_VOLTAGE_Pos) ), /* PDO 4 */ ( (((PWR_A_50MA(USBPD_PDO_APDO_5VPROG_15W_MAX_CURRENT)) << USBPD_PDO_SNK_APDO_MAX_CURRENT_Pos) & (USBPD_PDO_SNK_APDO_MAX_CURRENT_Msk)) | (((PWR_V_100MV(USBPD_PDO_APDO_5VPROG_MIN_VOLTAGE)) << USBPD_PDO_SNK_APDO_MIN_VOLTAGE_Pos) & (USBPD_PDO_SNK_APDO_MIN_VOLTAGE_Msk)) | (((PWR_V_100MV(USBPD_PDO_APDO_5VPROG_MAX_VOLTAGE)) << USBPD_PDO_SNK_APDO_MAX_VOLTAGE_Pos) & (USBPD_PDO_SNK_APDO_MAX_VOLTAGE_Msk)) | USBPD_PDO_TYPE_APDO ), /* PDO 5 */ (0x00000000U), /* PDO 6 */ (0x00000000U), /* PDO 7 */ (0x00000000U) }; #endif /* Exported functions --------------------------------------------------------*/ #ifdef __cplusplus } #endif #endif /* __USBPD_PDO_DEF_H_ */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/