ccg3pa's Source Capabilities 5A configuring for APDO supplytype

Announcements

Live Webinar: USB-C adoption. Simple & Cost-efficient solutions | April 18th @9am or 5pm CEST. Register now !

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
PrRe_3492461
Level 4
Level 4
First like received 50 sign-ins 50 replies posted

Hello Community,

I'm able to configure 5A in SrcCaps only for Fixed Supply type PDOs,

If I want to configure 5A for APDO supplytype, I'm unable to configure.

This can be considered as continuation to the below thread:

https://community.infineon.com/t5/USB-EZ-PD-Type-C/Preparing-and-initiating-SrcCaps-packet-with-5A-c...

Can somebody help me out here. @Pranava_YN  ?

Thanks in advance,

Pranay

0 Likes
1 Solution
Wang_Fred
Moderator
Moderator
Moderator
5 questions asked 100 solutions authored 250 sign-ins

Hi Pranay,

I tested on CY4532 that the max_cur of APDO could be updated during running time. You can see the cc log attached below - the original FW max current set is 3A.  

Wang_Fred_0-1678855554316.png

I have used the method to update all values of Source PDO, not just update specific items. Just as the below capture shows-

Wang_Fred_1-1678855642598.png

Thanks,

Fred

View solution in original post

10 Replies
Kieran_Pan
Moderator
Moderator
Moderator
250 sign-ins 10 likes received First question asked

Hello Pranay,

Could you please try to use the EZ-PD Configuration Utility and set the PDO with PPS? 
And then you can set the APDO with 5A for the supply type.

Best regards,
Kieran

0 Likes

hi Kieran,

Thanks for the reply,

I tried that already, By default If I configure using EZ-PD Configuration Utility and set the PDO with PPS for 5A current, I'm able o see Src Caps being advertised as 5A for PPS but if I want to configure PDOs and advertise SrcCaps in runtime, I'm unable to do so only for APDO.

I'm able to only configure APDO Max current upto 3.1A, After that if I configure for 3.2A, I'm seeing APDO Current as 0A and for 3.3A configuration I'm seeing current as 0.2A and same goes upto 5A configuration i'm seeing 1.8A.

Please let me know how I can achieve this in runtime configuration.

 

Thanks and regards,

Pranay

0 Likes

Hello Pranay,

How do you advertise the source capability in runtime? Use PAT USBCEE (POWER TESTER) or other software? What is your test block diagram? Do you test with E-load and set with CC Mode?  
Is it the maximum load problem? 

Best regards,
Kieran

0 Likes

Hi,

I'm not using ccg3pa DVK or any of the mentioned tools.

I'm using ccg3pa for my custom HW design. I have a CC line PD protocol analyzer to watch out for transaction happening between 2 port partners.

I have configured ccg3pa as i2c slave and connected to another master thereby sending commands over i2c interface. When received a particular command ccg3pa internally configures and initiates SrcCaps in runtime.

using below logic:

dpm_update_src_cap_mask(0,(dpm_stat->src_pdo_mask | (1 << index)));

dpm_update_src_cap(0, lPDOCount, new_pdo);
CyDelay(2);
dpm_pd_command(0, DPM_CMD_SRC_CAP_CHNG, NULL, NULL); //Send PD command about the changes in source capabilities

new_pdo is the structure that hold my required src caps like below:

pd_do_t new_pdo[MAX_NO_OF_PDO];

