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?