This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TUSB422:硬重置后卡在SNK_DISCOVERY状态

Guru**** 2481465 points
Other Parts Discussed in Thread: TUSB422

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/663193/tusb422-stuck-in-snk_discovery-state-after-hard-reset

部件号:TUSB422

我的设计是在初始电缆插入时由VBUS导轨供电。正确协商了接收器轮廓:

 _______  _________  _______  
/_ __///_///|_ |||_ |
 //////\\_ / _/_/_/_/
//\______________///__/  

PD Stack v 0.98
===================================================
TCPM初始化
未附加_SRC
端口[0]:地址:0x20,DRP,Rp:3.0A,标志:try-SNK。
VID:0x0451
PID:0x0422
DID:0x0100
版本:0x02
PD初始化
TUSB初始化完成
CC状态= 0x13
Attach _Wait_SNK
CC状态= 0x13
已附加_SNK
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
PE_SNK_启动
tcpm_mux_controlMux:usb
PE_SNK_发现
PE_SNK_WAY_OR_CAPS
PD处方
PE_SNK_Evaluate_Capability
PE_SNK_SELECT_Capability
PD处方
PE_SNK_过渡_接收器
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
PD处方
PE_SNK_就绪
PD处方
PD处方
PD处方
PD处方
PD处方
PD处方
PE_SNK_Evaluate_Capability
PE_SNK_SELECT_Capability
PD处方
PE_SNK_过渡_接收器
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
PD处方
PE_SNK_就绪

策略引擎状态历史记录:
 [0] SNK_STARTUP
 [1] SNK_DISCOVERY
 [2] SNK_WAY_for _CAPS
 [3] SNK_Evaluate_Capability
 [4] SNK_SELECT_Capability
 [5] SNK_transition接收器
 [6] SNK_READY
 [7] SNK_Evaluate_Capability
 [8] SNK_SELECT_Capability
 [9] SNK_transition接收器
->[10] SNK_READY

C型状态:Attached_SNK (最后:Attach_Wait_SNK)

然后设备重启(这会导致VDD和VCONN在TUSB422上重启),但MCU保持打开,电缆保持插入状态。  在关闭电源后重启时,我正在重新初始化SW堆栈。  在此期间,CC似乎出现硬复位。  这会导致SW堆栈卡在发现状态,并忽略传入Source_Cap消息:

 _______  _________  _______  
/_ __///_///|_ |||_ |
 //////\\_ / _/_/_/_/
//\______________///__/  

PD Stack v 0.98
===================================================
TCPM初始化
未附加_SRC
端口[0]:地址:0x20,DRP,Rp:3.0A,标志:try-SNK。
VID:0x0451
PID:0x0422
DID:0x0100
版本:0x02
PD初始化
TUSB初始化完成
CC状态= 0x13
Attach _Wait_SNK
已附加_SNK
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
PE_SNK_启动
tcpm_mux_controlMux:usb
PE_SNK_发现
PE_SNK_WAY_OR_CAPS
PE_SNK_hard_reset
PE_SNK_transition _to_default
tcpm_hal_vbrUS_disable (端口,vbrUS_SNK);
PE_SNK_启动
PE_SNK_发现
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);
CC状态= 0x13
tcpm_hal_vbrUS_enable (端口,vbrUS_SNK);

策略引擎状态历史记录:
 [0] SNK_STARTUP
 [1] SNK_DISCOVERY
 [2] SNK_WAY_for _CAPS
 [3] SNK_hard_reset
 [4] SNK_Transitation_to_default
 [5] SNK_STARTUP
->[6] SNK_DISCOVERY
tcpC-0注册表:
10:00
11:00
12:FF
13:0f
14:FF
15:7F
18:60
19:00
1A:0A.
1B:06
1C:60
一维:13.
1E: 00
1F:00
2E:02
2F:00
70:00
71:00
72:00
73:00
74:00
75:00
76:00
77:00
78:00
79:00
90:00
92:00
94:04
A0:00


基于寄存器转储,它看起来有点像硬重置掉电导致TUSB422重置,但不是MCU。

电源树

VBUS -------- 3V3--MCU

        \----------- 3V3-----TUSB VDD

                  \----------- TUSB VCONN

是否有办法从这种情况中恢复(我想,如果我重新初始化堆栈,我会发现自己处于死锁状态)?

或者,在我重新初始化堆栈以准备TUSB422之前,是否应该调用某些内容?

注:尽管打印了标题,我仍在使用堆栈的rev 0.99。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Devan,

    如果您禁用try.snk,并且TUSB422作为源连接时,只需将电源角色更改为SNK,该怎么办?

    此致,
    迭戈。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我假设您正在讨论TC_flags_try_SNK标志?  我将尝试此操作,但我认为我的设备无法在SRC模式下运行。  

    出现的情况似乎是15V VBUS (先前协商)跳闸VBUS OV警报并生成硬重置。  理想情况下,我希望SW堆栈意识到TUSB422之前已与15V PDO协商,并恢复相应的状态(TCPC_STELE_Attached_SNK?)。  如果不可能,是否有方法在重置主机之前指示TUSB422请求vSafe5V?  在显式合同期间,似乎允许请求按摩,但TI堆栈目前似乎没有此项的挂钩。

    谢谢!
    德万

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    tc_flags_try_SNK没有改变这种行为。