Design USB di tipo C.

Aug 23 2020

Vorrei avere una risposta sull'implementazione di un dispositivo USB di tipo C. Confrontando con l'USB 2.0, dove è necessaria la resistenza di pull-up su D + per selezionare la velocità di comunicazione, non ho trovato le specifiche per il tipo C. La mia domanda: è necessaria la resistenza di pull-up su D + (DP1 e DP2) , o può essere impostato come l'immagine qui sotto?

Qui in questa nota applicativa ST per hardware USB (https://www.st.com/resource/en/application_note/dm00296349-usb-hardware-and-pcb-guidelines-using-stm32-mcus-stmicroelectronics.pdf), è possibile leggere che VBUS è OBBLIGATORIO per i dispositivi Self-Powered sul pin PA9 (questo è il mio caso):

Oltre a questo, nello stesso documento, si dice che il chip ha già resistenze di pull-up:

Nell'immagine qui sotto, viene mostrato che è necessaria una eference VBUS all'STM32F405, per segnalare quando il cavo USB è collegato.

Infine, sul datasheet (https://www.st.com/resource/en/reference_manual/dm00031020-stm32f405-415-stm32f407-417-stm32f427-437-and-stm32f429-439-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf), Ho scoperto che, infatti, è necessario collegare il VBUS al chip per contrassegnare la connessione via cavo:

In sintesi, NON è necessario per l'STM32F405 il resistore di pull-up su D +, e in più è necessario un divisore resistivo VBUS per notificare al chip STM32 che il cavo USB per l'host è stato collegato. Correggimi se sbaglio!


[EDIT: FINAL VERSION WITH NO USB CONTROLLER] Alcuni punti, grazie a coloro che hanno cercato di aiutare:

  1. L'obiettivo di questo progetto è di comunicare tramite USB-C come periferica solo dispositivo e inoltre di utilizzare VBUS dell'host per alimentare l'intero sistema, con tensioni VBUS diverse, quindi considera che VBUS può andare da 0v a 20v, che verrà implementato in seguito con un chip controller USB. Il sistema ha il proprio alimentatore, chiamato VM sul mio schema, quindi il VBUS potrebbe alimentare il sistema o meno, a seconda degli utenti.
  2. Aggiunto il diodo zener Z1 (più R48 e R49) per evitare che il VBUS diventi superiore a 3,3 V, supponendo che VBUS possa variare da 4 V a 20 V (sto progettando di implementare un controller USB-C, in modo che funzioni bene per la possibile variazione di tensione VBUS).
  3. T1 è un diodo TVS Vrwm 20v per evitare transitori. Lo stesso per T2 e T3, entrambi i diodi TVS Vrwm 3,6v.
  4. Z2 e Z3 sono semplicemente diodi zener per evitare problemi con cavi USB illegali che hanno valori errati per Rp. Supponendo che la linea CC possa raggiungere fino a 10,4 V nel peggiore dei casi, ma ha un limite massimo di 6 V, sia Z2 che Z3 proteggono la linea CC.
  5. L'etichetta VBUS va al pin PA9 del chip STM32F405, per rilevare la presenza di tensione VBUS (il pin realizzerà una tensione da 0 a 3,3, anche se VBUS passa da 0v a 20v).


[EDIT: FINAL VERSION WITH USB CONTROLLER]

Qui posto una versione completa per funzionare come un sistema autoalimentato solo per dispositivi, dove la VM è l'alimentazione del sistema, che può essere fornita da VBUS O dalla batteria. La scheda tecnica FUSB302B mostra un tipico circuito applicativo e l' AN6102 mostra la sua complementazione, in cui viene aggiunto un diodo zener 5v1 per limitare la tensione di linea CC per evitare che la tensione superi i 6v - quando vengono utilizzati cavi illegali.

Risposte

2 Ale..chenski Aug 23 2020 at 04:01

Il pull-up di definizione della velocità USB2 è una funzione di un dispositivo stesso (che dovrebbe essere sul lato destro degli schemi). Il tipo C di per sé non si preoccupa della comunicazione USB, è una specifica del connettore indipendente. I due pull-down 5.1k sui tuoi schemi definiscono la funzione del dispositivo, è sufficiente.