new_pdo[i].pps_src.max_cur = (lPDOPayload & 0x3F);
new_pdo[i].pps_src.min_volt = ((lPDOPayload >>  8 & 0xFF);
new_pdo[i].pps_src.max_volt = ((lPDOPayload >> 17) & 0xFF);
new_pdo[i].pps_src.pps_pwr_limited = ((lPDOPayload >> 27 ) & 0x01);
new_pdo[i].pps_src.apdo_type = ((lPDOPayload >> 28) & 0x03);
new_pdo[i].pps_src.supply_type = ((lPDOPayload >> 30) & 0x03);

0 Likes

Hi,

1. Have you updated the cable current to 5A using dpm_update_def_cable_cap()?

2. can you attach your cc log for configuring APDOs during runtime? could you see a new PD contract since you called dpm_pd_command(0, DPM_CMD_SRC_CAP_CHNG, NULL, NULL); 

3. can you make sure the below values are correct? please note the unit of pps_src -> max_cur is 50mA.

dpm_update_src_cap_mask(0,(dpm_stat->src_pdo_mask | (1 << index)));

dpm_update_src_cap(0, lPDOCount, new_pdo);

pd_do_t new_pdo[MAX_NO_OF_PDO];

new_pdo[i].pps_src.max_cur = (lPDOPayload & 0x3F);
new_pdo[i].pps_src.min_volt = ((lPDOPayload >>  8 & 0xFF);
new_pdo[i].pps_src.max_volt = ((lPDOPayload >> 17) & 0xFF);
new_pdo[i].pps_src.pps_pwr_limited = ((lPDOPayload >> 27 ) & 0x01);
new_pdo[i].pps_src.apdo_type = ((lPDOPayload >> 28) & 0x03);
new_pdo[i].pps_src.supply_type = ((lPDOPayload >> 30) & 0x03);

0 Likes

Hi Wang,

1. Have you updated the cable current to 5A using dpm_update_def_cable_cap()?

Yes, I did this, without using this I will not be able to advertise 5A in Fixed PDOs right.

 


2. can you attach your cc log for configuring APDOs during runtime? could you see a new PD contract since you called dpm_pd_command(0, DPM_CMD_SRC_CAP_CHNG

 

Yes, I will see a New PD Contract everytime when I configure SrcCaps in runtime using above method. Please find the respective captures and installer in below link:

https://graniteriverlabs1-my.sharepoint.com/:f:/g/personal/india-drive_graniteriverlabs_com/EvIPsSyF...

 

3. can you make sure the below values are correct? please note the unit of pps_src -> max_cur is 50mA.

dpm_update_src_cap_mask(0,(dpm_stat->src_pdo_mask | (1 << index)));

dpm_update_src_cap(0, lPDOCount, new_pdo);

pd_do_t new_pdo[MAX_NO_OF_PDO];

new_pdo[i].pps_src.max_cur = (lPDOPayload & 0x3F);
new_pdo[i].pps_src.min_volt = ((lPDOPayload >>  8 & 0xFF);
new_pdo[i].pps_src.max_volt = ((lPDOPayload >> 17) & 0xFF);
new_pdo[i].pps_src.pps_pwr_limited = ((lPDOPayload >> 27 ) & 0x01);
new_pdo[i].pps_src.apdo_type = ((lPDOPayload >> 28) & 0x03);
new_pdo[i].pps_src.supply_type = ((lPDOPayload >> 30) & 0x03);

Yes, I re-confirmed that the data we're sending to configure above variables is proper.

Can you please try this sequence on your end and get a confirmation.

I believe it would be easy to fix if you try to configure and can reproduce issue.

 

Thanks and regards,
Pranay

 

0 Likes
Wang_Fred
Moderator
Moderator
Moderator
5 questions asked 100 solutions authored 250 sign-ins

Hi Pranay,

I tested on CY4532 that the max_cur of APDO could be updated during running time. You can see the cc log attached below - the original FW max current set is 3A.  

Wang_Fred_0-1678855554316.png

I have used the method to update all values of Source PDO, not just update specific items. Just as the below capture shows-

Wang_Fred_1-1678855642598.png

Thanks,

Fred

Hi Wang,

Thanks for the solution, with this above suggested approach, I'm able to fix this issue.

But I'm curious what was wrong with my approach. It should have also work right ? why it wasn't ?

 

--pranay

0 Likes
Wang_Fred
Moderator
Moderator
Moderator
5 questions asked 100 solutions authored 250 sign-ins

Hi Pranay,

Both methods are identical in essence. I tried your manner again and the test result shows it also effective.

Wang_Fred_0-1678884881880.png

Apart from the 6 elements which you assigned a value, the reserved bits(rsvd1/2/3) should also be assigned with 0 explicitly.  Please compare the value of new_pdo[i].pps_src with raw data(new_pdo[i].val), and check if any difference after all elemensts of new_pdo[i].pps_src get assigned values. 

If there is no any difference, the test result should be same.

 

Thanks,

Fred

Thanks fred,

I was not assigning that reserved bits to zero, Will try to do that and get back to you, till then we can consider this issue as fixed and can close this issue.

 

Thanks for your time,

pranay.

0 Likes