¿Cómo funciona la serie TTL?

14

He estado tratando de encontrar una buena descripción del "estándar" serial TTL sin mucha suerte. Entiendo que las líneas de transmisión en serie (TX) y de recepción (RX) están inactivas en alto (en VCC) y que caen a tierra cuando se transmite un bit. Como tales, están invertidos de la norma, donde un "1" es alto y "0" es bajo.

Lo que no entiendo es quién es responsable de mantener la línea alta y cómo se transmite un cero. ¿El remitente conduce la línea a alto y bajo? ¿O el receptor mantiene la línea alta con el remitente tirando de la línea baja (colector abierto)?

    
pregunta blalor

2 respuestas

16

Con la serie TTL, hay dos líneas de datos unidireccionales. Cada uno es impulsado por el remitente, tanto alto como bajo. Un bit 0 está representado por 0V y 1 bit por VCC.

El pin del receptor debe estar configurado en una entrada.

Entonces, para que un microcontrolador envíe un byte (8-N-1 sin control de flujo) podría hacer algo como esto:

#define BAUDRATE 9600
#define DELAY (SYS_CLK/BAUDRATE)

#define UART_BITBANG_OFF     UART_BITBANG_PORT |= _BV(UART_BITBANG_PIN)
#define UART_BITBANG_ON      UART_BITBANG_PORT &= ~ _BV(UART_BITBANG_PIN)

#define UART_BITBANG_BIT(bit) {if (bit) UART_BITBANG_ON; else UART_BITBANG_OFF; _delay_us(DELAY);}

void uart_bitbang_init(void)
{
    UART_BITBANG_DDR &= ~ _BV(UART_BITBANG_PIN);        // TX output
}

void uart_bitbang_putc(uint8_t c)
{
    UART_BITBANG_BIT(1)
    UART_BITBANG_BIT((c & 0x1) == 0);
    UART_BITBANG_BIT((c & 0x2) == 0);
    UART_BITBANG_BIT((c & 0x4) == 0);
    UART_BITBANG_BIT((c & 0x8) == 0);
    UART_BITBANG_BIT((c & 0x10) == 0);
    UART_BITBANG_BIT((c & 0x20) == 0);
    UART_BITBANG_BIT((c & 0x40) == 0);
    UART_BITBANG_BIT((c & 0x80) == 0);
    UART_BITBANG_BIT(0);
}

(Este código se lee un poco hacia atrás, ya que originalmente estaba destinado a la serie TTL invertida)

Por supuesto, la mayoría de las MCU tienen UART de hardware que hacen todo esto por usted.

Esto es lo que verías en un ámbito:

enlace

Aquíhayungranvideodeladyadaqueexplicalaserie: enlace

    
respondido por el Toby Jaffey
8

No lo dices con tantas palabras, pero el "ralentí alto" sugiere que te refieres a un UART. UARTs un punto a punto conectado a transceptores de línea, como el ubicuo pero con fecha MAX232 (hay soluciones mucho mejores en la actualidad). La línea entre el microcontrolador y el transceptor también será corta; si hay una distancia que se puede salvar, será entre transceptores.
La salida del controlador es un push-pull.

El P-MOSFET proporcionará el nivel alto, el N-MOSFET el nivel bajo. Uno de ellos debe estar activo o el nivel de línea flotará y quedará indefinido (o definido por una carga en el transceptor). Ambos son capaces de generar / hundir un poco de corriente y tirarán de la línea hacia los rieles, por lo que la forma de la señal será casi ideal. Lo que sería diferente si fuera realmente TTL, como en su pregunta (el microcontrolador es HCMOS). Las salidas TTL son altamente asimétricas: solo pueden suministrar poca corriente, típicamente 0,4 mA. La corriente de hundimiento está bien, a 8 mA. La corriente de fuente baja puede ser un problema si la línea tiene una alta capacidad y es de alta velocidad. La baja corriente de excitación significa que la capacitancia solo se cargará de manera relativamente lenta, y los flancos ascendentes serán lentos, lo que a alta velocidad puede causar una distorsión de señal grave. TTL nunca se utiliza para esto.

Su pregunta también podría referirse a una línea multipunto , donde varios dispositivos pueden hablar. En ese caso, no puede utilizar la salida push-pull: si un dispositivo impulsara la línea a un nivel alto y otro a la baja, tendremos un cortocircuito. Las líneas multipunto casi siempre usan resistencias de pull-up para mantener la línea inactiva en alto. Entonces, solo un nivel bajo requiere conducir la línea, y en lugar de la salida push-pull tendremos un drenaje abierto, solo con el N-MOSFET. La línea ahora también se conduce de forma asimétrica: la resistencia de pull-up solo puede suministrar poca corriente, mientras que el FET de pull-down puede conducir la línea rápidamente a tierra. Las líneas multipunto de alta velocidad ponen un límite a las resistencias de pull-up. Un ejemplo es I2C.

    
respondido por el stevenvh

Lea otras preguntas en las etiquetas