Autor Tema: Mis inicios con ARM - LPCExpresso 1769  (Leído 7957 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado elgarbe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2178
Mis inicios con ARM - LPCExpresso 1769
« en: 19 de Enero de 2014, 21:13:38 »
Hola, hace un tiempo había empezado a escribir unos post sobre mis comienzos con la arquitectura ARM en el foro del amigo Mario Sacco. Lo dejé un poco por la mitad y quiero aprovechar que estoy trabajando otra vez con la LPCXpresso para retomarlo. Voy a ir mudando los post para que queden ordenados y seguir escribendo por acá.
-------------------------------------------------------------------------------

Bueno, quisiera empezar a escribir unos post sobre cómo empezar a trabajar con esta arquitectura, desde 0 y con ejemplos de hardware y software bien simples.
El microcontrolador que utilizaremos es el LPC1769, montado en la LPCXpresso, ya que al ser la gran mayoría del tipo QFN (hay muy pocos DIP y no creo que se vendan en Argentina) sería muy difícil empezar con un hardware propio.
Las entregas serán:


A medida vaya pudiendo escribir iré ampliando el índice y linkeando al post correspondiente.

Saludos!

« Última modificación: 19 de Enero de 2014, 21:47:25 por elgarbe »
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Mis inicios con ARM - LPCExpresso 1769
« Respuesta #1 en: 19 de Enero de 2014, 21:14:36 »
Bueno, esta es la primera entrega de este intento de mostrar mis comienzos con la arquitectura ARM.
Como les comenté voy a utilizar la LPCXpresso 1769:


Esta placa está dividida en dos partes, a la izquierda la LPC-Link, encargada de conectarse por el USB a la PC para descargar el firmware, posibilitar el debug y de tomar la alimentación del USB para dar energía al resto de la placa entre otras cosas. También posee un conector (J5) que nos permite obtener las señales en caso de que queramos grabar un uC en otra placa. La parte de la derecha es la placa del LPC1769 propiamente dicho, tenemos el uC, un led, el hardware necesario para realizar una conexión Ethernet y 73 (54 + 19) pines (vías en la placa) conectados al uC y a otras partes de la placa. Más adelante veremos un poco más en detalle el esquemático de toda la placa para entender bien su funcionamiento.

Ahora debemos centrarnos en realizar la primera modificación a la placa para conseguir probar ejemplos un poco más complejos que el simple hola mundo.
Podría comenzar con la parte de software y mostrar cómo hacer prender y apagar el led de la placa, pero creo que es mejor primero avanzar con el hardware y luego dedicarnos a full con la parte de software.

Para que tengan una idea, mi intensión es que puedan llegar a armar la siguiente placa base:

En ella podremos “enchufar” nuestra LPCXpresso y tener en conectores IDC comunes todos los pines, ordenados por funciones, del uC. Pero para ello debemos realizar el primer trabajo. Es muy simple, debemos soldar pines como estos:
Tiras de Pines Verticales Simple y Doble Fila de contactos paso 2.54mm

Si soldamos dos hileras de pines podremos colocar la LPC en un protoboard, pero perderemos 19 pines conectados a 19 “patas” del uC. Es por ellos que yo opté por soldar pines a todas las vías de la LPC y construirme una placa base en donde poder conectarla. Como podrán notar al soldar esos últimos 19 pines ya no podrán usar la LPC en un protoboard.

Bien la idea es que quede así:


Esta primera parte fue bien simple, en la próxima veremos cómo construirnos la placa base para nuestra LPCXpresso.
Hasta la próxima!
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Mis inicios con ARM - LPCExpresso 1769
« Respuesta #2 en: 19 de Enero de 2014, 21:49:01 »
Fabricación de placa base para facilitar el uso de la LPC - Parte 1

Llegó el momento de la segunda entrega, en este caso diseñaremos una placa base para enchufar la LPCXpresso y poder conectar módulos estándar de hardware. No hace falta decir que la idea surgió de haber visto y armado la Multiboard micro trainer 3.0 de Sergio (felixls). Un desarrollo fantástico y útil para comenzar a utilizar  una arquitectura determinada. En un principio intenté hacer una MCU Card para enchufar la LPCXpresso en dicha Mother, pero por temas de compatibilidad de pines y otras cuestiones me pareció más fácil hacer una nueva desde cero.
Bien, para diseñar la placa base es necesario estudiar detenidamente el esquemático de la LPCXpresso. Las cosas a resolver son
  • La alimentación: deberíamos poder usar la tensión del USB, pero también estaría bueno poder alimentarla con una fuente externa para cuando necesitemos mayores corrientes. También hay que ver qué cosas van a 5V y que cosas a 3,3V
  • Reset: Ver si podemos poner un switch de reset para el uC.
  • Pines IO de la placa y el uC: Esta es la parte más compleja para mí. Primero debo comentarles que cada pin del uC puede ser configurado con hasta 4 funciones distintas. Por ejemplo el pin 46 del uC (conectado al J6-9 de la LPC) puede sr configurado como GPIO 0.0, RD1 (CAN1), TXD3 (UART3) ó SDA1 (I2C1). Podemos tomar dos decisiones, conectar cada pin de la LPC a un pin en la placa base, de forma de tener todos los pines disponibles (aunque desordenados) ó agrupar en conectores IDC (Conectores Machos Vertical a Circuito Impreso tipo BOX sin Traba de Fijacion) por funciones de forma similar a como lo hiso Felixls. Esta fue la forma en que decidí hacerlo.

Bien arranquemos viendo la alimentación de la LPC…
« Última modificación: 19 de Enero de 2014, 21:52:21 por elgarbe »
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Mis inicios con ARM - LPCExpresso 1769
« Respuesta #3 en: 19 de Enero de 2014, 21:50:06 »
Fabricación de placa base para facilitar el uso de la LPC - Parte 2

Bien, acá podemos ver un diagrama de bloques de la LPCXpresso, en la que podemos ver el sistema de alimentación:



Aquí van el resto de las hojas del esquemático:








Normalmente la alimentación se obtiene del conector USB (USB_VBUS en la página 3). En la LPC_Link tenemos un regulador de 3,3V (U10 en la página 4) y por medio de un diodo (D6 en la página 4) dicha tensión es conducida hacia la LPC_Board. Dicho diodo puede ser desconectado.
Por otra parte tenemos la posibilidad de alimentar con 5V o con 3,3V de forma externa (EXT_POWX y VIO_3V3X en la página 7). Los 5V van hacia la LPC_Link (EXT_POW en la página 2. Cambia de nombre eliminando la X al pasar de una placa a la otra).  Los 3,3V si vienen desde afuera alimentan toda la parte de la LPC_Board y debido al diodo D6 la corriente no puede pasar a la LPC Link. Si no conectamos 3,3V en VIO_3V3X entonces en dicho pin tendremos los 3,3V generados por la LPC_Link.
En resumen tenemos:
    •   Alimentado desde el USB por la LPC Link se generan los 3,3V necesarios para las 2 placas.
    •   Si alimentamos con 5V externos, dicha tensión va a la LPC Link y allí se reduce a 3,3V para volver a la LPC Board.
    •   Si tenemos la LPC Board separada de la LPC Link, podemos alimentar con 3,3V la placa para que funcione de forma autónoma.
Entonces nuestra placa debería poder tener un poco en cuenta estas cosas.
En mi caso decidí trabajar con el siguiente esquemático:



Tenemos un conector Jack para ingresar con una tensión de 12V. Luego un regulador de 5V y a la salida de este un LM317 para obtener 3,3V. Luego tenemos 3 jumper. El W1 es para habilitar los 5V de la fuente para alimentar la LPC. Esos 5V también se usan para los conectores IDC. Tener en cuenta que en los pines de la LPC no hay una salida de 5V. El W2 es para elegir que tensión usaremos en los conectores IDC, puede ser la fuente de alimentación o la salida/entrada de 3,3V de la LPC. Finalmente W3 permite alimentar la placa del LPC por medio de la fuente (recordemos que esta opción es únicamente para cuando tenemos separadas la LPC-Link de la LPC-Board).

El otro punto era el reset. Dado que entre los pines disponibles en la LPC_Board está la señal RESET, simplemente colocamos un pulsador a GND. No hace falta resistencia de pull-up ya que en la página 5 podemos ver la R31 de 12K que cumple con esta función.

Finalmente para agrupar el IO armé un archivo Excel con todas las señales posibles de cada pin disponible en la LPC_Board. Luego las agrupé según la función que cumplen para colocarlas en el mismo conector IDC. Por ejemplo P4 posee 4 entradas analógicas, P14 posee las 4 señales de ETH, etc. Adjunto dicho Excel.

En la próxima veremos el proyecto completo en Altium y la fabricación de la placa.

Saludos!
« Última modificación: 19 de Enero de 2014, 21:52:42 por elgarbe »
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Mis inicios con ARM - LPCExpresso 1769
« Respuesta #4 en: 19 de Enero de 2014, 21:57:24 »
Fabricación de placa base para facilitar el uso de la LPC - Parte 3

Bueno, seguimos adelante con el diseño de la BASE BOARD para soportar la LPCXpresso, con la cual nos introduciremos al mundo del ARM.
Una vez vistas las cuestiones de diseño, paso a dejarles el proyecto completo (verdadero open hardware) en Altium. En el .zip encontrarán también un .pdf con el esquemático y el PCB listo para planchar.

MCU_LPC1769_Card_Altium.zip

Hay un par de pistas que son muy finas y serán todo un desafío. En este caso pueden abrir el proyecto y tratar de mejorar dichas pistas. Otra opción que estoy viendo es que si hay algún interesado en armarla pueda conseguir el PCB listo para armar.

Para poder hacer el proyecto completo hubo que crear un componente con su footprint, tomando como referencia la LPCXpresso. Si a alguien le interesa ver como se hace esto en Altium puedo ver de hacer un minitutorial de manejo de Altium.

Bien, en esta parte no hay mucho más por ver, simplemente animarse a armar la placa para empezar con las pruebas. Dejo unas imágenes:




En las próximas entregas iremos viendo diversos módulos para enchufar en la BASE BOARD para probar los periféricos del LPC…

ATENCION: Si hay varios interesados en avanzar con esta placa, puedo hacer una tirada de circuitos impresos y ofrecerlos GRATIS. Solo deberían abonar el costo de envío...

Saludos!
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Mis inicios con ARM - LPCExpresso 1769
« Respuesta #5 en: 19 de Enero de 2014, 22:00:17 »
Módulo Pin protoboard

Bueno, continuemos con los módulos de hardware básicos para las pruebas.
El primer módulo es un simple conector para Protoboard. Con él podremos conectar los pines de un conector IDC de la base board directo al Protoboard. Otra vez, siguiendo con la idea de Hardware abierto, adjunto el proyecto en altium:

06_PIN_Protoboard.zip

Esta es una pequeña imagen del módulo para que puedan ver la idea:




No quiero dejar de repetir que la idea de los módulos surgió del desarrollo de Felixls con su Micro Training. En todos los casos tomé su idea y la adapte levemente a mis necesidades.

Saludos!
-
Leonardo Garberoglio


 

anything