¿Cómo comenzar con la placa STM32F103C8T6?

10

He estado usando un MCU AVR de 8 bits para construir robots seguidores de línea con estudiantes durante algunos años. Ahora me gustaría pasar a un ARM Cortex-M3 porque me gustaría agregar algunas características más intensivas de CPU como odometría y fusión de sensores.

Los requisitos son:

  • 8 entradas analógicas
  • 4 salidas PWM,
  • I 2 C,
  • 2 entradas de codificador en cuadratura,
  • E / S en serie,
  • Autoprogramación inalámbrica sin acceso físico al robot.
  • Cadena de herramientas multiplataforma + IDE (OS X, Linux, Windows).

Los pasos que he tomado hasta ahora son:

Estoy usando esta placa basada en STM32F103C8. Creo que esta MCU tiene todo lo que necesito, incluido el 2 x QEI que planeé implementar en el software, pero resulta que lo tiene en el hardware, muy bueno:

He seguido esto para configurar mi cadena de herramientas + IDE:

Descubrí que la documentación de este chip está dispersa en varios archivos PDF, que descargué:

También descargué la biblioteca periférica estándar STM32F10x, pero eso a su vez me recomendó obtener el nuevo STM32CubeF1, que creo que es solo un cambio de nombre de marketing de lo anterior, así que obtuve ambos:

Finalmente, también recibí "La guía definitiva para el ARM Cortex-M3" de Joseph Yiu, que estoy leyendo mientras espero a que lleguen las tablas.

Mis preguntas son:

  1. Estoy un poco abrumado por la documentación, por decir lo menos, y ni siquiera estoy seguro de tenerlo todo. Por ejemplo, la hoja de datos y el manual de referencia indican que el chip tiene 3 temporizadores capaces de entradas codificadas en cuadratura. Pero, no puedo encontrar documentación de los registros que controlan los temporizadores en ningún lugar de los archivos PDF anteriores. ¿Qué me estoy perdiendo?

  2. ¿Debo usar la biblioteca periférica estándar (¿más antigua?) O el cubo (¿más nuevo?)? ¿Cual es la diferencia? Entiendo que ambas bibliotecas me salvan de manipular registros directamente y son el camino recomendado. Estoy en lo cierto?

  3. ¿Dónde está la documentación para las bibliotecas (además de los comentarios incrustados de doxygen, que son agradables y todos pero prefiero tener un html / pdf con capacidad de búsqueda)?

  4. Elegí Eclipse + GCC ARM + OpenOCD como mi cadena de herramientas porque considero que esta es la única opción que se ejecutará en los 3 sistemas operativos principales sin tamaño de código u otras limitaciones. ¿Hay más opciones?

jamarju
fuente
2
La página 324 del Manual de referencia contiene detalles de la interfaz del codificador utilizando TIM1 y TIM8.
Leon Heller
1
¿Puedo sugerir sistemas embebidos? Shape The World ARM-Cortex-M3, pero es de TI. También pude configurar Eclipse + GCC ARM + OpenOCD para ubuntu, era bastante tedioso, y al menos no demasiado confiable.
Mahendra Gunawardena
1
Las soluciones ARM-gcc son en general bastante estables y son la opción más portátil que existe. El énfasis tiende a estar más orientado hacia las compilaciones impulsadas por un Makefile o la automatización de compilaciones, por lo que la integración con las prácticas de desarrollo de software organizacional existentes es excelente. Con qué IDE (si lo hay) para editar y conducir compilaciones experimentales tiende a ser una decisión mucho más personal, y una que no necesariamente ve tanto esfuerzo de desarrollo de herramientas puesto en ello. Personalmente, lo último con lo que quiero tener que lidiar es con un destino / cadena de herramientas que asume que cambiaré IDEs solo para trabajar con él.
Chris Stratton

Respuestas:

6
  1. En cuanto a las hojas de datos, de hecho están divididas. El "manual de referencia" es descripciones complejas de cómo hacer las cosas, configuración y consideraciones detalladas acerca de toda la MCU. "Hoja de datos" es, por otro lado, solo una breve descripción de las características de MCU, pines, paquetes, etc. También hay un documento muy útil para cada línea STM32 (F1,2 ... 7) "Introducción al desarrollo de hardware de MCU STM32F7xxxx" que le proporciona muchas informaciones en caso de que desee diseñar un tablero personalizado. En comparación con los AVR, las descripciones de los registros a veces se apartan un poco de la descripción principal de un capítulo en particular.

  2. STM32CubeMX no es una biblioteca, solo un programa útil de ST, que le permite establecer pinouts, sus configuraciones, establecer relojes de sistema, etc. y luego, al final, generar un código y todo el proyecto. El proyecto se puede generar especialmente para Eclipse (System Workbench para STM32) en el que solo importa este proyecto y está listo para comenzar. La nueva biblioteca es HAL ("capa de abstracción de hardware") e intenta usarla. Eso es lo nuevo y, a veces, es difícil encontrar ejemplos en Internet, pero no enseñe a sus estudiantes tecnologías obsoletas. HAL es conveniente de usar y tiene documentación, por lo que creo que es una mejor opción.

  3. Cual biblioteca De todos modos, no debería ser un problema buscarlos en Google, creo.

  4. Incluso si desea utilizar solo un sistema operativo (como Windows), Eclipse (AC6 = System workbench para STM32) es, creo, la mejor opción. Existe, por ejemplo, uVision 5 de Keil, pero es un IDE realmente terrible, carece de la mayoría de las características que IDE debería ofrecer (refractorización, clic y búsqueda, verificación de errores adecuada, búsqueda de referencias y muchas, muchas más). Entonces, en general, el Eclipse es prácticamente la única opción razonable para IDE para STM32.

zupazt3
fuente
3
En realidad, puede usar casi cualquier IDE que se pueda hacer para conducir un compilador externo.
Chris Stratton