¿Cómo funciona un búfer de osciloscopio?

Estoy haciendo un osciloscopio simple de 1 MHz con un sistema integrado basado en ARM y Android. Tengo un ADC con una velocidad de 12MSa/s que toma las muestras. Lo necesito para enviar las muestras a un microcontrolador PIC, para enviarlas por USB a mi sistema Android.

No puedo enviar 12 MSa/s de datos a través de USB, así que investigué y creo que tengo que usar un búfer de RAM. He investigado un poco en Internet, pero no puedo entender cómo funcionan.

Por lo que puedo entender: supongamos que tengo 2 circuitos integrados de RAM . Empiezo a llenar la RAM 1 con muestras de mi ADC, luego, cuando está llena, empiezo a llenar la RAM 2 . Mi microcontrolador comenzará a leer datos de la RAM 1 . La velocidad de transferencia USB no es lo suficientemente rápida para leer todo el contenido de la RAM antes de que se llene la RAM 2 , por lo que el ADC tendrá que esperar hasta que la RAM 1 esté vacía, por lo que perderé muestras de mi ADC.

hay alguna forma de prevenir esto? Mi placa de desarrollo es una PandaBoard. Estoy ejecutando Android 4 y funciona perfectamente, pero tengo este problema con respecto al almacenamiento en búfer de hardware.

Lo siento, mi idioma nativo no es el inglés. Hice algunas correcciones y formateé el texto :) Gracias por el consejo :)
@pipe: no realice ediciones triviales en preguntas antiguas ya resueltas; simplemente las coloca en la parte superior de la página principal sin ningún propósito real, lo que distrae la atención de las preguntas que merecen atención actual.
@ChrisStratton Si tiene un problema con el hecho de que las preguntas editadas aparecen en la parte superior, llévelo a los diseñadores del sitio, no es nada que un usuario pueda evitar. Si tiene algún problema conmigo para editar preguntas antiguas, consulte las respuestas a esta metapregunta. Siempre que las preguntas antiguas se puedan buscar y aparezcan en la barra lateral, merecen ser editadas de la misma manera que cualquier otra pregunta.
La capacidad de realizar un análisis de costo-beneficio es una habilidad de ingeniería clave.

Respuestas (1)

No se puede muestrear continuamente.
Sin embargo, esto no es un gran problema generalmente con los osciloscopios, ya que la mayoría no hace esto (al menos a velocidades más altas). Incluso un osciloscopio analógico no muestra información continua ya que tiene el período de barrido del haz hacia atrás.

Un osciloscopio de almacenamiento digital típico espera un disparador, llena su búfer a alta velocidad y luego envía los datos a una velocidad más baja al microcontrolador (o Android en su caso) para su visualización. Como menciona Photon, esto sucede lo suficientemente rápido (por ejemplo, más de 15 cuadros de datos por segundo) para que parezca continuo para el usuario.

Obviamente, cuanto mayor sea el búfer de RAM, más muestras (tiempo) se pueden capturar. Esta es la razón por la que verá anuncios de DSO de grandes búferes de captura. A alta velocidad, esto puede marcar una gran diferencia: a 2 gigamuestras por segundo y un búfer de captura de 10 KB, solo obtendrá 5 us de información. Algunos con búfer más grandes solo pueden usar parte de él a la velocidad más alta; por ejemplo, mi DSO tiene 10 MB de búfer hasta 1 Gsps, pero solo puede usar 10 KB a 2 Gsps.

En su caso, podría cambiar a la captura continua a velocidades que el USB es capaz de (por ejemplo, <1 Msps). Tal vez también podría considerar usar compresión.
O eso o mirar el uso de USB de alta / súper velocidad.

Genial, no lo sabía :) Entonces, ¿cuál es la ventaja de usar un búfer? ¿No es lo mismo tomar las muestras y enviarlas directamente por USB? ¿Cómo funcionan los osciloscopios USB, por ejemplo?
@Andres: ¿No puede esperar enviar velocidades USB de 400 Mb/s con un PIC sincronizado a, qué, 16 MHz? :-)
@Andres, sin algún tipo de búfer, solo podía muestrear tan rápido como podía enviar los datos a la pantalla. Cualquier dato "extra" que hayas capturado, no tendrías dónde ponerlo y tendrías que descartarlo. Con un búfer, puede llenar el búfer muy rápido y luego transferirlo a la pantalla a un ritmo más lento... que aún puede ser tan rápido que el usuario no nota ningún retraso.
Exactamente, tengo un búfer de recepción en mi sistema Android para la recepción USB, pero pensé que con un búfer de RAM en mi ADC podría tener una frecuencia de muestreo alta con una velocidad de transferencia no tan alta para mostrar, pero ahora entiendo esto sobre el tamaño del búfer. , el truco es tener un búfer grande para poder muestrear continuamente durante algún tiempo, digamos que el ancho de mi pantalla depende del tiempo/div :)
Sí, desea al menos el ancho de su pantalla para el almacenamiento en búfer, más si desea desplazarse hacia la izquierda o hacia la derecha a través de la forma de onda.
Lo entiendo :) Entonces, casi no hay una manera fácil de no perder algunas muestras, simplemente necesito un búfer tan grande como pueda.