色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

完整的USB-PD應用

麥辣雞腿堡 ? 來源:意法半導體 ? 作者:意法半導體 ? 2023-02-07 14:54 ? 次閱讀

3配置項目

Project Manager主選項卡下,將Project選項卡下的最小堆棧大小配置為 0xC00 。這是第一個值,以后可以根據應用需要進行調整。

Advanced Settings選項卡下,將 LPUART 驅動程序更改為 LL 以節省一點內存堆大小。由于我們不需要 ADCI2C 初始化函數(由 BSP 驅動程序處理),因此取消選中MX_I2C2_Init 和 MX_ADC1_Init 函數的 生成代碼

4將BSP添加到項目中

需要將 X-NUCLEO-SRC1M1 擴展板的5 分鐘板級支持包 (BSP) 添加到項目中。這些文件需要手動復制到項目的文件夾中。從 GitHub x-cube-tcpp

獲取最新的 BSP 。

手動復制以下三個文件夾:


進入:


然后,在項目的根文件夾中創建一個名為“ .extSettings ”的文件(請注意文件名中的點字符)并用以下代碼填充它:


該文件用于告訴代碼生成器在生成項目時包含 BSP 文件。

5生成代碼

使用 Ctrl+s 保存文件,并在出現提示時選擇生成代碼。您還可以通過單擊項目/生成代碼或按 Alt+K 從 STM32CubeIDE 菜單生成代碼。
出現一條警告,通知未定義正確的 HAL 時基。使用專用定時器作為 HAL 時基源更安全。
對于此演示,可以通過單擊是忽略以下警告。

信息白色.png 信息
這成為在即將發布的固件包交付中推薦的標準工作方式,尤其是在使用 CMSIS OS V2 時,它將 Systick 定義為 FreeRTOS? 時基。對于此演示,可以通過單擊是忽略警告。

在這個項目中,可以找到不同的文件夾:

  • USBPD文件夾包含我們需要編輯以豐富 Power Delivery 應用程序的源文件。
  • Core文件夾包含項目核心的源文件。
  • Drivers文件夾包含 STM32的HAL 驅動程序,以及 Nucleo 板和 X-NUCLEO-SRC1M1 擴展板的 BSP。
  • Middleware文件夾包含 FreeRTOS? 和 USB-PD的源文件和庫。
  • Utilities文件夾包含 GUI(UCPD 監視器)和跟蹤器嵌入式源文件部分。

項目的 Explorer 視圖中的Drivers文件夾必須包含之前添加的 BSP 文件夾。

6完整的USB-PD應用

Now that the peripherals are initialized by STM32CubeMX, some minimum level of the application needs to be added:

  • src1m1_conf.h file needs to be created from its template, and added to the project
  • User code needs to be added in several files

6.1 Add SRC1M1 configuration file

In the Drivers\\BSP\\X-NUCLEO-SRC1M1 folder you will find src1m1_conf_template.h . Copy it to Core\\Inc folder, and rename it src1m1_conf.h . It is the configuration file used for the X-NUCLEO-SRC1M1 BSP.

6.2 Modification in stm32g0xx_it.c

                   |

在/ USER CODE BEGIN-END Includes / 標簽之間添加以下代碼:

/* 用戶代碼開始包括 */ 
#include  "src1m1_conf.h"
/* 用戶代碼結束包括 */

在/ USER CODE BEGIN-END 1 / 標簽之間添加以下代碼:

/* USER CODE BEGIN 1 */ 
#if defined(TCPP0203_SUPPORT) 
/** 
  * @brief 該函數處理外線 4_15 中斷請求。
  *(在 TCPP0203 管理的情況下關聯到 FLGn 線)
  * @retval None 
  */ 
