Skyduino:~#
Articles
LPCx, programmation, test

[Test] LPC1343 Quickstart

Salut à tous !

Aujourd’hui je ne vais pas vous parler d’une carte arduino, n’y même de quoi que ce soit de lier à l’arduino.
Hein !? Quoi !? MER IL ET FOU ! 🙂
Et bien non aujourd’hui j’innove (ceci est une révolution !) ! Je vais vous parler de la LPC1343 quickstart de NXP.

Alors c’est quoi ce truc microscopique ?
Et bien c’est une petite merveille de technologie !
De la même taille qu’une arduino pro mini, la quickstart est une plateforme de développement basé sur un microcontrolleur ARM 32bit de NXP du doux nom de LPC1343.

Cette petite bête tourne à 72MHz en interne sur une architecture ARM Cortex-M3, 32Ko de flash et 8Ko de ram.
Avec en plus USB, UART, SSP, I2C, …

Alors tout de suite la question qui fâche, plus c’est petit plus c’est chère, et bin non !
Si j’ai fait la comparaison en taille avec une pro mini de sparkfun c’est parce que le prix … et le même !
A savoir moins de 18€ !

Bon comme toujours, premier point important, la boite !
Et oui premiére chose que je vois avant tous c’est le packaging.
Et la au premier coup j’ai eu comme un doute, à l’instar de darty qui m’envoie une boite de 85x85x45cm pour ma caméra miniature de 15x15x15cm ici j’ai vu arrivé une grosse boite en carton (enfin pas aussi grosse que celle de darty heureusement !) de 15x10x2cm.
Sur le coup je me suis dis « raaa il ont du ce foiré dans la commande ! », j’ouvre et … à ba non c’est bien bon !
C’est donc dans une boite 10x trop grande que j’ai vu arrivé la quickstart =P

Pas trés écologique tout ce carton =P enfin bref le plus important est dans la boite !
Ensuite bon point pour NXP, le carton est sur-dimensionnée OK, mais la quickstart est emballé avec soin !
Avec un vrai sachet anti-ESD en plastique aluminé et tout et tout !
Et même la petite notice pour l’enregistrement et le numéro de série !

Et aussi un jolie #FAIL que je vous laisse apprécier :

Niveau licence/schémas & co comme toujours avec LPCexpresso il faut avoir un compte sur le support NXP, avoir enregistré le numéro de série de sa board et avoir validé sont compte pour y avoir accées, sinon nada !
C’est lourd dingue mais à force on si fait (et puis une fois le pdf téléchargé basta).

Pour ce qui est du PCB, j’ai jamais rien vu de telle !
Oublié la réparation « maison » c’est impossible ! La ou les autres constructeurs utilisent des composants cms au format 0603 ici c’est du cms si petit qu’il est impossible de savoir si c’est une résistance, un condensateur ou autre !
Les pistes sont routé avec un largeur d’une taille extraordinairement petite, ~ 1/4 de mm grosso modo avec 4 couches (oui 4).
Et le PCB doit faire même pas 1mm d’épaisseur !

Les connecteurs de chaque coté ne sont pas soudés de base il faut les souder soit même, avec l’épaisseur de pcb et des pistes j’ai pris énormément de précautions, fer à souder en basse température, soudure étain/plomb et un temps de refroidissement entre chaque soudures.
Ma pire crainte était de voir une piste ce décoller avec la chaleur ou le pcb qui fasse des cloques, vu la taille j’aurais pas mis ma main à coupé qu’il résiste à une soudure « normal » @350°C.

Une fois les connecteurs soudé plus de crainte à avoir.
On peut alors découvrir le vernis rouge et son skillscreen blanc, je sais pas si c’est une mode du moment ou un nouveau standard mais tout le monde ce met au vernis rouge / skillscreen blanc que ce soit digilent, olimex ou ici nxp !
En tout cas l’arrière est annoté des noms des différentes broches et pour certaines de leurs fonctions « spécial » telle que SDA/SCL pour l’i2c ou reset.

Bon je vais vous passez les spécifications du LPC1343, elles sont déja largement documenté dans le datasheet.
Ce qu’on retiendra c’est l’ARM Cortex-M3 à 72 MHz avec 32 kB de flash et 8 kB de SRAM,
l’EEprom I2C de 32Ko,
le booloader usb/série intégré,
les drivers usb et usb hid intégré,
le bus usb « device only » full speed,
le port uart, compatible série et rs485 avec buffeurs fifo,
le controleur SSP,
le bus i2c (et du vrai I2C pour le coup, NXP => Philips => I2C donc ici pas de TWI ou I2C-compatible mais du VRAI I2C),
les 42 I/O avec résistances de pull-up pull-down,
4 timers dont un timer de temps systéme,
une PUM (power unit management) pour désactiver tout les périphériques inutile et optimisé la consommation du µc,
un convertisseur analogique numérique 10-bit.
Et les I/O peuvent déclencher des interruptions sur des fronts ou même servir de capteurs capacitif.
Que du bon !

Petit point sur ce qu’embarque la quickstart comme boutons/leds.
Vu la taille il est clair qu’il n’y a pas la place pour bien grand choses mais il y as quand même deux trois trucs.
Il y as deux boutons, un boutons pour le reset et un boutons pour le bootloader à par ça rien de plus.
Coté led il y as une led pour l’usb, une led pour le reset et un led pour l’utilisateur.

