viernes, 9 de octubre de 2020

Programando LPC900 P89LPC936 - Serie Breakout

Investigando entre equipos industriales dañados, encontré este microcontrolador:


El modelo exacto es P89LPC936 en encapsulado TSSop28 (Similar al que en la imagen posee la leyenda P89LPC933)


Luego de una rápida búsqueda pude hallar las específicaciones. Para los estándares actuales (2020) no es precisamente muy poderoso, no obstante posee una buena cantidad de flash y oscilador interno, lo que lo hace interesante para pequeños proyectos.

Cabe añadir que el CPU es de la familia 80C51.

 

Spec del LPC936

Para ponerlo en marcha realicé una pequeña placa breakout con las conexiones mínimas.

TODO : Imagen de la placa breakout

Además para poder programarlo pude realizarlo (casi) enteramente con software libre en Linux.

Es bueno recordar que utilizo debian 9 + KDE.

Primeramente instalamos sdcc con su método favorito.

En mi caso Apper:



Luego abrimos un terminal y chequeamos que esté correctamente instalado:
    $ sdcc -v

SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/TININative/ds400/hc08/s08/stm8 3.8.0 #10562 (Linux)
published under GNU General Public License (GPL)


ISP Mode.

Este dispositivo permite ser programado en modo ISP (In-System Programming), por medio de su interfaz UART.


Para programar el microcontrolador por medio del modo ISP , es necesario realizar una secuencia de inicialización luego de energizar el componente, tal como se ve en la siguiente imagen:

Activar el Boot Loader por hardware ( pag: 66, P89LPC933/934/935/936.pdf).


Al momento de energizar el microcontrolador el pin de /RST debe forzarse a LOW, luego de un período de espera en que la tensión VDD se estabilice(Tvr), se debe "resetear" 3(tres) veces y solo 3(tres),a intervalos regulares de 10uSeg

|   H   |   L    |  H    |  L    |  H    |  L    |  H
 10us  10us   10us  10us  10us  10us  -> run
 
 Este proceso lo realicé por medio de una placa blue-pill (STM32F103) programada para mantener la línea de /RST en 0 del LPC936 durante 10seg, tiempo en el que se debe apagar y encender el LPC (Power-On reset), luego de los 10 seg se manipula la línea de /RST según lo especificado anteriormente.
 

Además es necesario un conversor USB-Serial TTL el utilizado en esta entrada es un (lsusb):

Bus 001 Device 009: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family]


Las conexiones son muy simples: 

    RX del adaptador al pin 18(TXD) del LPC936(TSSOP28) 

    TX del adaptador al pin 17(RXD) del LPC936(TSSOP28) 

    0V adaptador 0V LPC936

 

Una vez que el LPC900 está en modo ISP, se puede verificar con Minicom en 9600bps 8N2(8bit, sin paridad, 2 bits stop), tipeando el siguiente comando:

UUUU:00000001FF

inmediatamente el microcontrolador debe responder con 0404. 

 

Para editar el código fuente mi herramiente preferida es Kate, siendo la que normalmente uso para todos los códigos tanto para C como para python.

*- compilar con:
    $ sdcc main.c
*- convert to hex (Flash Magic file)
    $ packihx main.ihx > main.hex

*- Llegado acá cerrar Minicom y realizar el flasheo con Flash Magic ejecutado por Wine.

Link al folleto

Link al Datasheet.

No hay comentarios.:

Publicar un comentario