¿Por qué el convertidor de puerto USB a puerto serie no puede programar un microcontrolador avr?

2

Con un puerto serie o un puerto paralelo en la programación de PC, el microcontrolador avr es muy fácil y barato. El problema es que ninguna computadora moderna viene con puerto serie o paralelo. Entonces, usb to serial converter debería ser la solución, pero desafortunadamente no.

Debe haber una diferencia entre el puerto serie real y el puerto serie convertido. ¿Qué es?

Otra pregunta relacionada sería, ¿Cómo se comunica USBasp casi directamente con la PC? Pensé que la mayoría o todos los microcontroladores de los microcontroladores de la serie ATmega no tienen soporte USB.

He comprobado este enlace- AVR programador con convertidor de serie a USB

Sé que hay varias preguntas como esta, pero como soy nuevo en la programación integrada, necesito una explicación fácil para entender el concepto. Gracias.

Editar: Quiero usar un circuito como el de abajo con la interfaz serial convertida (posiblemente, RS232). Este circuito está diseñado para el puerto serial real. Con un puerto serial convertido, puedo reducir la complejidad del circuito.

Eldetallesepuedeencontraren Simple Serial Programmer para AVR

    
pregunta Amit Hasan

3 respuestas

2

El programador en serie que está utilizando está usando el puerto en serie para conectarse a la computadora, ¡pero no el protocolo RS232 estándar! Eche un vistazo más de cerca al esquema:

  • el pin 4 (DTR) está asignado a MOSI. En un verdadero puerto serie de la placa base, este pin puede alternar entre alto y bajo, emulando así un modo de bitbang
  • el pin 6 (DSR) y 7 (RTS) están asignados a SCK. Como DTR, RTS puede configurarse como alto o bajo, por lo tanto, junto con DTR, que permite la implementación de software de protocolos seriales síncronos personalizados
  • el pin 8 (CTS) es un pin de entrada asignado a MOSI. Su valor se lee en el conmutador SCK.

DTR y RTS son los únicos pines del puerto serie que pueden ser modificados en bit. Pero existe la necesidad de una señal de reinicio. El diseñador de ese adaptador usa un truco. Envía un carácter 0x00 sin bits de parada sobre RS232 TX estándar, creando así un pulso de restablecimiento corto (que para algunas MCU deben invertirse).

Los datos reales en una comunicación serie RS232 estándar en realidad se envían solo a través de líneas Rx / Tx. Todas las demás son líneas de accesorios utilizadas por los dispositivos para señalar diferentes estados de operación o para indicar la disponibilidad de datos o la terminación de la transferencia.

Este es el problema con los adaptadores serie USB. La mayoría de ellos solo pueden usar líneas Rx / Tx y, por supuesto, solo el protocolo serie RS232 (asíncrono), que de ninguna manera es compatible con el protocolo de programación AVR (SPI, síncrono). Por lo tanto, la única forma de comunicarse a través del puerto serie por SPI es usar líneas alternativas y emular el protocolo en el software.

Puede ver en este foro que en algunos casos funciona con adaptadores USB-serie, pero en la mayoría de las situaciones no es así.

  

Pensé que la mayoría o todos los microcontroladores de los microcontroladores de la serie ATmega no tienen soporte USB.

¿Qué dice sobre: ATmega 8U2, 16U2, 16U4, 32U2, AT90USB1286, AT90USB1287, AT90USB162, AT90USB646, AT90USB647, AT90USB82. Lista completa de aquí .

¡Pero USBasp no está usando una de esas MCU! Mirando su esquema, podemos ver que usa una resistencia de pull-up en la línea D, lo que significa que le indica al PC que es Un dispositivo de baja velocidad (1.5 Mb / s). Y el software emula el bus USB a través de un puerto de E / S de uso general (se puede ver en el código fuente del firmware AVR - archivo usbconfig.h ):

#define USB_CFG_IOPORTNAME      B
/* This is the port where the USB bus is connected. When you configure it to
 * "B", the registers PORTB, PINB and DDRB will be used.
 */
#define USB_CFG_DMINUS_BIT      0
/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
 * This may be any bit in the port.
 */
#define USB_CFG_DPLUS_BIT       1
/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
 * This may be any bit in the port. Please note that D+ must also be connected
 * to interrupt pin INT0!
 */
#define USB_CFG_CLOCK_KHZ 12000
/* Clock rate of the AVR in MHz. Legal values are 12000, 16000 or 16500.
 * The 16.5 MHz version of the code requires no crystal, it tolerates +/- 1%
 * deviation from the nominal frequency. All other rates require a precision
 * of 2000 ppm and thus a crystal!
 * Default if not specified: 12 MHz
 */
    
respondido por el Cornelius
2

Unos cuantos pensamientos sobre la cabeza basados en la experiencia amarga:

  • Utilice solo convertidores serie USB FTDI, son de lejos el más confiable y amp; configurable & mejor apoyado Otros pueden trabajar bien, pero es una lotería y la vida es demasiado corta para el hardware errante.

  • Verifique que la salida "serial" del chip sea realmente lo que usted Realmente quiero; Los convertidores pueden emitir RS232 completo, nivel TTL (0-5v) datos en serie, o 0-3v3, y, a veces, RS485 / RS422 dependiendo del convertidor.

  • Como se mencionó, hay otras configuraciones como los bits de inicio / parada, paridad, modos de búfer, bit bang, etc., etc. que pueden causar problemas.

El almacenamiento en búfer en el chip o controlador USB serie puede causar problemas cuando el software de programación intenta ejecutar demoras específicas en la programación. Los controladores FTDI le permiten cambiar todas estas cosas.

    
respondido por el John U
0

Para poder programar tales dispositivos, el puerto SERIAL podría tener que estar configurado para funcionar en modo bitbang. La mayoría de los dispositivos USB < - > Los convertidores en serie no proporcionan dicha capacidad.

Según el tipo de USB < - > El convertidor SERIAL puede "configurarlo" para facilitar dicho modo.

www.ftdichip.com/Documents/AppNotes/AN232B-01_BitBang.pdf

Los chips FT232BM y FT245BM se pueden configurar en un modo especial donde se reemplaza la función normal de los chips. esto el modo cambia las 8 líneas de datos en el FT245BM o los datos y las líneas de control RS232 del FT232BM a un 8 bit bidireccional autobús. El propósito de este modo estaba destinado a ser utilizado para programar dispositivos FPGA. También se puede utilizar para hablar con EEPPROMs en serie. o cargar un pestillo de datos.

    
respondido por el JonRB

Lea otras preguntas en las etiquetas