convertidores USB-232 - problema de latencia rts / cts

0

Estoy integrando el controlador USB FT230X en un nuevo producto. Interactúa directamente con el Cortex M4 MCU de 32 bits, el STM32F303x

El búfer de recepción en el STM32 tiene solo 2 bytes de profundidad, lo que asumí que no sería un problema, ya que podría usar el protocolo de enlace de señal RTS para detener el flujo de recepción. Sin embargo, cuando envío la señal RTS Hi automáticamente al final del primer byte recibido, la transmisión de datos desde el FT230X continúa por otros 2 bytes, lo que provoca un desbordamiento. ¿Es este el comportamiento esperado? ¿Es este un problema típico con los chips de interfaz USB / 232?

    
pregunta Dirk Bruere

3 respuestas

1

En mi experiencia, las señales RTS / CTS en los chips modernos del convertidor en serie están horriblemente subespecificadas. No hay especificaciones sobre ellos en el estándar (de hecho, el estándar describe RTS / CTS como control de flujo unidireccional a solo módem, el método que nadie implementa hoy en día). Por lo tanto, los fabricantes simplemente se aseguran de que el control de flujo funcione con las PC normales, que utilizan puertos serie compatibles con 16550A con FIFO de 16 bytes.

Puede probar diferentes chips USB < - > Serial (como PL2103 o CP2103), pero el éxito no está garantizado. Entonces:

  • Usa DMA si tu chip lo admite.
  • Baja velocidad de transmisión
  • Pruebe el antiguo UART 16550A UART o use un nuevo UART I2C como MAX3107
  • Use un chip FTDI diferente; por ejemplo, FT245 tiene una interfaz paralela; solo le dará el siguiente byte cuando alterne RD # pin
respondido por el theamk
0

Suponiendo que el FT230X está configurado correctamente, necesita usar la línea CTS para activar y desactivar la transmisión. Este apretón de manos debe ser inicializado desde el lado de Cortex. Cuando el búfer está lleno, haga que Cortex tire de la línea CTS hacia arriba, lo que detendría la transmisión del FT230X. También haga que Cortex monitoree la línea RTS para ver si hay nuevos datos disponibles.

En última instancia, aunque Cortex debería ser lo suficientemente rápido como para mover los datos del búfer de hardware a un búfer de software mediante una interrupción. Esto evitará que tenga que regular los datos.

    
respondido por el vini_i
0

Usando una interfaz ch340 y Dos, el cambio DTR de Hi a Lo más rápido. El alcance tomó 3 mSec + 3 mSec. Como señal de activación de la línea de control, era una manera de disminuir la velocidad.

    
respondido por el Maxere

Lea otras preguntas en las etiquetas