Comenzando con la Arquitectura ARM

Los desarrollos basados en sistemas Cortex tienen su espacio en Servisystem y aquí podrás compartir toda la información y avances que tengas con esta arquitectura que sorprende a todos.

Moderador: HJ

Comenzando con la Arquitectura ARM

Notapor elgarbe » Sab Abr 06, 2013 8:16 pm

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.
Si les parece abramos otro post para las consultas/sugerencias así no mezcla en este.

Saludos!
Última edición por elgarbe el Dom May 12, 2013 8:51 am, editado 4 veces en total
A palabras producidas por mentes inoperantes órganos auditivos en posicion de relax

You can be anything you want to be just turn yourself into anything you think that you could ever be - Freddie Mercury
Avatar de Usuario
elgarbe
 
Mensajes: 261
Registrado: Jue Mar 21, 2013 8:27 pm
Ubicación: Villa Ramallo - Buenos Aires - Argentina

Re: Comenzando con la Arquitectura ARM

Notapor elgarbe » Sab Abr 06, 2013 9:13 pm

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:
Imagen

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:
Imagen
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í:
Imagen

Esta primera parte fue bien simple, en la próxima veremos cómo construirnos la placa base para nuestra LPCXpresso.
Hasta la próxima!
A palabras producidas por mentes inoperantes órganos auditivos en posicion de relax

You can be anything you want to be just turn yourself into anything you think that you could ever be - Freddie Mercury
Avatar de Usuario
elgarbe
 
Mensajes: 261
Registrado: Jue Mar 21, 2013 8:27 pm
Ubicación: Villa Ramallo - Buenos Aires - Argentina

Re: Comenzando con la Arquitectura ARM

Notapor elgarbe » Dom Abr 07, 2013 10:05 am

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…
A palabras producidas por mentes inoperantes órganos auditivos en posicion de relax

You can be anything you want to be just turn yourself into anything you think that you could ever be - Freddie Mercury
Avatar de Usuario
elgarbe
 
Mensajes: 261
Registrado: Jue Mar 21, 2013 8:27 pm
Ubicación: Villa Ramallo - Buenos Aires - Argentina

Re: Comenzando con la Arquitectura ARM

Notapor elgarbe » Lun Abr 08, 2013 11:14 am

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

Imagen

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

Imagen
Imagen
Imagen
Imagen
Imagen
Imagen

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:

Imagen

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!
A palabras producidas por mentes inoperantes órganos auditivos en posicion de relax

You can be anything you want to be just turn yourself into anything you think that you could ever be - Freddie Mercury
Avatar de Usuario
elgarbe
 
Mensajes: 261
Registrado: Jue Mar 21, 2013 8:27 pm
Ubicación: Villa Ramallo - Buenos Aires - Argentina

Re: Comenzando con la Arquitectura ARM

Notapor elgarbe » Lun Abr 08, 2013 11:16 am

Adjunto el archivo Excel.

Saludos!
Adjuntos
PINES_LPCXPRESO.zip
(6.65 KiB) 300 veces
A palabras producidas por mentes inoperantes órganos auditivos en posicion de relax

You can be anything you want to be just turn yourself into anything you think that you could ever be - Freddie Mercury
Avatar de Usuario
elgarbe
 
Mensajes: 261
Registrado: Jue Mar 21, 2013 8:27 pm
Ubicación: Villa Ramallo - Buenos Aires - Argentina

Re: Comenzando con la Arquitectura ARM

Notapor elgarbe » Sab Abr 13, 2013 1:56 pm

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:

Imagen
Imagen

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

Saludos!
Última edición por elgarbe el Sab Abr 13, 2013 2:33 pm, editado 1 vez en total
A palabras producidas por mentes inoperantes órganos auditivos en posicion de relax

You can be anything you want to be just turn yourself into anything you think that you could ever be - Freddie Mercury
Avatar de Usuario
elgarbe
 
Mensajes: 261
Registrado: Jue Mar 21, 2013 8:27 pm
Ubicación: Villa Ramallo - Buenos Aires - Argentina