Pour ceux qui est de la connectiques, il y a 3 points « clef », d’abord ça semble évident, les deux rangées de connecteurs, ensuite le port usb aussi bien utilisable pour faire un clavier usb, une souris ou autre que pour programmer la quickstart via le bootloader.
Et pour finir le port mini-Jtag, je suis sur que vous l’avez deja vu sur une board LPCx ou sur une maple, stm32, …
Mais je me demandé si il etait possible d’utiliser un LPC-Link d’une board LPCx pour débugger la quickstart, et bien oui c’est possible mais il faut trouver le câble et là …
Finalement aprés quelques recherches je suis tomber sur une référence venant du forum nxp, un câble de samtec le FFSD-05-D-06.00-01-N.
Un cable au nom barbare et au prix … piquant … Ref Farnell dont je vais me passer =P.

Bon j’en ai finit avec le hardware, maintenant le … le quoi ? le software ? Ah oui le software … Aie …
Alors normalement j’ai ma petite méthode, je code tranquillement sous Coocox IDE j’exporte le binaire et j’utilise le prog de flash du constructeur sauf que ce coup ci il n’y a pas de programmateur intégré comme sur une LPC1769 ou une STM32-discovery mais un bootloader !

Et en plus c’est un double bootloader, soit usb, soit série …
En soit il est relativement facile à faire fonctionné, il faut maintenir appuyé le bouton BL puis pressé RST (reset), la led clignote et l’usb indique un nouveau disque usb.
Sur le coup je me suis demandé « mais pourquoi il y a un nouveau lecteur de disque ? » je m’attendais pas à voir une carte sd apparaitre mais plutôt un périphérique HID au nom bizarre genre « LPC Bootloader » bref.

La prise en main est plutôt rapide, si la quickstart est alimenté par l’usb le bootloader démarrera automatiquement en mode usb au reset (+BL), au contraire si la quickstart et alimenté par la broche 3V3 c’est le bootloader série qui s’activera.
En fait tout viens du câblage de PIO_03 qui gère le mode du bootloader, si cette broche est à 0 (pas de tension sur V-usb) = mode série, si c’est 1 (V-usb = 5v) = mode usb.

Bon pour le code j’ai réalisé via coocox un simple blink de la led intégré (sur PIO_07) le fichier binaire de sortie (le .bin) n’est pas utilisable en l’état, au début je ne comprenais pas pourquoi mon .bin n’était pas accepté par le bootloader mais j’ai finit par comprendre !

Le bootloader ce fait passer pour une clef usb (de quelque ko), dans lequel on peut voir un fichier firmware.bin, pour programmé la board rien de plus simple, on supprime le firmware.bin précédant et on copie le nouveau !

Mais il faut au paravent exécuter une petite commande pour rendre ce fichier exécutable par la quickstart !
Prenons le blink.bin généré par mon projet coIDE, pour le rendre fonctionnel avec la quickstart il faut ouvrir une console dans le dossier du fichier blink.bin et éxécuté la commande suivante :
C:\nxp\LPCXpresso_4.0.5_123\lpcxpresso\bin\checksum.exe –p lpc1343 –v blink.bin
Le chemin vers \bin peut varié selon la version de l’ide lpcx.

Maintenant blink.bin est prés à etre copier dans la quickstart

Pour ce faire on branche un cable usb sur la quickstart et sur l’ordi,
on maintient le bouton BL,
on presse rst (reset),
on lâche tout et miracle un disque « CRP DISABLED » va apparaitre.
On supp firmware.bin, puis on copie colle blink.bin,
on reset la quickstart en pressant RST et voila la led ce met à clignoter !

Pour les curieux voici le code source de mon blink :

#include "lpc13xx_syscon.h"
#include "lpc13xx_gpio.h"

int main(void)
{
	int i, j;

	/* Enable GPIO block clock */
	SYSCON_AHBPeriphClockCmd(SYSCON_AHBPeriph_GPIO, ENABLE);

	/* Set PIO_0x as PIO function. */
	//IOCON_SetPinFunc(IOCON_PIO2_0, PIO2_0_FUN_PIO);

	/* Set PIO_07 as output. */
	GPIO_SetDir(PORT0, GPIO_Pin_7, 1);

	while(1) {

		/* Delay some time */
		for(i=0; i<200; i++)
			for(j=0; j<10000; j++);

		/* Output high level */
		GPIO_SetBits(PORT0, GPIO_Pin_7);

		/* Delay some time */
		for(i=0; i<200; i++)
			for(j=0; j<10000; j++);

		/* Output low level */
		GPIO_ResetBits(PORT0, GPIO_Pin_7);
	}
}

Pour tout ce qui est i2c, usb & co il faut soit ce reporter au exemple de LPCx soit regarder sur coIDE si vous utilisé coocox IDE, sachez qu’avec coIDE vous ne pouvais pas faire de debug avec un LPC-Link donc un peu comme avec un arduino il faut debugger au « talent ».

Conclusion :
C’est une quickstart sympa, petite et puissante, au prix ridicule, si vous devez faire du systéme embarqué c’est idéal, pour du dev usb aussi !
Je regrette vraiment pas mon achat, certes le fait de ne pas avoir les fonctions « arduino » rend le code un peu indigeste mais avec le temps c’est ok !
A choisir entre une arduino pro mini et un quickstart lpc1343, si le codage « raw » c++ ne pose pas de probléme je choisirai la quickstart sans hésiter !

Discussion

Pas encore de commentaire.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Skyduino devient Carnet du Maker

Le site Carnet du Maker remplace désormais le blog Skyduino pour tout ce qui touche à l'Arduino, l'informatique et au DIY.