lundi 31 mars 2014

LPC810, partie 2

Dans cet article j'explique le diagramme bloc des microcontrôleurs LPC81x. Mais d'abord un mot au sujet de la compagnie ARM

ARM est une compagnie d’ingénierie et ne fabrique pas de circuit intégrés. Ils conçoivent des CPU et vendent des licences au fabricants de microprocesseurs. Il y a 3 familles de produits ARM: Cortex-A, Cortex-R et Cortex-M. Le A de Cortex-A signifie application. Cette famille de processeur est celle qu'on retrouve dans les téléphones, les tablettes et les laptops. Ce sont des CPU d'usage général. le R dans Cortex-R signifie Real time. Ces CPU sont utilisés dans les microprocesseurs pour les applications temps réel. Finalement la famille qui nous intéresse ici Cortex-M, M pour microcontrôleur. Inutile de dire où on les retrouve. Il y a 5 groupes de Cortex-M, M0, M0+, M1, M3 et M4. Les M0 sont les plus économiques et les M4 les plus performants. Les M0, M0+, M1 et M3 on une architecture Von Neumann mais les M3 et M4 ont une architecture Harvard. Les M4 possèdent en plus des fonctionnalités pour le traitement numérique de signale (DSP).

Donc comme je le disais ARM vends des licences et de nombreux fabricants de circuit intégrés en possèdent. Dans le domaine des microcontrôleurs il y a de nombreuses compagnies en possession de licences Cortext-M, Texas Instruments, Atmel, NPX, FreeScale pour n'en nommer que quelques unes.

Anatomie d'un LPC81xM

Il y a 3 MCU dans ce groupe LPC810, LPC811 et LPC812. Ils partagent le même datasheet et le diagramme bloc suivant est extrait de ce document.

Le bloc marqué en gras ARM Cortex-M0+ correspond au CPU licencié par la compagnie ARM. Tout le reste est conçu par les ingénieurs de NXP. Cette licence viens avec une option hardware multiplier. Comme lorsqu'on achète une automobile il faut payer un extra pour les options. NXP a donc acheté cette option puisque les LPC81xM possèdent ce composant.

Les bus

  • private bus Il n'est pas identifié sur ce diagramme mais ce bus est interne au bloc CPU et relie le core au contrôleur d'interruption NVIC aussi interne au coeur et aux modules optionnels vendus avec le coeur Cortex-M+.
  • fast GPIO et pin interrupts/pattern match, ces 2 modules ne font pas partie du coeur mais y sont reliés directement par un bus dédié.
  • AHB Advanced High performance bus est le bus primaire qui relie les blocs mémoire, le module CRC et le module SCT au coeur.
  • APB Advanced Peripherals bus est relié au bus AHB et relie les périphériques moins prioritaires en terme de délais d'accès.

Les périphériques

  • USARTx Universal Synchronous Asynchronous Receiver Transmitter, Le diagramme en montre 3 mais le LPC810 ne possède que le USART0. Ce module sert pour les communication RS-232 et RS-422. Peut communiquer sur de longue distance.
  • SPIx Serial Peripheral interface bus, le diagramme en montre 2 mais le LPC810 ne possède que le SPI0. Utilisé en autre pour accès au carte mémoire et autre mémoire en circuit intégré mais aussi pour des affichages LCD. Communication courte distance (boitier).
  • I2C Inter Integrated Circuit bus, communication sérielle entre circuit intégrés sur une même carte ou carte voisines. Sert aussi pour les sondes de température ou autre. Communication courte distance (boitier).
  • XTAL est le module oscillateur pour l'utilisation d'un crystal. N'est pas disponible sur le LPC810.
  • SYSCON est le module de configuration du MCU, configuration de la source de l'oscillateur système, du PLL, et autres paramètres de fonctionnement du MCU.
  • Comparator, c'est le module compartateur analogique.
  • IRC C'est l'oscillateur interne de 12Mhz. C'est cet oscillateur qui est sélectionné par défaut comme horloge système.
  • WDOsc C'est l'oscillateur du Watch dog timer, ça fréquence est programmable entre 9,4Khz et 2,3Mhz.
  • BOD Brown Out Detector, ce circuit détecte les chutes de tension et génère une interruption si l'alimentation descend sous un certain niveau.
  • POR Power On Reset, ce circuit maintient le CPU en RESET lors de la mise sous tension le temps qui cette dernière est atteint un niveau suffisant.
  • Clock generation, Power Control, system functions, ce bloc contient les circuit qui contrôlent les signaux d'horloges, la gestion de l'alimentation et d'autres fonctions système.
  • always on power domain, comme les MPC81xM possèdent un gestionnaire de consommation qui permet de réduire la consommation électrique à différent niveaux. En mode deep power-down le seul bloc qui reste alimenté est celui-ci. Ce bloc contient le PMU Power Management Unit qui gère les différent niveaux, sleep, deep-sleep, power-down et deep power-down. Le Self Wake-up Timer est une minuterie qui sort le MCU du mode deep power down après un interval de temps pré-programmé.
  • Multi-rate timer est une minuterie qui peut déclencher des interruptions régulières. Cette minuterie possède 4 canaux. C'est à dire que 4 interruptions régulières peuvent-être programmées avec une fréquence différente.
  • IOCON, contrôle des Entrées/Sortie numérique. Configure les broches pour différent modes de fonctionnement: Direction, pullup/pulldown, Open-colletor, glich filter, analog mode.
  • WWDT Windowed Watchdog Timer, minuterie chien de garde avec intervalle fenêtrée.
  • CRC Cyclic Redondancy Check, ce module sert à vérifier l'intégrité d'un bloc de donnée reçu ou transmis en émettant une somme de contrôle.
  • SCT State Configuration Timer, Minuterie utilisée pour la génération de signaux PWM ou comme compteur d'événements externe ou simplement comme compteur d'intervalle.
  • Pins interrupts/pattern match, configuration des interruptions sur changement d'état des broches ou interruption sur expression booléenne.
  • High speed GPIO, le branchement direct des broches en mode numérique au coeur permet l'écriture ou la lecture en 1 seul Tcy.
  • TEST/DEBUG INTERFACE il s'agit d'une interface JTAG pour les test d'usine boundary check et SWD Single Wire Debug pour la programmation et le débogage du MCU.
  • FLASH mémoire programme permanente de 4Ko sur le LPC810.
  • RAM mémoire de données de 1Ko sur le LPC810.
  • ROM mémoire permanente en lecture seule de 8Ko contenant le boot loader avec ISP ainsi que des interfaces I2C, USART, IAP et des profiles d'alimentation.
  • switch matrix, permet d'établir les connections entre les périphériques et les broches. Si certains périphériques ne peuvent être connectés qu'à une broche prédéfinie par contre d'autres peuvent l'être à n'importe quel GPIO libre. Par exemple le RESET ne peut-être relié qu'à la broche PIO0_5 (broche 1 sur le LPC810). les signaux USART0_RX, USART0_TX peuvent l'être à n'importe quel GPIO libre, par exemple si le RESET est désactivé USART_TX0 peut-être assigné à GPIO0_5. Ces assignations se font par les registres PINASSIGNx (il y en a 9).

Aucun commentaire:

Enregistrer un commentaire