Aggiungiamo flessibilità alle porte USB con FlexConnect


MCA630

In questo tutorial, Brigham Steele, Principle Validation Engineer di Microchip Technology, illustra come la tecnologia FlexConnect dell’azienda porti flessibilità ai ruoli  altrimenti rigidi di host e device USB.

Ruoli particolarmente rigidi sono utilizzati nel protocollo USB per mantenere l’ordine. Un processore agisce come host e invia comandi al dispositivo, che risponde ai comandi. Tutto ciò funziona bene nel caso in cui vi sia un processore centrale che controlla i dispositivi supportati.

Tuttavia, oggigiorno i microprocessori sono integrati in una gran varietà di dispositivi tra cui tablet, laptop, ultra-book e smartphone e quindi l’host potrebbe non essere sempre lo stesso in ogni applicazione.

Per risolvere questo problema, Microchip è arrivata a realizzare  FlexConnect, una funzionalità unica tra gli hub USB delle varie aziende e disponibile per i dispositivi USB253x, USB3613, USB3813 e USB46x4. L’utilizzo di FlexConnect permette all’hub di cambiare dinamicamente le porte fisiche, che si comportano come porte di upstream e downstream, così che il progettista possa sviluppare un prodotto che si comporta come un host o come un device USB, senza che abbia due connettori dedicati. Un sistema con queste capacità può, attraverso l’hub, espandere su una porta i dispositivi connessi a quella stessa porta.

Applicazioni

Tra le applicazioni portatili ci sono smartphone e tablet, dispositivi che possono comportarsi come host o come device. Gli accessori per questi dispositivi possono anch’essi essere utilizzati attraverso FlexConnect per espandere le capacità del dock o del dispositivo. Per esempio, la porta downstream di un dock può usare FlexConnect per supportare un tablet o smartphone compatibile dual-role, lasciandolo libero di ricevere una variazione e comportarsi come host.

Molti utilizzatori impiegano questi dispositivi portatili anche nella loro auto. Un sistema di entertainment automobilistico che includa FlexConnect può comportarsi come un host quando deve connettere dispositivi quali pendrive o card reader, o come device se dovrà connettere uno smartphone o tablet.

Stazioni per test automatizzati possono anch’esse avvantaggiarsi di questa tecnologia per connettersi a porte preesistenti sul prodotto finale. Ciò lascia i sistemi di test liberi di fare il download di nuovo firmware al SoC, comunicare con tutti di dispositivi nel sistema, ed eseguire ruotine automatiche per ridurre i costi complessivi, come mostrato in Fig. 1.

Fig1

Fig. 1: Test mode setup

Il software sul microcontroller potrebbe non essere in grado di testare completamente tutti i dispositivi connessi, ed un sistema di test automatico potrebbe ridurre i costi in maniera significativa. Potrebbe quindi essere necessario aggiungere apparecchiature interne di test che richiederebbero all’hub di cambiare direzione. FlexConnect permette al tester di controllare l’USB senza alcun cambiamento hardware al sistema USB.

Requisiti

Ci sono vari modi attraverso i quali un host USB può trasferire il possesso del bus ad un device. Quando viene aggiunto un hub, debbono essere presi in considerazione anche altri fattori per essere sicuri che tutti i dispositivi conoscano quale è il loro specifico ruolo.

I segnali di basso livello coinvolti sono: Vbus, generalmente 5V, fornito dall’host; DP, dove l’host ha un pull down da 15K e il dispositivo che ne richiede una pull up da 15k a 3,3V; DM, dove l’host ha una pull down da 15K; ID, che è una opzione utilizzata in applicazioni OTG (on the go) ed è spinta dal dispositivo OTG enabled; infine il GND comune di riferimento.

Ci sono due modi per i quali una porta possa cambiare da host a  device. Nel primo, il processore può cambiare dinamicamente se una exposed port agisce come un host o come device attraverso comandi software low-level. Se l’host manda un comando speciale al dispositivo affinché cambi direzioni, il software eseguirà anche il cambio di direzione low-level. Nelle specifiche OTG, questo è noto come host navigation protocol (HNP). Con questo metodo interno, l’host mantiene la tensione Vbus di alimentazione dopo che questa ha invertito il ruolo per agire come device.

Nel secondo, l’ID pin può essere utilizzato per segnalare se la porta USB debba fungere da host o da device. Il dispositivo permette una debole resistenza di pull-up sull’ ID pin e quindi controlla lo stato del pin.

Se l’ID pin è high, il dispositivo verifica la presenza di un host controllando la Vbus e, se la trova, agisce come un device. Se l’ID pin è low, il dispositivo pilota 5V sul Vbus ed agisce come un host.

Questo veniva fatto attraverso il collegamento dei cavi USB. Un connettore microA cortocircuiterebbe ID a GND e avrebbe un connettore  B standard all’altro capo del cavo. Un connettore microB  varierebbe l’ID  e avrebbe un connettore A standard all’altro capo. Un sistema USB intelligente potrebbe cambiare lo stato dell’ID pin, quindi cambiando i ruoli di host e device della porta OTG.

Se il comando interno di inversione ruoli viene utilizzato per cambiare direzione, il controllo del bus USB passa al nuovo host. Ciò significa che il sistema originale è asservito al software del nuovo host. Il sistema originale può, tuttavia, riprendere il controllo rimuovendo il Vbus. Se il nuovo host sospende il sistema originario, questo smetterà di inviare start of frame packets (SoFs) ed il sistema entrerà in uno stato low power. Tuttavia, il SoFs cesserà anche se il nuovo host sarà completamente disconnesso.

Se si utilizza la procedura di inversione di ruoli esterna, dovranno essere monitorati gli stati di Vbus e ID. Per determinare se il nuovo host era disconnesso, e Vbus verrebbe rimosso. Se il nuovo host vuole restituire il controllo al sistema originale, l’ID pin dovrebbe essere connesso a terra.

Attivazione del FlexConnect

Ci sono tre modi per abilitare il FlexConnect – attraverso l’SMBus, portando su high un pin digitale, o attraverso un setup packet personalizzato al controller dell’hub. Ci sono anche varie modalità high-level di utilizzo della tecnologia, come con OTG.

Sebbene l’hub USB non sia completamente conforme a OTG, un sistema può trarre vantaggio da alcune delle caratteristiche e funzionalità dell’OTG per implementare un cambio dinamico di direzione. Molti processori hanno porte USB OTG capable ma viene supportato solo un dispositivo USB per porta ed è richiesto un hub per espandere il numero di dispositivi. L’ID pin viene usato per determinare la direzione. Le connessioni OTG sono mostrate in Fig. 2.

Fig2

Fig. 2: connessioni applicazioni OTG

Quando un connettore microB  viene inserito nella presa, l’ID pin viene lasciato mobile e viene  letto come high dal microcontroller, che comunica all’hub attraverso l’SMBus per determinare lo stato del Vbus DET pin. Quando ID e Vbus DET sono entrambi high, un host USB è stato rilevato sull’exposed connector e la porta OTG del microcontroller deve essere configurata come device. Quando un connettore microA è inserito nella presa, l’ID pin è cortocircuitato a GND e viene letto come low dal microcontroller. Un devise USB rilevato sull’exposed connector significa che la porta OTG del microcontroller deve essere configurata come host. La fig. 3 mostra il data flow quando viene connesso ad un device USB.

Fig3

Fig. 3: Data flow con connessione a device USB

FlexConnect può anche essere implementato con dispositivi portatili che ricevono l’alimentazione da un accessorio a cui in seguito consentiranno il controllo. Per esempio, uno smartphone può essere collegato in una console automobilistica per effettuare la ricarica della batteria ma in seguito l’utilizzatore potrebbe voler usare l’interfaccia dello smartphone per ascoltare musica. In questo caso, l’unità di infotainment dovrà mandare un comando USB all’hub e lo smartphone dovrà iniziare il cambio di controllo.

Il sistema USB è configurato e può funzionare indipendentemente. La porta di  downstream dell’hub è in grado di ricaricare batterie e conterà le altre porte downstream. Quando lo smartphone è connesso, questo rileva la tensione Vbus e il battery charging handshake e inizia la carica. L’unità di infotainment conta e controlla il device. Può quindi passare il controllo dell’hub allo smartphone se l’utilizzatore vuole utilizzare la sua interfaccia. Il data flow viene mostrato in Fig. 4.

Fig4

Fig. 4: Data flow del controllo inversione di direzione

Conclusione

I sistemi elettronici moderni chiedono molto di più da una porta USB, come mai prima. Con le funzionalità FlexConnect, i progettisti possono sviluppare sistemi più avanzati dato che questa consente agli hub di cambiare la direzione del data flow.

 

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ricevi un avviso se ci sono nuovi commenti. Oppure iscriviti senza commentare.