void  TCPP0203_PORT0_FLG_EXTI_IRQHANDLER ( void ) 
{ 
  /* 管理標志 */ 
  if  ( TCPP0203_PORT0_FLG_EXTI_IS_ACTIVE_FLAG ()  !=  RESET ) 
  { 
    /* 調用 BSP USBPD PWR 回調 */ 
    BSP_USBPD_CPWR_CWR_R ( USBPD_PWR_TYPE_C_PORT_1 );

    /* 清除標志 */ 
    TCPP0203_PORT0_FLG_EXTI_CLEAR_FLAG (); 
  } 
} 
#endif /* TCPP0203_SUPPORT */
/* 用戶代碼結束 1 */

6.3 usbpd_dpm_user.h中的修改

在/ USER CODE BEGIN-END Typedef / 標簽之間添加以下代碼:

/* 用戶代碼開始 Typedef */ 
typedef  struct 
{ 
  uint32_t   DPM_ListOfRcvSNKPDO [ USBPD_MAX_NB_PDO ];  /*!< 從端口伙伴接收到的接收器功率數據對象列表
                                            (當端口伙伴是接收器或 DRP 端口時)。*/ 
  uint32_t   DPM_NumberOfRcvSNKPDO ;       /*!< 從端口伙伴接收到的接收器功率數據對象的數量
                                             (當端口伙伴是接收器或 DRP 端口時)。
                                             此參數必須設置為低于
                                             USBPD_MAX_NB_PDO */ 
  uint32_t   DPM_RDOPosition ;             /*!< 請求的 DO 在功能源列表中的 RDO 位置 */ 
  uint32_t   DPM_RDOPositionPrevious ;     /*!< RDO 所請求 DO 在功能源列表中的位置 */ 
  uint32_t   DPM_RequestedVoltage ;        /*!< 請求電壓值 */ 
  uint32_t   DPM_RequestedCurrent ;        /*!< 請求電流值 */ 
  uint32_t   DPM_RcvRequestDOMsg ;

  uint32_t   DPM_RequestDOMsg ;            /*!< 要發送的請求功率數據對象消息 */ 
  uint32_t   DPM_RequestDOMsgPrevious ;    /*!< 要發送的上一個請求電源數據對象消息 */ 
}  USBPD_HandleTypeDef ; 
/* 用戶代碼結束類型定義 */

在/ USER CODE BEGIN-END Private_Variables / 標簽之間添加以下代碼:

/* 用戶代碼開始 Private_Variables */ 
extern  USBPD_HandleTypeDef  DPM_Ports [ USBPD_PORT_COUNT ]; 
/* 用戶代碼結束 Private_Variables */

6.4 usbpd_pdo_defs.h中的修改

在/ USER CODE BEGIN-END typedef / 標簽之間添加以下代碼:

/* 用戶代碼開始 typedef */

/** 
  * @brief USBPD 端口 PDO 結構定義
  */ 
typedef  struct 
{ 
  uint32_t  * ListOfPDO ;          /*!< Power 數據對象列表上的指針,定義
                                      端口功能 */

  uint8_t   * NumberOfPDO ;        /*!< ListOfPDO 中定義的電源數據對象的數量
                                     此參數必須設置為最大值 @ref USBPD_MAX_NB_PDO 值 */ 
}  USBPD_PortPDO_TypeDef ;

/** 
   * @brief USBPD 端口 PDO 存儲結構定義
   */ 
typedef  struct 
{ 
  USBPD_PortPDO_TypeDef     SourcePDO ;       /*!< SRC 電源數據對象 */ 
}  USBPD_PWR_Port_PDO_Storage_TypeDef ; 
/* 用戶代碼結束 typedef */

6.5 usbpd_pwr_if.c中的修改

在/ USER CODE BEGIN-END Private_Variables / 標簽之間添加以下代碼:

/* USER CODE BEGIN Private_Variables */ 
/** 
  * @brief USBPD Port PDO Storage 數組聲明
  */ 
USBPD_PWR_Port_PDO_Storage_TypeDef  PWR_Port_PDO_Storage [ USBPD_PORT_COUNT ]; 
/* 用戶代碼結束 Private_Variables */

