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:
- Junta http://eud.dx.com/product/high-quality-cortex-m3-stm32-stm32f103c8t6-development-board-w-swd-interface-844380789
- Programador http://eud.dx.com/product/st-link-v2-programmer-emulator-mini-stlink-downloader-for-stm8-stm32-mcu-development-board-844380733
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é:
- Hoja de datos STM32F103x8 http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf
- Manual de referencia http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf
- Algunos otros documentos como AN2606 (modos de arranque de memoria), PM0075 (manual de programación flash) y AN3155 (protocolo de cargador de arranque en serie), que probablemente necesitaré en el futuro.
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:
- http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1939/PF257890
- http://www.st.com/web/en/catalog/tools/PF260820
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:
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?
¿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?
¿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)?
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?
fuente
Respuestas:
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.
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.
Cual biblioteca De todos modos, no debería ser un problema buscarlos en Google, creo.
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.
fuente