r32 - 16 Jun 2006 - 09:25:19 - PabloHoffmanYou are here: pablohoffman.com >  Oscusb Web  >  OscusbDocumentacion > DocCap07Protocolo

Capítulo 7. Protocolo de comunicación

Introducción

Este capitulo contiene la especificación del protocolo de comunicación junto con los requisitos tenidos en cuenta para su diseño.

Requisitos

Al diseñar el protocolo de comunicación, se tuvieron en cuenta los siguientes requisitos:

  1. comunicación lineal (comando, respuesta) - para que pueda ser fácilmente adaptado a una conexión serie
  2. comandos y respuestas ASCII - el formato de los comandos y respuestas debe ser tal que pueda ser controlado y depurado desde una terminal de texto ASCII (como Hyperterminal o similar)
  3. posibilidad de transferencia binaria - para acelerar las transferencias entre la PC y el osciloscopio
  4. comandos y respuestas simples - puesto que la capacidad de procesamiento del PIC es reducida, el protocolo debe ser fácilmente parseable.

Para cumplir con el cuarto requisito se decidió que los comandos constaran de un largo fijo de 4 caracteres.

Introducción

El protocolo es bien simple y consta de un único tipo de interacción: *comando y respuesta*. Cada comando puede tener uno o ningún parámetro. Los comandos son enviados desde el PC al osciloscopio y son seguidos obligatoriamente por una respuesta (del osciloscopio al PC). No se puede enviar un nuevo comando hasta no haber recibido la respuesta del anterior, salvo por el comando STOP que cancela el comando en curso.

A continuación se presenta un diagrama de dicha interacción:

Diagrama de la interacción

               comando
| PC |  --------------------->  | Osciloscopio |

              respuesta
| PC |  <---------------------  | Osciloscopio |

Comandos

Los comandos tienen la finalidad de enviar una solicitud al osciloscopio para que realice una acción y devuelva una respuesta, ya sea para confirmar el comando recibido, o para devolver el dato solicitado en el comando.

Formato de comandos

El formato de los comandos es el siguiente:

| COMANDO | espacio | PARAMETRO   |    \n    |
  4 bytes   1 byte    0..n bytes    1 byte

CMD_ID    = identificador del comando en ASCII (4 caracteres)
PARAMETRO = parámetro del comando (un número en formato ASCII). 
            si el comando no tiene parámetros este valor es ignorado.

espacio     = un espacio (caracter ASCII 32)
\n          = fin de linea (caracter ASCII 10)

Comandos de captura

Los siguientes comandos sirven para solicitar una captura de datos al osciloscopio. Por más información sobre los distintos tipos de captura consulte el Capítulo 5 - Firmware.

AQHI

Ejecuta una captura de alta velocidad con los parámetros pre-fijados (a través de los comandos STxx) y devuelve los valores.

Si el formato binario esta habilitado (BINA 1) los datos se devuelven como bytes adyacentes en formato binario. El valor de cada byte puede ser de 0-255 que equivale justamente a los 8 bits de resolución del osciloscopio.

Si el formato binario está deshabilitado (BINA 0) los datos se devuelven como números en formato ASCII separados por un espacio. Por ejemplo: 34 123 243. Todos esos números están entre 0 y 255.

Los parámetros de la captura pueden ser ajustados a través de los comandos HDIV, VTRI, VDIV, DUAL y CHOP.

  • Parámetro: cantidad de muestras a devolver.
    • Valores posibles: 1 - 65535
    • Valor por defecto: 65535

AQME

Similar a AQHI, pero la captura se ejecuta a media velocidad (las escrituras a memoria son controladas por el PIC).

  • Parámetro: cantidad de muestras a devolver.
    • Valores posibles: 1 - 65535
    • Valor por defecto: 65535

AQLO

Similar a AQHI y AQME, pero la captura se realiza en tiempo real, transfiriendo las muestras a medida que se van capturando. Este comando soporta el valor especial 0 como parámetro lo cual significa seguir capturando sin detenerse, o hasta recibir un comando STOP, en lugar de transferir una cantidad pre-definida de valores.

  • Parámetro: cantidad de muestras a devolver o selección del modo de captura
    • Valores posibles:
      • 1 - 65535 - cantidad muestras a devolver
      • 0 = captura continua (sigue capturando hasta recibir un comando STOP)
    • Valor por defecto: 0

Comandos de configuración

Los comandos de configuración permiten configurar diversos aspectos del funcionamiento de la captura de datos y deben ser enviados antes del comando de captura.

CHAN

Selecciona el canal a usar para capturar los datos. Solo tiene validez cuando el osciloscopio funciona en modo simple canal (DUAL=0).

  • Valores posibles del parámetro:
    • 1 - canal 1 (valor por defecto)
    • 2 - canal 2

ADDR

Especifica la dirección a partir de la cual se leerá el contenido de la memoria en los comandos de captura, y también en el comando DUMP. Este comando está pensado para fines depurativos.

  • Valores posibles del parámetro: 1 - 65535
    • Valores por defecto: 0

HDIV

Especifica la división horizontal a usar. Sirve para enlentecer el comando de captura y así obtener una serie de muestras más espaciadas en el tiempo.

  • Valores posibles del parámetro: 0 - 65535
    • Valor por defecto: 0

VDV1

Selecciona la escala de voltaje a usar en el canal 1.

  • Valores posibles del parámetro:
    • 0 - ±5V (valor por defecto)
    • 1 - ±10V
    • 2 - ±20V
    • 3 - ±40V

VDV2

Selecciona la escala de voltaje a usar en el canal 2.

  • Valores posibles del parámetro:
    • 0 - ±5V (valor por defecto)
    • 1 - ±10V
    • 2 - ±20V
    • 3 - ±40V

BINA

Configura el modo binario de transferencia de los comandos de captura (AQHI/AQME/AQLO). Los formatos disponibles son: binario y ASCII. El formato binario es más eficiente en cuanto a velocidad. El formato ASCII es legible en una terminal de texto como Hyperterminal.

  • Valores posibles del parámetro:
    • 0 - deshabilitar modo binario
    • 1 - habilitar modo binario (valor por defecto)

DUAL

Configura el modo dual de captura.

  • Valores posibles del parámetro:
    • 0 - habilita captura de un único canal (valor por defecto)
    • 1 - habilita captura de ambos canales

CHOP

Configura la forma en que serán recibidas las muestras del osciloscopio. Si está habilitado, se recibirá una muestra por cada canal alternadamente. Por el contrario, si está deshabilitado, se recibirán primero todas las muestras del canal 1 y luego todas las muestras del canal 2.

Esta opción tiene validez únicamente cuando está habilitado el modo Dual.

  • Valores posibles del parámetro:
    • 0 - deshabilita el modo chop (valor por defecto)
    • 1 - habilita el modo chop

Comandos de control

Los siguientes comandos sirven para controlar el estado del osciloscopio.

STOP

Detiene el comando de captura en curso. Pensado para utilizar principalmente con el modo continuo del comando AQLO.

  • Parámetro: no tiene

RSET

Resetea el osciloscopio, volviendo todas los parámetros de configuración a su valor por defecto.

  • Parámetro: no tiene

Comandos de diagnóstico

Los siguientes comandos sirven para monitorear el estado del osciloscopio y obtener información sobre el mismo.

PING

Devuelve OK si el osciloscopio está activo.

  • Parámetro: no tiene

VERS

Devuelve la versión de firmware del osciloscopio, en formato ASCII 8-bit.

  • Parámetro: no tiene

Comandos de depuración

Los siguientes comandos sirven para depurar el osciloscopio y están pensados para ser usados únicamente para testear el correcto funcionamiento del mismo. No tienen ninguna utilidad para la aplicación que interactuará con el usuario final.

WRLO

Escribe una señal cuadrada en la memoria a baja velocidad (controlada por el PIC). El parámetro pasado es la cantidad de muestras a escribir. Esta función existe únicamente para fines depurativos.

  • Valores posibles del parámetro: 0 - 65535
    • Valor por defecto: 65535

WRHI

Escribe un mismo valor en todas las posiciones de la memoria a alta velocidad (controlado por el contador). El parámetro pasado es el valor a escribir. Esta función existe únicamente para findes depurativos.

  • Valores posibles del parámetro: 0 - 255

DUMP

Vuelca el contenido de la memoria, para el canal seleccionado con el comando CHAN y a partir de la dirección especificada con el comando ADDR. El parámetro pasado es la cantidad de muestras a volcar.

  • Valores posibles del parámetro: 1 - 65535

Respuestas

La respuesta es la reacción del osciloscopio a un comando. Todos los comandos devuelven una respuesta. Para enviar un nuevo comando se debe esperar a recibir la respuesta del último comando enviado, salvo por el comando STOP que cancela el comando actual.

Existen dos tipos de respuestas:

  • respuestas con datos - son aquellas que devuelven valores
  • respuestas sin datos - son aquellas que no devuelven valores

Formato de respuestas

El formato de las respuestas es el siguiente:

Respuestas con datos:

|  CODIGO  | espacio |   NOMBRE    | espacio |   LARGO   |   \n   |   DATOS    |   \n   |
| 4 bytes  |  1 byte |   n bytes   |  1 byte |  n bytes  | 1 byte |  n bytes   | 1 byte |

Respuestas sin datos:

|  CODIGO  | espacio |    NOMBRE   |   \n   |
| 4 bytes  |  1 byte |   n bytes   | 1 byte |

CODIGO      = código de respuesta (número en formato ASCII)
NOMBRE      = un nombre descriptivo de la respuesta (en formato ASCII)
LARGO       = cantidad de bytes de la respuesta incluyendo el último \n (en formato ASCII)
              solo para comandos que devuelven datos.
DATOS       = datos de la respuesta (en formato ASCII o binario según corresponda)
              solo para comandos que devuelven datos.

espacio     = un espacio (caracter ASCII 32)
\n          = fin de linea (caracter ASCII 10)

Códigos de respuesta

Los códigos de respuestas disponibles (en la versión de firmware 1.00) son los siguientes:

Código Nombre Significado
0 OK comando aceptado
1 UNKNOWN comando desconocido
2 OUT-OF-RANGE valor fuera de rango
3 BUSY el osciloscopio está ocupado ejecutando otro comando
Tabla 7.1 Códigos de respuesta

Ejemplos de sesión (comandos y respuestas)

PING
0 OK
VERS
0 OK 5
1.00
HDIV 128
0 OK
AQHI 5
0 OK 6
%!_P^
BINA 0
0 OK 
AQHI 5
0 OK 18
24 123 203 129 56
CAPTURAR 343
1 UNKNOWN
Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r32 < r31 < r30 < r29 < r28 | More topic actions
Oscusb.DocCap07Protocolo moved from Oscusb.DocCap08Protocolo on 27 May 2006 - 21:15 by PabloHoffman - put it back

Osciloscopio USB


Esta Web
Cronograma
  • DONE planificación
  • DONE análisis
  • DONE presentación oral
  • DONE diseño
  • DONE implementación
  • DONE documentación
  • DONE imprevistos
  • DONE defensa
  • MOVED TO... correcciones
 
Powered by pablohoffman.com
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding pablohoffman.com? Send feedback