在/ USER CODE BEGIN-END USBPD_PWR_IF_Init / 標簽之間添加以下代碼:

/* 用戶代碼開始 USBPD_PWR_IF_Init */ 
  USBPD_StatusTypeDef  _status  =  USBPD_OK ;

  /* 設置指向 PDO 值和端口 0 號的鏈接(在 H 文件的 PDO 數組中定義)。*/ 
  PWR_Port_PDO_Storage [ USBPD_PORT_0 ]。來源 PDO 。ListOfPDO  =  ( uint32_t  * )  PORT0_PDO_ListSRC ; 
  PWR_Port_PDO_Storage [ USBPD_PORT_0 ]。來源 PDO 。NumberOfPDO  =  & USBPD_NbPDO [ 1 ];

  返回 _狀態;
/* 用戶代碼結束 USBPD_PWR_IF_Init */

在/ USER CODE BEGIN-END USBPD_PWR_IF_SetProfile / 標簽之間添加以下代碼:

/* 用戶代碼開始 USBPD_PWR_IF_SetProfile */ 
  USBPD_PDO_TypeDef         _pdo ; 
  USBPD_SNKRDO_TypeDef      _rdo ;

  _rdo 。d32  =  DPM_Ports [端口號]。DPM_RcvRequestDOMsg ; 
  _pdo 。d32  =  PORT0_PDO_ListSRC [ 0 ];

  返回 (bsp_error_none  == bsp_usbpd_pwr_vbussetvoltage_fixed (portnum ,
                                                    _pdo。srcfixedpdo。voltagein50mvunits * 50 ,(_ rdo.rdo。_rdo。_rdo。fixiaiablerdo.firedvariablerdo.promertin10MANITS * 10 )_ _ _  _  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /* 用戶代碼結束 USBPD_PWR_IF_SetProfile */

在/ USER CODE BEGIN-END USBPD_PWR_IF_GetPortPDOs / 標簽之間添加以下代碼:

/* 用戶代碼開始 USBPD_PWR_IF_GetPortPDOs */ 
  uint32_t    nbpdo ,  index ,  nb_valid_pdo  =  0 ; 
  uint32_t    * ptpdoarray  =  NULL ; 
  USBPD_PDO_TypeDef  pdo_first ; 
  USBPD_PDO_TypeDef  pdo ;

  /* Check if valid port */
  if (USBPD_PORT_IsValid(PortNum))
  {
    /* According to the type of PDO to be read, set the pointer on values and number of elements */
    switch(DataId)
    {
    case USBPD_CORE_DATATYPE_SRC_PDO :
      nbpdo = *PWR_Port_PDO_Storage[PortNum].SourcePDO.NumberOfPDO;
      ptpdoarray = PWR_Port_PDO_Storage[PortNum].SourcePDO.ListOfPDO;
      /* Save the 1st PDO */
      pdo_first.d32 = *ptpdoarray;
      /* Reset un-chunked bit if current revision is PD2.0*/
      if (USBPD_SPECIFICATION_REV2 == DPM_Params[PortNum].PE_SpecRevision)
      {
        pdo_first.SRCFixedPDO.UnchunkedExtendedMessage  = USBPD_PDO_SRC_FIXED_UNCHUNK_NOT_SUPPORTED;
      }
      break;
    default :
      nbpdo = 0;
      break;
    }

    /* Copy PDO data in output buffer */
    for (index = 0; index < nbpdo; index++)
    {
      pdo.d32 = *ptpdoarray;
      /* Copy only PDO (and not APDO in case of current revision is PD2.0) */
      if ((USBPD_SPECIFICATION_REV2 == DPM_Params[PortNum].PE_SpecRevision)
          && (pdo.GenericPDO.PowerObject == USBPD_CORE_PDO_TYPE_APDO))
      {
      }
      else
      {
        /* Copy 1st PDO as potentially FRS or UNCHUNKED bits have been reset */
        if (0 == index)
        {
          (void)memcpy(Ptr, (uint8_t*)&pdo_first.d32, 4u);
        }
        else
        {
          (void)memcpy((Ptr + (nb_valid_pdo * 4u)), (uint8_t*)ptpdoarray, 4u);
        }
        nb_valid_pdo++;
      }
      ptpdoarray++;
    }
    /* Set the number of read PDO (number of u32 elements); */
    *Size = nb_valid_pdo;
  }
/* USER CODE END USBPD_PWR_IF_GetPortPDOs */

Add the following code between the / USER CODE BEGIN-END USBPD_PWR_IF_SearchRequestedPDO / tags:

/* USER CODE BEGIN USBPD_PWR_IF_SearchRequestedPDO */
  if((RdoPosition == 0) || (RdoPosition > *PWR_Port_PDO_Storage[PortNum].SourcePDO.NumberOfPDO))
  {
    /* Invalid PDO index */
  return USBPD_FAIL;
  }

  *Pdo = PWR_Port_PDO_Storage[PortNum].SourcePDO.ListOfPDO[RdoPosition - 1];
  return USBPD_OK;
/* USER CODE END USBPD_PWR_IF_SearchRequestedPDO */

6.6 Modification in usbpd_dpm_user.c

Add the following code between the / USER CODE BEGIN-END Private_Variables / tags:

/* USER CODE BEGIN Private_Variables */
USBPD_HandleTypeDef DPM_Ports[USBPD_PORT_COUNT];
/* USER CODE END Private_Variables */

Add the following code between the / USER CODE BEGIN-END USBPD_USER_PRIVATE_FUNCTIONS_Prototypes / tags:

/* USER CODE BEGIN USBPD_USER_PRIVATE_FUNCTIONS_Prototypes */
static USBPD_StatusTypeDef DPM_TurnOnPower(uint8_t PortNum, USBPD_PortPowerRole_TypeDef Role);
static USBPD_StatusTypeDef DPM_TurnOffPower(uint8_t PortNum, USBPD_PortPowerRole_TypeDef Role);
/* USER CODE END USBPD_USER_PRIVATE_FUNCTIONS_Prototypes */

Add the following code between the / USER CODE BEGIN-END USBPD_DPM_UserInit / tags:

/* USER CODE BEGIN USBPD_DPM_UserInit */
  /* PWR SET UP */
  if(USBPD_OK !=  USBPD_PWR_IF_Init())
  {
    return USBPD_ERROR;
  }
  return USBPD_OK;
/* USER CODE END USBPD_DPM_UserInit */

Add the following code between the / USER CODE BEGIN-END USBPD_DPM_UserCableDetection / tags:

/* USER CODE BEGIN USBPD_DPM_UserCableDetection */
  switch(State)
  {
  case USBPD_CAD_EVENT_ATTACHED:
  case USBPD_CAD_EVENT_ATTEMC:
    {
      if (DPM_Params[PortNum].PE_PowerRole == USBPD_PORTPOWERROLE_SRC)
      {
        if (USBPD_OK != USBPD_PWR_IF_VBUSEnable(PortNum))
        {
          /* Should not occur */
          osDelay(6000);
          NVIC_SystemReset();
        }
      }
      break;
    }
  case USBPD_CAD_EVENT_DETACHED :
  case USBPD_CAD_EVENT_EMC :
  default :
    {
      if (DPM_Params[PortNum].PE_PowerRole == USBPD_PORTPOWERROLE_SRC)
      {
        if (USBPD_OK != USBPD_PWR_IF_VBUSDisable(PortNum))
        {
          /* Should not occur */
          while(1);
        }
      }
      break;
    }
  }
/* USER CODE END USBPD_DPM_UserCableDetection */

Add the following code between the / USER CODE BEGIN-END USBPD_DPM_HardReset / tags:

/* USER CODE BEGIN USBPD_DPM_HardReset */
  switch (Status)
  {
  case USBPD_HR_STATUS_WAIT_VBUS_VSAFE0V:
    if (USBPD_PORTPOWERROLE_SRC == CurrentRole)
    {
      /* Reset the power supply */
      DPM_TurnOffPower(PortNum, USBPD_PORTPOWERROLE_SRC);
    }
    break;

  case USBPD_HR_STATUS_WAIT_VBUS_VSAFE5V:
    if (CurrentRole == USBPD_PORTPOWERROLE_SRC)
    {
      /* Power on the power supply */
      DPM_TurnOnPower(PortNum, CurrentRole);
    }
    break;

  default:
    break;
  }
/* USER CODE END USBPD_DPM_HardReset */

Add the following code between the / USER CODE BEGIN-END USBPD_DPM_GetDataInfo / tags:

/* USER CODE BEGIN USBPD_DPM_GetDataInfo */
  /* Check type of information targeted by request */
  switch(DataId)
  {
    case USBPD_CORE_DATATYPE_REQ_VOLTAGE:       /*!< Get voltage value requested for BIST tests, expect 5V */
      *Size = 4;
      (void)memcpy((uint8_t*)Ptr, (uint8_t *)&DPM_Ports[PortNum].DPM_RequestedVoltage, *Size);
      break;
    case USBPD_CORE_DATATYPE_SRC_PDO:           /*!< Handling of port Source PDO                           */
      USBPD_PWR_IF_GetPortPDOs(PortNum, DataId, Ptr, Size);
      *Size *= 4;
      break;
 // case USBPD_CORE_PPS_STATUS:                 /*!< PPS Status message content                            */
    // break;
 // case USBPD_CORE_SNK_EXTENDED_CAPA:          /*!< Retrieve of Sink Extended capability message content */
    // break;
 // case USBPD_CORE_INFO_STATUS:                /*!< Information status message content                    */
    // break;
 // case USBPD_CORE_MANUFACTURER_INFO:          /*!< Retrieve of Manufacturer info message content         */
    // break;
 // case USBPD_CORE_BATTERY_STATUS:             /*!< Retrieve of Battery status message content            */
    // break;
 // case USBPD_CORE_BATTERY_CAPABILITY:         /*!< Retrieve of Battery capability message content        */
    // break;
    default:
      DPM_USER_DEBUG_TRACE(PortNum, "ADVICE: update USBPD_DPM_GetDataInfo:%d", DataId);
      break;
  }
/* USER CODE END USBPD_DPM_GetDataInfo */

Add the following code between the / USER CODE BEGIN-END USBPD_DPM_SetDataInfo / tags:

/* USER CODE BEGIN USBPD_DPM_SetDataInfo */
  /* Check type of information targeted by request */
  switch(DataId)
  {
   case USBPD_CORE_DATATYPE_RDO_POSITION:   /*!< Reset the PDO position selected by the sink only          */
    if (Size == 4)
    {
      uint8_t* temp;
      temp = (uint8_t*)&DPM_Ports[PortNum].DPM_RDOPosition;
      (void)memcpy(temp, Ptr, Size);
      DPM_Ports[PortNum].DPM_RDOPositionPrevious = *Ptr;
      temp = (uint8_t*)&DPM_Ports[PortNum].DPM_RDOPositionPrevious;
      (void)memcpy(temp, Ptr, Size);
    }
    break;
 // case USBPD_CORE_DATATYPE_RCV_SRC_PDO:   /*!< Storage of Received Source PDO values                     */
   // break;
 // case USBPD_CORE_DATATYPE_RCV_SNK_PDO:   /*!< Storage of Received Sink PDO values                       */
   // break;
    case USBPD_CORE_DATATYPE_RCV_REQ_PDO :  /*!< Storage of Received Sink Request PDO value                */
      if (Size == 4)
      {
        memcpy((uint8_t *)&DPM_Ports[PortNum].DPM_RcvRequestDOMsg,  Ptr, 4);
      }
      break;
 // case USBPD_CORE_INFO_STATUS:            /*!< Information status message content                        */
   // break;
 // case USBPD_CORE_ALERT:                  /*!< Storing of received Alert message content                 */
   // break;
 // case USBPD_CORE_GET_MANUFACTURER_INFO:  /*!< Storing of received Get Manufacturer info message content */
   // break;
 // case USBPD_CORE_GET_BATTERY_STATUS:     /*!< Storing of received Get Battery status message content    */
   // break;
 // case USBPD_CORE_GET_BATTERY_CAPABILITY: /*!< Storing of received Get Battery capability message content*/
   // break;
 // case USBPD_CORE_SNK_EXTENDED_CAPA:      /*!< Storing of Sink Extended capability message content       */
   // break;
    default:
      DPM_USER_DEBUG_TRACE(PortNum, "ADVICE: update USBPD_DPM_SetDataInfo:%d", DataId);
      break;
  }
/* USER CODE END USBPD_DPM_SetDataInfo */

Add the following code between the / USER CODE BEGIN-END USBPD_DPM_EvaluateRequest / tags:

/* USER CODE BEGIN USBPD_DPM_EvaluateRequest */
  USBPD_StatusTypeDef _retr = USBPD_REJECT;
  USBPD_PDO_TypeDef pdo;
  USBPD_SNKRDO_TypeDef rdo;

  /* read the request value received */
  rdo.d32 = DPM_Ports[PortNum].DPM_RcvRequestDOMsg;

  /* Search PDO in Port Source PDO list, that corresponds to Position provided in Request RDO */
  if (USBPD_PWR_IF_SearchRequestedPDO(PortNum,  rdo.GenericRDO.ObjectPosition, &pdo.d32) == USBPD_OK)
  {

    /* Evaluate the request */
    if(pdo.GenericPDO.PowerObject == USBPD_CORE_PDO_TYPE_FIXED)
    {
      if((rdo.FixedVariableRDO.OperatingCurrentIn10mAunits > pdo.SRCFixedPDO.MaxCurrentIn10mAunits)
         || (rdo.FixedVariableRDO.MaxOperatingCurrent10mAunits > pdo.SRCFixedPDO.MaxCurrentIn10mAunits))
      {
        /* Sink requests too much maximum operating current */
        /* USBPD_DPM_EvaluateRequest: Sink requests too much maximum operating current */
        _retr =  USBPD_REJECT;
      }
      else
      {
        /* Save the power object */
        *PtrPowerObject = pdo.GenericPDO.PowerObject;
        /* Set RDO position and requested voltage in DPM port structure */
        DPM_Ports[PortNum].DPM_RequestedVoltage = pdo.SRCFixedPDO.VoltageIn50mVunits * 50;
        DPM_Ports[PortNum].DPM_RDOPositionPrevious = DPM_Ports[PortNum].DPM_RDOPosition;
        DPM_Ports[PortNum].DPM_RDOPosition = rdo.GenericRDO.ObjectPosition;
         _retr = USBPD_ACCEPT;
      }
    }
  }

  return _retr;
/* USER CODE END USBPD_DPM_EvaluateRequest */

Add the following code between the / USER CODE BEGIN-END USBPD_USER_PRIVATE_FUNCTIONS / tags:

/* USER CODE BEGIN USBPD_USER_PRIVATE_FUNCTIONS */
/**
  * @brief  Turn Off power supply.
  * @param  PortNum The current port number
  * @param  Role    Port power role
  * @retval USBPD_OK, USBPD_ERROR
  */
static USBPD_StatusTypeDef DPM_TurnOffPower(uint8_t PortNum, USBPD_PortPowerRole_TypeDef Role)
{
  USBPD_StatusTypeDef status;

  status = USBPD_PWR_IF_VBUSDisable(PortNum);
  return status;
}

/**
  * @brief  Turn On power supply.
  * @param  PortNum The current port number
  * @param  Role    Port power role
  * @retval USBPD_ACCEPT, USBPD_WAIT, USBPD_REJECT
  */
static USBPD_StatusTypeDef DPM_TurnOnPower(uint8_t PortNum, USBPD_PortPowerRole_TypeDef Role)
{
  USBPD_StatusTypeDef status;

  /* Enable the output */
  status = USBPD_PWR_IF_VBUSEnable(PortNum);
  return status;
}
/* USER CODE END USBPD_USER_PRIVATE_FUNCTIONS */
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    60

    文章

    7952

    瀏覽量

    264935
  • PD
    PD
    +關注

    關注

    4

    文章

    475

    瀏覽量

    44012
收藏 人收藏

    評論

    相關推薦

    USB-PD適配器中常見的拓撲

    本文首先回顧了USB-PD適配器的發展,并和大家聊一聊USB-PD適配器中常見的拓撲。接著著重介紹ST在快充領域的最新產品和技術路線。最后我們會以demo板為例,跟大家探討一下USB-PD適配器的技術細節和設計時的注意事項。
    發表于 08-18 14:18 ?2931次閱讀

    應用指南—如何使用DSLogic分析USB-PD信號?

    一 文檔介紹 本文將一步步介紹如何使用DSLogic邏輯分析儀采集和分析 USB-PD 信號。此次將演示使用快充充電器給一臺安卓手機充電。 二 需要測量哪幾個信號 邏輯分析儀需要測量 CC1 信號
    的頭像 發表于 09-04 14:42 ?1400次閱讀
    應用指南—如何使用DSLogic分析<b class='flag-5'>USB-PD</b>信號?

    USB-Pd Type-C連接器是改變游戲規則的嗎?

    隨著今年早些時候推出USB-Pd規范,它已經擴展了USB電纜的功能,現在可以為各種設備提供高功率。提供5W~10W功率的現有解決方案現在可以利用這項技術進行擴展,最高可提供100W功率。這使OEM
    發表于 10-12 08:52

    USB-PD實現中大功率USB充電應用

    通用序列匯流排電力傳輸(USB-PD)標準演變,將掀起新一波USB應用革命。USB在資料傳輸方面早已成為業界普遍採用的標準協定,而隨著更高傳輸速率的USB 3.0規格問世,更進一步增進
    發表于 06-04 05:00

    PD 快充是什么?一篇文章帶你了解USB-PD快充協議

    前言  說起 USB-PD 協議,全名 USB Power Delivery ,可能對于很多人來說還很陌生,但是目前越來越多的手機已經開始支持這一協議并用來做為設備快速充電的功能。  稍有了解的人
    發表于 08-27 09:50

    目前主流的快充協議USB-PD介紹

    USB-PD 是由 USB-IF 組織制定的一種快速充電規范,是目前主流的快充協議之一。 USB-PD 快充協議是以 Type-C 接口輸出的,但不能說有 Type-C 接口就一定支持 USB
    發表于 10-28 08:55

    基于USB Type-C的一種電源供電標準USB-PD

    USB-PD(Power Delivery)是基于USB Type-C的一種電源供電標準,最大供電功率可達100瓦(W);隨著USB Type-C的普及,越來越多的設備(手機、平板、顯示器、工作站
    發表于 09-14 07:24

    請問從USB-PD端口請求更高電壓最簡單最快的方法是什么

    你好,我正在將 STM32G0B1RE 處理器用作 USB-PD SINK。請問從USB-PD端口請求更高電壓(例如9V或12V)最簡單最快的方法是什么(最好使用CubeMX)?任何人都可以分享最簡單的代碼來從 USB-PD
    發表于 12-23 06:45

    致遠電子發布USB-PD快充測試方案

    USB-PD(Power Delivery)是基于USB Type-C的供電標準,最大功率可達100W。
    發表于 05-17 09:47 ?16次下載

    致遠電子發布 USB-PD 快充測試方案

    USB-PD(Power Delivery)是基于USB Type-C的供電標準,最大功率可達100W。雖然USB-PD快充越來越熱,但行業內并沒有針對快充的測試工具,ZLG致遠電子正式發布U
    發表于 05-17 18:10 ?4530次閱讀
    致遠電子發布 <b class='flag-5'>USB-PD</b> 快充測試方案

    什么是USB-PD?

    文章來源于:線纜小編TypeC情報中心 我們可以通過多種方式為手機充電,USB-PD是其中之一。實際上,目前所有高端的Android手機都開始使用這種快速充電技術,最近華為的MATE30系列和小米
    的頭像 發表于 10-11 09:40 ?3.6w次閱讀
    什么是<b class='flag-5'>USB-PD</b>?

    USB-PD 3.0及高壓快充協議管理控制器說明書

    USB-PD 3.0及高壓快充協議管理控制器說明書
    發表于 10-22 15:55 ?41次下載

    如何使用STM32CubeMX構建簡單的USB-PD接收器應用程序

    如何使用STM32CubeMX構建簡單的USB-PD接收器應用程序
    發表于 11-21 17:07 ?8次下載
    如何使用STM32CubeMX構建簡單的<b class='flag-5'>USB-PD</b>接收器應用程序

    如何使用DSLogic分析USB-PD信號?

    一文檔介紹本文將一步步介紹如何使用DSLogic邏輯分析儀采集和分析USB-PD信號。此次將演示使用快充充電器給一臺安卓手機充電。二需要測量哪幾個信號邏輯分析儀需要測量CC1信號,兩設備協商后
    的頭像 發表于 01-12 14:09 ?1201次閱讀
    如何使用DSLogic分析<b class='flag-5'>USB-PD</b>信號?

    USB Type-C與USB-PD技術對比

    本篇文章主要詳述 24P、16P 與 6P USB-TypeC接口的引腳定義,以及USB-PDUSB接口類型,以便廣大讀者在進行硬件設計時提供參考依據。
    發表于 01-26 12:23 ?2811次閱讀
    <b class='flag-5'>USB</b> Type-C與<b class='flag-5'>USB-PD</b>技術對比
    主站蜘蛛池模板: 久久不射网| 国产成年网站v片在线观看| 国产一区二区三区国产精品 | 久久精品国产清白在天天线| 伊人久久综合网站| 免费无码又爽又黄又刺激网站| 99久久免费热在线精品| 秋霞电影网伦大理电影在线观看| 国产精品1区在线播放| 亚洲色欲国产免费视频| 国产精品美女久久久久浪潮AV | 国产色婷婷精品人妻蜜桃成熟| 色屁屁影院| 果冻传媒2021一二三区| 97碰成视频免费| 看美女大腿中间的部分| 啊…嗯啊好深男男高h文| 亚洲电影第1页| 国产美熟女乱又伦AV| 中文字幕 人妻熟女| 日日夜夜影院在线播放| 久久久久久久网| 伊人色综合久久大香| 奇米狠狠一区二区三区| 黑人巨大两根一起挤进欧美| 99久久国产宗和精品1上映| 性一交一无一伦一精一品| 免费看黄色一级| 黑人开嫩苞| 成人免费视频在| 中国欧美日韩一区二区三区| 四虎精品久久| 欧美成人无码视频午夜福利| jiapanese50欧美熟妇| 欧美兽交YOYO| 超碰国产亚洲人人| 在教室做啊好大用力| 欧美乱子YELLOWVIDEO| 狠狠色综合7777久夜色撩人| 抽插H浊水H嫩B父皇| 迅雷哥在线观看高清|