- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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;
}
........................................................................................................................................................................................
- Tags:
- pd contract
- sink
- usb c
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
You can try to update the snk cap mask to 0x1F. It looks like you only enabled 4 sink PDOs.
Regards,
Eddie
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Eddie,
Thank you for your fast update, but your answer dosn't work for me.
Could you send part of the code example?
Best regards,
Nazar Melnichek
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Do you have a PD analyzer to capture the CC log? Have you updated sink PDO with
dpm_update_snk_cap (0, 5, SNK_PDO);
dpm_update_snk_cap_mask(0, 0x1F);.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I don't have a PD analyzer.
Yes, I updated that. But it doesn't work for me.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
It may also be due to your adapter do not have matched 20V PDO. CYPD3120 already have 20V PDO if you have updated the code.