Re: Comenzando con la Arquitectura ARM

Notapor elgarbe » Sab Abr 13, 2013 2:32 pm

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:

Imagen
Imagen

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!
A palabras producidas por mentes inoperantes órganos auditivos en posicion de relax

You can be anything you want to be just turn yourself into anything you think that you could ever be - Freddie Mercury
Avatar de Usuario
elgarbe
 
Mensajes: 261
Registrado: Jue Mar 21, 2013 8:27 pm
Ubicación: Villa Ramallo - Buenos Aires - Argentina

Re: Comenzando con la Arquitectura ARM

Notapor elgarbe » Sab Abr 13, 2013 2:39 pm

Bien, el siguiente módulo es una placa de I/O digital. La misma cuenta con 2 nibles (1 byte) configurable de forma independiente como salida (conectado a un LED), 4 entradas pull up y 4 entrada pull down.
El circuito esquemático es el siguiente:
Imagen

El PCB tiene la siguiente forma:

Imagen

Y por supuesto, el proyecto en Altium y los .pdf para planchar:

02_io_digital.zip

Finalmente unas imágenes del conjunto armado:

Imagen
Imagen

Saludos!
A palabras producidas por mentes inoperantes órganos auditivos en posicion de relax

You can be anything you want to be just turn yourself into anything you think that you could ever be - Freddie Mercury
Avatar de Usuario
elgarbe
 
Mensajes: 261
Registrado: Jue Mar 21, 2013 8:27 pm
Ubicación: Villa Ramallo - Buenos Aires - Argentina

Re: Comenzando con la Arquitectura ARM

Notapor elgarbe » Sab Abr 13, 2013 5:32 pm

Siguiendo con el hardware estándar para la LPC (que también podrán usar en la Micro Training de Felixls) paso a presentarles 3 dígitos de 7 segmentos. Los mismos utilizan registros de desplazamiento para su manejo.
Tenemos la opción de manejar los display con 3 señales, Data, Clock y Reset; con 2 señales Data y Clock ó con una sola señal (como lo explica Felixls en su blog). Para ello tenemos un par de jumper.
También podemos elegir entre usar display de ánodo común o cátodo común.

El esquemático es el siguiente:
Imagen

El PCB es así:
Imagen

Aquí van los archivos en Altium más los .pdf para planchar.
05_7-SEG.zip
Estas son las imágenes de la placa terminada.

Imagen
Imagen

Saludos!
A palabras producidas por mentes inoperantes órganos auditivos en posicion de relax

You can be anything you want to be just turn yourself into anything you think that you could ever be - Freddie Mercury
Avatar de Usuario
elgarbe
 
Mensajes: 261
Registrado: Jue Mar 21, 2013 8:27 pm
Ubicación: Villa Ramallo - Buenos Aires - Argentina

Re: Comenzando con la Arquitectura ARM

Notapor elgarbe » Sab Abr 13, 2013 5:50 pm

El siguiente módulo es un LCD de 2x16 controlado por un registro de desplazamiento. Este módulo está pensado para cubrir todas las opciones:
1. Sin registro de desplazamiento: J2 desconectado, P1 señales de control, P2 y P3 para modo 4 u 8 bits.
2. Con registro de desplazamiento: J2 conectado, P3 señales de datos, en P1 podemos enviar las 4 señales de control o solo usar clock/data/enable y dejar que R/S y R/W las maneje el registro de desplazamiento.
El esquemático es el siguiente:

Imagen

El PCB queda así:

Imagen

Los archivos para el Altium: 01_LCD.zip

Y las imágenes de cómo queda la placa terminada

Imagen
Imagen

Saludos!
A palabras producidas por mentes inoperantes órganos auditivos en posicion de relax

You can be anything you want to be just turn yourself into anything you think that you could ever be - Freddie Mercury
Avatar de Usuario
elgarbe
 
Mensajes: 261
Registrado: Jue Mar 21, 2013 8:27 pm
Ubicación: Villa Ramallo - Buenos Aires - Argentina

Siguiente

Volver a ARM

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron