¿Qué microcontrolador se puede conectar directamente a un puerto USB?

9

Esencialmente, solo necesito enviar algunos datos al microcontrolador a través de USB, luego el microprocesador decodifica los datos y conduce una tira de luz LED, que funciona a 5V. Tengo problemas para encontrar el microcontrolador adecuado para el trabajo.

El microcontrolador solo necesita tener 2 puertos de entrada en serie para la comunicación USB, dos puertos de salida en serie para la comunicación con la tira de LED y poder funcionar a 5V. Parece innecesario tener un IC dedicado para la comunicación USB cuando todo lo que necesito es un puerto COM serie configurado.

Por ejemplo, aquí está el fragmento de código Arduino que escribe un byte en la tira LPD8806:

void write8(uint8_t d) {
  for (uint8_t i=0; i<8; i++) {
    if (d & _BV(7-i))
      digitalWrite(dataPin, HIGH);
    else
      digitalWrite(dataPin, LOW);
   digitalWrite(clockPin, HIGH);
   digitalWrite(clockPin, LOW); 
  }
}

Para bloquear los datos, envía ceros a la tira.

Steve Barna
fuente
Creo que te refieres a una conexión USB (son bidireccionales) y una conexión en serie (también bidireccional). Si te gusta la foto, la familia 18f4550 hará el trabajo.
Scott Seidman
1
¿Cuál es el protocolo para la tira de LED? ¿Puedes agregar un enlace a la hoja de datos o al sitio web de la tira?
Rocketmagnet
@Rocketmagnet Es esta tira de LED . La hoja de datos está en chino, sin embargo, simplemente hay una entrada en serie y un reloj, y se bloquea enviando ceros por la línea.
Steve Barna

Respuestas:

7

Supongo que por "dos puertos de salida en serie" se refiere a un UART (ya que también describe USB como 2 puertos). Rocketmagmet indica que muchas / la mayoría de las cadenas de LED usan SPI, pero que necesitarán al menos 3 cables. ¿Puedes especificar qué protocolo necesitas?

En general, Microchip tiene los microcontroladores de menor costo, también esta vez. Y Microchip también tiene muchos microcontroladores en el paquete DIL, mientras que muchos otros lo han abandonado. Puede ser importante para el bricolaje. El PIC18F13K50

  • existe en los paquetes DIL-20 y SMT
  • funciona a 5 V (para interactuar con la tira de LED)
  • es de bajo costo a $ 2.5 (OK, eso es relativo, pero los controladores con capacidad USB son un poco más caros que los tipos más básicos)
  • ha mejorado USART para la interfaz UART
  • tiene una interfaz SPI en caso de que quisieras
  • tiene una fuente de 25 mA y E / S de sumidero, por lo que puede controlar directamente un par de LED indicadores si es necesario

Lectura adicional
Función genérica USB en un dispositivo integrado , Nota de aplicación de microchip AN1166

stevenvh
fuente
Menciona tiras de LED, por lo que supongo que es un protocolo síncrono (básicamente SPI sin el pin de retorno de datos). Ese PIC solo tiene 1 puerto SPI, por lo que no sería adecuado. Aunque podría morder el protocolo.
Rocketmagnet
@Rocket: ¿dónde dice que es SPI? Y no necesitará dos buses SPI: SPI es esclavo múltiple. Y como Scott comentó y también dije al comienzo de mi respuesta, creo que por dos puertos quiere decir dos pines, por eso pensé primero en UART.
stevenvh
Quizás el PIC18F24J50? Pero es una parte de 3.3v, así que no sé si se conectará a la tira de LED.
Rocketmagnet
1
Él no dice que es SPI, pero he usado tiras de LED antes, y siempre han sido sincrónicas. Podría estar equivocado. Podría significar otro tipo de tira de LED que nunca he visto antes. Creo que quiere decir dos pines para reloj y datos.
Rocketmagnet
En realidad, leí mal la pregunta y pensé que dijo dos tiras de LED. En realidad dijo dos pines para una tira de LED. Entonces, er, como estabas con la sugerencia original.
Rocketmagnet
4

Su tira de LED tiene una interfaz serial simple. Si solo está tratando de controlarlo con una computadora, puede usar un chip FTDI para mover los pines: http://www.ftdichip.com/Products/ICs/FT232R.htm

Entonces la complejidad está en el lado de la PC usando libftdi o D2XX bibliotecas . Pero no es tan malo, una complejidad similar a su ejemplo Arduino.

Si no tiene ganas de hacer hardware, puede comprar cables prefabricados con el chip FTDI de distribuidores FTDI como Mouser, o de Sparkfun, etc. Los cables están disponibles en diferentes configuraciones de voltaje, así que ordene con cuidado.

