USB C PD fast power role swap
$begingroup$
I'm currently designing a device, which consists of a STM32 microcontroller with USB 2.0 support, USB 2.0 hub and few dimmable leds.
STM is connected to the hub, along with few other devices. Hub is then connected to a smartphone via a USB-C connector.
The device has two modes of operation:
When connected to external power source it has to operate as upstream facing device (UFP, USB hub is connected to smartphone), and power SOURCE.
When external power is disconnected, it should switch to power SINK, while maintaining it's data role (UFP, all devices still connected to hub should be visible to smartphone).
The device has a microcontroller, which can send power role swap to the smartphone.
I'm not sure if I'm understanding the standard correctly, but:
STUSB1600A is only a controller, without Fast Role Swap
while TPS65987D I think is an overkill for the task (or maybe I'm wrong?)
Could You please advise some sensible solution?
usb usb-device usb-c power-delivery
$endgroup$
add a comment |
$begingroup$
I'm currently designing a device, which consists of a STM32 microcontroller with USB 2.0 support, USB 2.0 hub and few dimmable leds.
STM is connected to the hub, along with few other devices. Hub is then connected to a smartphone via a USB-C connector.
The device has two modes of operation:
When connected to external power source it has to operate as upstream facing device (UFP, USB hub is connected to smartphone), and power SOURCE.
When external power is disconnected, it should switch to power SINK, while maintaining it's data role (UFP, all devices still connected to hub should be visible to smartphone).
The device has a microcontroller, which can send power role swap to the smartphone.
I'm not sure if I'm understanding the standard correctly, but:
STUSB1600A is only a controller, without Fast Role Swap
while TPS65987D I think is an overkill for the task (or maybe I'm wrong?)
Could You please advise some sensible solution?
usb usb-device usb-c power-delivery
$endgroup$
add a comment |
$begingroup$
I'm currently designing a device, which consists of a STM32 microcontroller with USB 2.0 support, USB 2.0 hub and few dimmable leds.
STM is connected to the hub, along with few other devices. Hub is then connected to a smartphone via a USB-C connector.
The device has two modes of operation:
When connected to external power source it has to operate as upstream facing device (UFP, USB hub is connected to smartphone), and power SOURCE.
When external power is disconnected, it should switch to power SINK, while maintaining it's data role (UFP, all devices still connected to hub should be visible to smartphone).
The device has a microcontroller, which can send power role swap to the smartphone.
I'm not sure if I'm understanding the standard correctly, but:
STUSB1600A is only a controller, without Fast Role Swap
while TPS65987D I think is an overkill for the task (or maybe I'm wrong?)
Could You please advise some sensible solution?
usb usb-device usb-c power-delivery
$endgroup$
I'm currently designing a device, which consists of a STM32 microcontroller with USB 2.0 support, USB 2.0 hub and few dimmable leds.
STM is connected to the hub, along with few other devices. Hub is then connected to a smartphone via a USB-C connector.
The device has two modes of operation:
When connected to external power source it has to operate as upstream facing device (UFP, USB hub is connected to smartphone), and power SOURCE.
When external power is disconnected, it should switch to power SINK, while maintaining it's data role (UFP, all devices still connected to hub should be visible to smartphone).
The device has a microcontroller, which can send power role swap to the smartphone.
I'm not sure if I'm understanding the standard correctly, but:
STUSB1600A is only a controller, without Fast Role Swap
while TPS65987D I think is an overkill for the task (or maybe I'm wrong?)
Could You please advise some sensible solution?
usb usb-device usb-c power-delivery
usb usb-device usb-c power-delivery
asked yesterday
Mateusz KowalikMateusz Kowalik
161
161
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
The STUSB1600A is only a controller that follows now obsolete management of power roles using pull-up/pull-down combinations on CC lines. It doesn't have any PD capabilities. It is very unlikely that it will ever work for your purpose.
The TPS65987D, however, is a PD controller, which can exchange PD serial communication over CC channels. The thing is that by recent PD specifications the only legal way to change power role of a port is using PD communication, so called "Structured VDM", Vendor Defined Messages. By default, power role of a port is in strict relation with data role: UFP is a sink, and DFP is a source. To swap power roles without swapping data roles you need to engage both ends of the Type-C link in PD negotiations.
The thing is that TPS65987 chip is essentially a PD PHY, it can mostly receive and transmit PD messages. The content and interpretation of these messages must be crafted in firmware of some other MCU via I2C ports, although it does look like the TPS65987 has some local messaging capabilities which must be programmed in.
Also be aware that having Type-C connector doesn't automatically imply that the device supports all these fancy PD and power-swap modes, so your target "a smartphone" may not be designed for up to date PD protocol, so expect that the power-up "accessory mode" won't work with all "a smartphones".
All can I say, "good luck".
$endgroup$
$begingroup$
Considering problem size, it's possible, to change functionality, so the device is always a SOURCE, while being UFP. I thought that try.SRC might be a solution, but I can't make it work on STUST1600A eval.
$endgroup$
– Mateusz Kowalik
yesterday
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");
StackExchange.ifUsing("editor", function () {
return StackExchange.using("schematics", function () {
StackExchange.schematics.init();
});
}, "cicuitlab");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "135"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f425832%2fusb-c-pd-fast-power-role-swap%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
The STUSB1600A is only a controller that follows now obsolete management of power roles using pull-up/pull-down combinations on CC lines. It doesn't have any PD capabilities. It is very unlikely that it will ever work for your purpose.
The TPS65987D, however, is a PD controller, which can exchange PD serial communication over CC channels. The thing is that by recent PD specifications the only legal way to change power role of a port is using PD communication, so called "Structured VDM", Vendor Defined Messages. By default, power role of a port is in strict relation with data role: UFP is a sink, and DFP is a source. To swap power roles without swapping data roles you need to engage both ends of the Type-C link in PD negotiations.
The thing is that TPS65987 chip is essentially a PD PHY, it can mostly receive and transmit PD messages. The content and interpretation of these messages must be crafted in firmware of some other MCU via I2C ports, although it does look like the TPS65987 has some local messaging capabilities which must be programmed in.
Also be aware that having Type-C connector doesn't automatically imply that the device supports all these fancy PD and power-swap modes, so your target "a smartphone" may not be designed for up to date PD protocol, so expect that the power-up "accessory mode" won't work with all "a smartphones".
All can I say, "good luck".
$endgroup$
$begingroup$
Considering problem size, it's possible, to change functionality, so the device is always a SOURCE, while being UFP. I thought that try.SRC might be a solution, but I can't make it work on STUST1600A eval.
$endgroup$
– Mateusz Kowalik
yesterday
add a comment |
$begingroup$
The STUSB1600A is only a controller that follows now obsolete management of power roles using pull-up/pull-down combinations on CC lines. It doesn't have any PD capabilities. It is very unlikely that it will ever work for your purpose.
The TPS65987D, however, is a PD controller, which can exchange PD serial communication over CC channels. The thing is that by recent PD specifications the only legal way to change power role of a port is using PD communication, so called "Structured VDM", Vendor Defined Messages. By default, power role of a port is in strict relation with data role: UFP is a sink, and DFP is a source. To swap power roles without swapping data roles you need to engage both ends of the Type-C link in PD negotiations.
The thing is that TPS65987 chip is essentially a PD PHY, it can mostly receive and transmit PD messages. The content and interpretation of these messages must be crafted in firmware of some other MCU via I2C ports, although it does look like the TPS65987 has some local messaging capabilities which must be programmed in.
Also be aware that having Type-C connector doesn't automatically imply that the device supports all these fancy PD and power-swap modes, so your target "a smartphone" may not be designed for up to date PD protocol, so expect that the power-up "accessory mode" won't work with all "a smartphones".
All can I say, "good luck".
$endgroup$
$begingroup$
Considering problem size, it's possible, to change functionality, so the device is always a SOURCE, while being UFP. I thought that try.SRC might be a solution, but I can't make it work on STUST1600A eval.
$endgroup$
– Mateusz Kowalik
yesterday
add a comment |
$begingroup$
The STUSB1600A is only a controller that follows now obsolete management of power roles using pull-up/pull-down combinations on CC lines. It doesn't have any PD capabilities. It is very unlikely that it will ever work for your purpose.
The TPS65987D, however, is a PD controller, which can exchange PD serial communication over CC channels. The thing is that by recent PD specifications the only legal way to change power role of a port is using PD communication, so called "Structured VDM", Vendor Defined Messages. By default, power role of a port is in strict relation with data role: UFP is a sink, and DFP is a source. To swap power roles without swapping data roles you need to engage both ends of the Type-C link in PD negotiations.
The thing is that TPS65987 chip is essentially a PD PHY, it can mostly receive and transmit PD messages. The content and interpretation of these messages must be crafted in firmware of some other MCU via I2C ports, although it does look like the TPS65987 has some local messaging capabilities which must be programmed in.
Also be aware that having Type-C connector doesn't automatically imply that the device supports all these fancy PD and power-swap modes, so your target "a smartphone" may not be designed for up to date PD protocol, so expect that the power-up "accessory mode" won't work with all "a smartphones".
All can I say, "good luck".
$endgroup$
The STUSB1600A is only a controller that follows now obsolete management of power roles using pull-up/pull-down combinations on CC lines. It doesn't have any PD capabilities. It is very unlikely that it will ever work for your purpose.
The TPS65987D, however, is a PD controller, which can exchange PD serial communication over CC channels. The thing is that by recent PD specifications the only legal way to change power role of a port is using PD communication, so called "Structured VDM", Vendor Defined Messages. By default, power role of a port is in strict relation with data role: UFP is a sink, and DFP is a source. To swap power roles without swapping data roles you need to engage both ends of the Type-C link in PD negotiations.
The thing is that TPS65987 chip is essentially a PD PHY, it can mostly receive and transmit PD messages. The content and interpretation of these messages must be crafted in firmware of some other MCU via I2C ports, although it does look like the TPS65987 has some local messaging capabilities which must be programmed in.
Also be aware that having Type-C connector doesn't automatically imply that the device supports all these fancy PD and power-swap modes, so your target "a smartphone" may not be designed for up to date PD protocol, so expect that the power-up "accessory mode" won't work with all "a smartphones".
All can I say, "good luck".
answered yesterday
Ale..chenskiAle..chenski
28k11866
28k11866
$begingroup$
Considering problem size, it's possible, to change functionality, so the device is always a SOURCE, while being UFP. I thought that try.SRC might be a solution, but I can't make it work on STUST1600A eval.
$endgroup$
– Mateusz Kowalik
yesterday
add a comment |
$begingroup$
Considering problem size, it's possible, to change functionality, so the device is always a SOURCE, while being UFP. I thought that try.SRC might be a solution, but I can't make it work on STUST1600A eval.
$endgroup$
– Mateusz Kowalik
yesterday
$begingroup$
Considering problem size, it's possible, to change functionality, so the device is always a SOURCE, while being UFP. I thought that try.SRC might be a solution, but I can't make it work on STUST1600A eval.
$endgroup$
– Mateusz Kowalik
yesterday
$begingroup$
Considering problem size, it's possible, to change functionality, so the device is always a SOURCE, while being UFP. I thought that try.SRC might be a solution, but I can't make it work on STUST1600A eval.
$endgroup$
– Mateusz Kowalik
yesterday
add a comment |
Thanks for contributing an answer to Electrical Engineering Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f425832%2fusb-c-pd-fast-power-role-swap%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown