STM32F103C8T6: los primeros pasos. Continúa haciendo el osciloscopio

Continuación del artículo . Esta vez intentaremos conectar el USB sin una caída en la frecuencia de medición y recolectar una parte analógica de un solo canal.


Luchando con USB


Nuestro MK tiene un hardware USB. Tenía muchas ganas de usarlo. Incluso lo quería antes de la compra. Pero debido a dificultades, fue pospuesto "para más tarde". Y las dificultades son:
  • Los desarrolladores de USB aparentemente tenían demasiado tiempo e inteligencia. El problema es que sentían que todos los demás no deberían tener menos. Si intenta lidiar con USB de acuerdo con la documentación, entonces esta lección claramente no es para un día.
  • Al conectar bibliotecas, constantemente surgían dificultades. Cómo conectarlos en proyectos de Coocox que no he descubierto.

Como resultado, en un foro encontré un ejemplo convertido a Coocox, que funcionó.

Los problemas con nuestro USB no terminaron allí. Un adaptador USB <-> USART separado tiene la ventaja de que está separado, lo que significa que su funcionamiento no depende de nuestro MK, a saber:
  • Frecuencias (para una frecuencia de conversión más alta, overclockeé MK);
  • Reinicios que suceden durante un parpadeo.

Cuando hay un adaptador, podemos hacer cualquier cosa con MK: el adaptador funcionará en este caso y el puerto COM del sistema no irá a ninguna parte.
Con el overclocking, se tomó esta decisión: en el estado normal, el MK funciona a la frecuencia estándar. Cuando necesitamos medir, overclockeamos el MK (sí, a diferencia del AVR, él puede hacerlo sobre la marcha), recolectamos datos, bajamos la frecuencia y transferimos lentamente los datos a la computadora.
Para no cambiar nada después de cada reinicio / flasheo, miramos la placa de circuito:

Con un puente, aquí uno de los cables se jala a +3,3 V, y la computadora ve que el dispositivo está conectado. Se descubrió experimentalmente que después de flashear el MK, para que el puerto COM vuelva a funcionar, debe retirar y enchufar el conector USB nuevamente o quitar y volver a colocar el puente. La segunda opción es mucho más fácil de automatizar. El segundo pin del conector del puente a través de una resistencia conectada al pie MK y después de un reinicio después de un tiempo lo alimento a un nivel alto. Como resultado, la computadora cree que el dispositivo se apagó y se volvió a encender. Hay un punto más: si desconecta el dispositivo con el puerto abierto y luego lo vuelve a encender, el puerto COM aparecerá en el administrador de dispositivos, pero no podrá abrirlo (uso Windows 7).

Ahora sobre overclocking. Para que el USB funcione, MK puede operar a frecuencias como la máxima:

Y para obtener la velocidad máxima de ADC, la overclockeo para lo siguiente:

Para cambiar el multiplicador PLL, debe estar apagado. Y cuando, al menos por un momento, el PLL se desconecta, el USB sincronizado no le gusta y la aplicación en la computadora en la mayoría de los casos se cuelga con un puerto abierto. Después de buscar en Google el problema sin éxito, se encontró una forma de combinar el USB incorporado y el overclocking:
  1. La aplicación en la PC envía el comando MK para realizar una serie de transformaciones e inmediatamente cierra el puerto;
  2. MK espera un momento (para que la aplicación tenga tiempo de cerrar el puerto) y deshabilita la extracción de la línea USBDP hasta +3.3 V;
  3. MK desactiva PLL, cambia el multiplicador de 9 a 16 y vuelve a activar PLL;
  4. MK lleva a cabo una serie de transformaciones memorizando el resultado;
  5. MK apaga el PLL, vuelve a cambiar el factor de 16 a 9 y vuelve a encender el PLL;
  6. MK incluye tirar de la línea USBDP a +3.3 V;
  7. Después de un tiempo, el puerto COM virtual aparece nuevamente en la PC;
  8. La aplicación en la PC vuelve a abrir el puerto y envía un comando al MK para recopilar el resultado;
  9. MK transmite lentamente el resultado, la aplicación crea un horario.

No es conveniente, pero para abandonar el adaptador de hardware USB <-> USART y no perder 7/16 = 44% de la velocidad, vale la pena.

Tomamos otro cargo


Todo el tiempo anterior usé esta placa:

es conveniente cuando es la principal en el dispositivo, pero no quiero conectarla con cables a la placa de pruebas. Para hacer esto, hace mucho tiempo se ordenó otra placa

que puede pegarse en la placa o soldar fácilmente en otra placa.
El circuito de esta placa apenas se encontró en el foro .
Algunas impresiones En general, ella complació. Hay pines SWD a la izquierda, cada contacto está firmado, y si los chinos no hubieran soldado un conector angular allí, las firmas incluso serían visibles y más convenientes que mirar el pinout JTAG en el tablero anterior cada vez. Todo fue flasheado sin problemas, apareció USB, pero surgió un pequeño problema: la línea USBDP estaba oculta a +3,3 V con una resistencia. Entonces, el USB resultó no desconectable ... Tuve que soldar esta resistencia y soldar la línea a través de la resistencia a la pata libre de MK.

Parte analógica


Antes de esto, solo trabajaba con señales del rango 0 - 3.3V. Y esto no es una especie de cero flotante allí, sino la tierra que viene con un cable USB. Pero quiero que el osciloscopio pueda observar la forma de la tensión de red (cientos de voltios) y el ECG (fracciones de milivoltios).
La tarea generalmente es simple: tomar el rango de entrada del osciloscopio y asignarlo al rango de entrada del ADC (0 - 3.3V). El circuito se inventó así:

R1, R2, R3 - divisor de entrada. Transfiriendo tramos MK al modo de entrada o salida, podemos cambiar la relación de división.
R11, R12, R13: resistencias de un amplificador no inversor. La ganancia depende de la condición de los pies del controlador.

Hubo dudas sobre si es posible utilizar las salidas digitales de MK para tales fines. La medición mostró que la corriente a través de la salida MK a 3.3 mA conduce la salida a 80 mV, es decir, la resistencia de salida es de aproximadamente 24 ohmios. El potencial de una salida suspendida en el aire a 3-4 mV difiere en tierra / potencia. Para un sistema no muy preciso, el resultado es bastante aceptable.

Para no arruinar las características de frecuencia por las que luché tanto, el operativo es necesario no solo de todos modos, sino rápido. Elegí el AD826. Y luego hubo problemas. A quién le importa, puedes leer la historia aquí y aquí . En resumen: las fichas falsas se venden en Ebay.

El refugio necesita energía bipolar. Para esto, se necesitaba otro chip: LT1054. El diagrama de conexión se toma de la hoja de datos, por lo que no lo describiré en detalle.

Total


Recordando los planes de la primera parte del artículo :
  1. Derrota a USB para abandonar el convertidor USB <-> USART;
  2. Termine la parte analógica para que el rango de voltaje de entrada no sea 0 - 3.3 V, sino más decente;
  3. Hacer modo multicanal;
  4. Implemente el control desde una PC;
  5. Haga un dispositivo terminado en el caso;

Entiendo que he completado 1, 2 y parcialmente el cuarto párrafo.

¿Se necesita tal dispositivo en el hogar? Bueno, si lo compara con el análogo C1-117, entonces en la frecuencia C1-117 es varias veces mayor. Pero aquí puede grabar la señal durante un tiempo suficientemente largo y luego examinarla lentamente. Entonces, por ejemplo, vi una interrupción activada por mi generador en el Arduino:


si se compara con las embarcaciones en un AVR o tarjeta de sonido, esta excede significativamente su frecuencia de conversión.
A costa de los componentes resulta
  • LT1054 - $ 0.8;
  • tablero con controlador - $ 4;
  • operativo - $ 3;
  • resistencias, condensadores, diodos: no más de $ 1.

En total, resulta aproximadamente $ 9 + tablero + estuche.
La frecuencia de conversión 9 MSPS le permite observar la frecuencia de la señal hasta 1 MHz. Por $ 60, puede comprar un osciloscopio basado en PC con las mejores características, pero simplemente no hay ofertas por el monto resultante.

Sin embargo, el dispositivo que fue más valioso para mí no fue el dispositivo en sí, ¡sino la experiencia adquirida como resultado de intentar hacer algo más difícil que parpadear con un diodo y afirmar que es útil! Nunca he estado involucrado con la electrónica en el trabajo y, como aficionado, puedo decir que no es difícil. Largo si. Necesita alguna función, comienza a hacer. En el camino, recoges muchos rastrillos, pero al final resulta. Y tantas veces Incluso en una tarea aparentemente tan pequeña como esta, ha sido muchas veces. Por ejemplo, logré hacer nutrición bipolar para el amplificador operacional solo desde el tercer intento. Pero, si hay suficiente perseverancia y la tarea fue, en principio, factible, ¡entonces el resultado definitivamente resultará en algo similar a lo que se concibió originalmente!

Aspecto de la artesanía: continuación


Source: https://habr.com/ru/post/es385385/


All Articles