Por supuesto, si desea que el proyecto sea independiente o autónomo de alguna manera, querrá una solución completa de microcontrolador.

markrages
fuente
Debo considerar enviar datos SPI sin procesar a la tira de LED a través de un controlador USB. Microchip crea un USB a SPI que se configura como un dispositivo HID, mientras que los chips FTDI son VCOM o D2XX y todavía no estoy seguro de cuál sería el mejor para ejecutar una tira de luz desde un programa c ++.
Steve Barna
No conozco un puente USB <-> SPI que se muestre como un puerto serie virtual como lo hacen los chips de puente USB <-> UART. En su lugar, tendrá que escribir código de bit-banging, que es fácil para SPI.
markrages
3

Considere usar el PSoC3 .

PSoc3

Están disponibles con USB y casi cualquier periférico que desee. (Están configurados en software) Sin duda podrá tener dos puertos seriales para las tiras de LED. Probablemente podrás tener 20 si quieres.

El entorno de desarrollo también es un placer de usar.

PSoC Creator

Rocketmagnet
fuente
3
Bueno, eso parece un poco exagerado. Pero lo investigaré.
Steve Barna
8
@Rocket: veo en Digikey que un PSOC cuesta más del doble del PIC que mencioné. No dudo que valen su peso en oro (como una forma de hablar), si necesita todos esos periféricos configurables, para soluciones que no encontrará en ningún otro microcontrolador, como 16 UART más o menos. Pero OP parece necesitar solo un puerto USB y un puerto serie (UART, SPI o I2C), entonces es mucho más barato elegir un controlador relativamente bajo que tenga exactamente eso.
stevenvh
@stevenvh: estoy de acuerdo, los PSoC pueden ser muy caros. Solo valen la pena para la producción cuando puedes aprovechar sus muchas funciones. Sin embargo, para la creación de prototipos, que son totalmente la pena. ¡Nunca tendrá que buscar ese PIC especial que tenga la combinación correcta de periféricos, y puede implementar cambios de hardware con solo hacer clic en un botón!
Rocketmagnet
@Rocket: "implementa cambios de hardware con solo hacer clic en un botón". Sí, eso es lo que los chicos de Cypress me decían. No lo entiendo (lo discutí extensamente con mis colegas, y ellos tampoco): si necesito, por ejemplo, un temporizador en mi aplicación, es probable que lo necesite todo el tiempo, no lo tire por un tiempo porque quiero hacer algo diferente con el hardware. Yo hago apreciar las herramientas de configuración, como en la captura de pantalla, y yo he rogado Motorola (antes de convertirse en Freescale) a veces rhousand añadir una pequeña FPGA para sus controladores HC05, pero que no era ...
stevenvh
@Rocket - (continuando) ... para la reconfiguración en la aplicación, era tener un controlador más flexible durante el desarrollo . Éramos un gran cliente de Motorola en ese momento, y nos consultaron para obtener ideas sobre cómo limpiar el desastre del HC05; Hubo cientos de tipos diferentes, algunos más exitosos que otros. Así que sugerí 1) el FPGA, y / o 2) una matriz de conmutadores de punto de cruce para permitirle conectar periféricos seleccionados a E / S (limitada); el hardware estaba en el dado de todos modos. Tampoco sucedió, y Motorola ya no hace controladores ...
stevenvh
0

No puede ser más simple que esto: ATmega8U2 .

Para colmo, incluso puede usar eso con el cargador de arranque Arduino ...

Hoja de datos: http://www.atmel.com/Images/doc7799.pdf

(lo siento por ser un poco conciso, estoy escribiendo desde el teléfono)

ppeterka
fuente
2
Cuando esté de vuelta detrás de su PC (¿no debería estar "delante de"?) Puede explicar: ¿cómo es esta la solución más simple? Tiene que ser una buena historia :-), ya que el ATmega8U2 es un 50% más caro que el PIC.
stevenvh
1
Estoy a favor de la línea AVR (especialmente ATmega) porque uno puede usar el entorno Arduino para la creación rápida de prototipos (¡el póster está familiarizado con eso!), Y permite ciclos rápidos de corrección de pruebas. Luego optimizo el código manualmente, o incluso uso un AVR uC más pequeño, como Tiny2313 (BTW, hay libs de USB suave para AVR). Quería que me gustaran los PIC, pero cuando los miré (justo antes de que Arduino despegara), elegí los AVR: encontré que sus documentos eran mejores y la comunidad más fuerte, a pesar de que aquí en Hungría, los PIC son históricamente más compatibles. Elegiría un ciclo de desarrollo más corto para reducir el costo en producción de bajo volumen.
ppeterka
1
Exactamente por qué el voto negativo? ¿Le importaria explicar?
ppeterka