Microcontrolador ARM, por dónde empezar [cerrado]

Anteriormente había trabajado en Arduino, pero creo que fue muy simplificado para los usuarios. Ahora, quiero aprender correctamente. Decidí comenzar a aprender microcontrolador ARM. Entonces, compré LPC1114 DIP porque puedo hacerlo en una placa de pruebas. No quería usar ningún tablero ya hecho. ¿Cómo procedo? ¿Hay algún tutorial para programar? Encontré algo de código y trato de aprender de eso. ¿Cómo programo mi microcontrolador? Estoy un poco atascado aquí.

Editar: decidí optar por ARM después de leer algunas comparaciones. Dado que LPC1114 es de 32 bits en comparación con AVR de 8 bits, pensé que aprender ARM sería útil para proyectos más grandes.

Es perfectamente posible aprender a usar una MCU a bajo nivel con un dispositivo Arduino, simplemente ignorando el IDE de Arduino. No es demasiado tarde para echarse atrás si se siente incómodo.
Paso 1. Elija la cadena de herramientas de desarrollo de firmware que se adapte a su situación y sus propósitos. (Es bueno que haya decidido mantenerse alejado de las placas de desarrollo prefabricadas).
Estoy de acuerdo con @IgnacioVazquez-Abrams. Lo hago todo el tiempo. Si necesito una prueba rápida, uso el IDE de Arduino y, si quiero controlar de forma estricta el hardware, programo la placa Arduino usando la cadena de herramientas AVR estándar desde la línea de comandos. Los controladores ARM son mucho más complejos que los AVR, la curva de aprendizaje será mucho más pronunciada, pero seguro que se puede hacer.
@IgnacioVazquez-Abrams Quiero trabajar con ARM. ¿Qué tan útil será aprender AVR primero antes de pasar a ARM?
@zud: A menos que esté trabajando con una MCU verdaderamente exótica, por ejemplo, un motor Malbolge, la mayoría de las habilidades de MCU se pueden traducir a cualquier arquitectura, incluso en la división Harvard/Von Neumann.
@NickAlexeev: en realidad, no estoy de acuerdo con mantenerme alejado de los tableros prefabricados. Puede ser bastante útil comenzar con una placa en buen estado para verificar la cadena de herramientas y la configuración del programador, y luego pasar a un objetivo similar en una placa personalizada (/ placa de pruebas). Una cosa que ST, por ejemplo, hizo muy bien con su serie "Discovery" fue sacar placas de clase de $ 12 que tienen un ARM de destino a bordo, y también una segunda MCU que funciona como programador para el objetivo a bordo, o (a través de un 4 -wire SWD cable) el chip que un experimentador puede colocar en su propia placa personalizada.
@ChrisStratton El bajo precio de la placa de desarrollo no es un factor importante. De hecho, eso es un señuelo.
Puede pensarlo de esa manera, pero el lado práctico es que cualquiera puede permitirse (como una compra impulsiva) tener un programador y una plataforma de prueba conocida para probar como referencia si la placa personalizada no funciona de inmediato. También demuestra que todo lo que se necesita para hacer un adaptador SWD es un MCU de $6/cant.1.
@ChrisStratton No entendiste mi punto. Oh bien.
No, creo que no entiende el punto: es fácil concluir que las herramientas baratas son irrelevantes en un entorno profesional, pero eso no es cierto, y no solo porque los ingenieros pueden comprarlas sin tener que obtener la aprobación de una orden de compra. Más importante es que las herramientas baratas tienen que funcionar realmente, o se corre la voz y se pierde todo el sentido de ofrecerlas. En contraste con aquellos que quieren $ 300 por un programador, en sí mismo no es un problema, excepto que a ese precio parecen esforzarse más en proteger el sistema contra los clonadores que en hacer que realmente funcione bien para los clientes.

Respuestas (2)

Afortunadamente, el LPC1114FN28 tiene un gestor de arranque que permite programarlo a través de un enlace serie. Aquí hay una página web que describe el proceso de "inicio": http://vilaca.eu/lpc1114/

Todavía recomendaría obtener una placa (por ejemplo, LPCXpresso ) por dos razones: es más fácil comenzar con ella y tiene provisión para la depuración de JTAG/SWD. Como principiante, es muy fácil desanimarse si lo único que puede determinar acerca de su programa es que falla "en alguna parte".

(Parece que hay esnobismo sobre las placas de desarrollo prefabricadas; puedo entender el argumento de que uno debe construir un "producto" completamente integrado como el resultado final de un proyecto de pasatiempo, pero si solo desea realizar experimentos para aprender cosas ahorran mucho tiempo y son reutilizables).

Le recomiendo enfáticamente que obtenga una interfaz de depuración que pueda usar para programar y depurar este dispositivo. La forma más económica y rápida de comenzar es probablemente con una placa LPCExpresso y usar el software LPCExpresso para la programación. La placa LPCExpresso es en realidad dos placas: hay un procesador que se utiliza como interfaz de depuración y el segundo procesador es el "objetivo". Puede obtener una de estas placas con un LPC11xxx como procesador de destino y es bastante fácil separar físicamente la interfaz de depuración del procesador de destino. Luego puede usar la interfaz de depuración para programar sus dispositivos DIP LPC1114. He estado haciendo esto pero uso un dispositivo de depuración JLink más caro.

Tenga en cuenta que no puede usar JTAG convencional con las partes LPC11, debe usar la interfaz ARM Single-Wire Debug (SWD).