5 Replies Latest reply on Nov 19, 2020 5:45 PM by YiZ_31

    Why can't I get 20V from the sink side?

    NaMe_2085021

      Hi everyone,

       

      I use CYPD3120.

      I get the whole range of voltages from the array, but I can't get 20V.

      Could you help me?

       

      Part of the code:

      ........................................................................................................................................................................................

      static ccg_status_t hid_output_data (usb_setup_pkt_t *pkt)

      {

          uint8_t  port;

          uint8_t *ptr;

          ptr = usb_hid_get_ep0_buffer();

          pd_do_t SNK_PDO[5]; 

          SNK_PDO[0].val = 0x0001912C; //5V 3A

          SNK_PDO[1].val = 0x0002D12C; //9V 3A

          SNK_PDO[2].val = 0x0003C12C; //12 3A

          SNK_PDO[3].val = 0x0004B12C; //15V 3A

          SNK_PDO[4].val = 0x000640C8; //20V 2A

         

          for(i = 1; i < 64; i++)

          {             

              switch(ptr[1])

              {           

                  case PD_5V:

                      dpm_update_snk_cap(0, 1, SNK_PDO);

                      dpm_update_snk_cap_mask (0, 0x0F);

                      dpm_pd_command (0, DPM_CMD_SNK_CAP_CHNG, NULL,NULL);

                  break;

                  case PD_9V:

                      dpm_update_snk_cap(0, 2, SNK_PDO);

                      dpm_update_snk_cap_mask (0, 0x0F);

                      dpm_pd_command (0, DPM_CMD_SNK_CAP_CHNG, NULL,NULL);

                  break;

                  case PD_12V:

                      dpm_update_snk_cap(0, 3, SNK_PDO);

                      dpm_update_snk_cap_mask (0, 0x0F);

                      dpm_pd_command (0, DPM_CMD_SNK_CAP_CHNG, NULL,NULL);

                  break;

                  case PD_15V:

                      dpm_update_snk_cap(0, 4, SNK_PDO);

                      dpm_update_snk_cap_mask (0, 0x0F);

                      dpm_pd_command (0, DPM_CMD_SNK_CAP_CHNG, NULL,NULL);

                  break;

                  case PD_20V:

                      dpm_update_snk_cap(0, 5, SNK_PDO);

                      dpm_update_snk_cap_mask (0, 0x0F);

                      dpm_pd_command (0, DPM_CMD_SNK_CAP_CHNG, NULL,NULL);

                  break;                

              }

      ........................................................................................................................................................................................