Come funziona esattamente l'integrazione USB dal microcontrollore?

1

Non ho alcuna integrazione USB precedente e circa 8 mesi di apprendimento di sistemi embedded su dispositivi Atmel. Sto cercando di utilizzare una serie Atmel SAM L per connettersi tramite USB a un computer. Il caso d'uso è per il trasferimento dei dati. Nello specifico, l'MCU raccoglierà i dati dai suoi sensori e li impacchetterà per il trasferimento USB.

Ho cercato e letto tutti gli esempi USB inclusi di Atmel. Ho anche iniziato a leggere le specifiche di classe di usb.org per CDC.

Ho ora in esecuzione qualcosa che mi consente di inviare i dati lungo una porta com, nella porta USB di destinazione e poi il usb del debugger in un'altra porta COM. Tuttavia, non penso che questo sia vero USB.

Il mio problema è due volte.

  1. Non capisco appieno cosa distingua USB dalla comunicazione seriale su una porta com.
  2. Anche se lo stavo facendo correttamente, non sono sicuro di come testare e verificare di aver effettivamente creato un dispositivo USB legittimo che possa essere accettato da un computer host.

I collegamenti alla documentazione (Atmel o generici) o codice di esempio sarebbero apprezzati.

    
posta Nate San 15.06.2016 - 15:44
fonte

1 risposta

2

Una porta com regolare è un hardware e un protocollo di comunicazione molto "vicino al metallo".

L'USB è molto più complicato. Vi sono requisiti rigidi in termini di tempo, chi parla quando, si rivolge a, e una varietà di altri aspetti. È così complicato che esistono intere società il cui compito principale è nascondere quella complessità con circuiti integrati specializzati, come FTDI.

Un vantaggio di questa complessità è che hai una comunicazione sia in-band che out-of-band con i tuoi dispositivi USB. Con le porte COM, l'unico modo in cui posso dire se un dispositivo è presente è eseguire il ping di tutti i dispositivi, provare a parlare con loro e determinare se ci sono, un processo che può richiedere una buona quantità di tempo. Con USB, tutto questo è definito nello standard, e posso chiedere al controller USB tutto ciò che è collegato e prendere la mia decisione quasi all'istante.

Il dispositivo CDC è un'astrazione via USB per consentire la comunicazione tramite USB utilizzando software che precede l'USB o che desidera semplicemente utilizzare le librerie di porta seriale mature e disponibili. Altre classi di dispositivi e dispositivi personalizzati utilizzano schemi di comunicazione diversi all'interno della progettazione di USB per implementare le loro comunicazioni.

Per quanto riguarda la tua seconda domanda, "legittimo" può avere una varietà di significati, ma se puoi inviare byte e ottenere risposte in modo atteso, il tuo dispositivo funziona e sei a posto, ed è "USB reale" . Se si desidera un dispositivo USB certificato, ci sono molti altri ostacoli da superare e le qualifiche da soddisfare sono troppo vaste per essere affrontate qui.

Quando le persone implementano l'USB su un progetto incorporato fanno una di queste due cose: o usano uno dei circuiti integrati citati in precedenza, oppure devono implementare l'intero stack USB sul loro microcontrollore. Scoprire la fonte per i campioni di Atmel o gli stack USB aperti dovrebbe darti un'idea di quanto sia divertente un'esperienza.

    
risposta data 15.06.2016 - 18:21
fonte

Leggi altre domande sui tag