Eu gostaria de fazer uma pergunta bastante específica sobre o gerenciamento de energia USB.
Antes de tudo, descreverei o design do meu dispositivo. É um driver de linha de sinal simétrico com um codec de áudio embutido para o meu sistema de alto-falantes DIY. O dispositivo é dividido internamente em dois blocos majoritariamente independentes: o driver de linha com um MCU de controle e o codec de áudio (PCM2706 da TI). Ambos precisam de conectividade de dados USB (via FT232R para o bloco do driver) e todo o dispositivo deve ser alimentado por barramento. Os dois blocos serão conectados por um chip de hub USB, produzindo uma única conexão USB de ligação ascendente ao PC. Espero que o consumo do estágio do driver seja algo entre 100 e 200 mA (definitivamente mais de uma unidade de carga).
Aí vem o problema: de acordo com a especificação USB, um hub alimentado por barramento pode fornecer apenas uma unidade por porta a jusante enquanto extrai no máximo 5 unidades a partir da montante. Gostaria de saber o que o hub faria se solicitasse duas unidades via FT232 para o estágio do driver. O limite upstream de 5 unidades não será atingido (1 unidade para o hub, 1 unidade para o codec e duas para o driver); portanto, o computador deve estar fisicamente apto a fornecer essa corrente.
Para o chip do hub, visitei http://www.ti.com/lit/ds/symlink/tusb2036.pdf . Existe uma opção do modo de alimentação "agrupado", isso ajudaria? Ou o chip se recusaria a conceder duas unidades ao motorista? E, neste caso, existe alguma solução suja?
Estou ciente do requisito de que dispositivos de alta potência também sejam necessários para extrair no máximo 100 mA durante a enumeração; isso não é um problema, pois o FT232 pode ativar o driver logo após a enumeração. O hub também ativará os estágios de forma independente.
Espero ter afirmado o meu problema suficientemente claro e obrigado pelo seu tempo de antecedência :)
ATUALIZAR:
Eu fiz mais algumas pesquisas sobre o chip TUSB2036. A proteção contra sobrecorrente pode ser desativada pelo pino / OCPROT. O hub então relata ao controlador raiz que não é capaz de detectar sobrecorrente. Há um aviso na folha de dados de que a proteção contra OC é exigida pela especificação USB 2.0 - isso não importa para mim, eu preciso apenas de 1.1 velocidade total. O hub raiz do PC deve fornecer à IMO 500 mAmps para todo o dispositivo. Assim, eu poderia definir o FT232 do driver para exigir apenas 100 mA e o hub nunca saberia se eu teria excedido o limite (respeitando os 500 mA do PC, é claro). Alguém pode dizer se isso poderia funcionar?