generando un protocal serial personalizado de 1 cable semidúplex

1

Quiero usar un microcontrolador de NXP para generar una señal serial SWD (Serial Wire Debug). Una señal SWD es un reloj y un encabezado de host a target, un período de espera de un solo ciclo, seguido de un host a target o un objetivo a host respuesta. Parece casi CASI exactamente como una señal I2C, pero necesito poder transferir más de 14 o 28 bits (se me olvida exactamente) después de que se transfiere el encabezado. Los documentos para el NXP uC que miré tenían un límite estricto en el número de bits que podían transferirse después de los datos del encabezado. Un simple RS-232 podría hacerlo conectando el cable de datos tanto a Rx como a Tx, pero también necesito una línea de reloj.

    
pregunta Chris H

1 respuesta

1

Parece que lo que quieres es lo que se conoce como Bit Banging . Aquí es donde usas una o más líneas de IO de propósito general para emular algo como I²C, SPI, RS232 o lo que quieras, simplemente usando software.

Si bien esto le brinda la máxima flexibilidad, tiende a atar el microcontrolador mientras se realizan las transferencias.

Si la velocidad no es un gran problema, podría vincular la transferencia de datos a una interrupción del temporizador: transferir 1 bit cada 10 µS o algo así.

Entonces, transferir un poco con un reloj bajo activo sería algo así como:

  1. Conduzca la línea de señal al nivel del bit a transmitir (alto o bajo - 1 o 0)
  2. Línea de reloj de la unidad baja
  3. retraso
  4. Línea de reloj de conducción alta
  5. retraso
  6. Avanza al siguiente bit hasta que termine.
respondido por el Majenko

Lea otras preguntas en las etiquetas