Multiuse PCB-X : Un petit circuit polyvalent avec micro-contrôleur USB



Description

Ce circuit spécialisé pour USB est inspiré de mes projets précédents Multiuse Tiny 1 et Multiuse PCB2. Cette fois, comme un micro-contrôleur supportant USB nativement est utilisé, il est possible de communiquer en mode pleine vitesse (Full speed) 12 Mbit/s alors qu'avant, puisqu'un stack logiciel (V-USB) était utilisé, la vitesse était limitée à 1.5Mbit/s (Low speed).

Outre la vitesse de transfert plus élevée, il est également possible de faire en sorte que l'hôte (le PC) interroge l'adaptateur à des intervalles plus rapprochés, ce qui est d'une aide irremplaçable pour réduire les délais (latency).

Finalement, puisque le logiciel n'a plus à s'occuper de la communication USB en temps réel, certaines contraintes tombent. Par exemple, l'impossibilité déactiver les interruptions lors d'opérations dont le timing est critique, un obstacle majeur dans certains cas, n'est plus.

Caractéristiques:
Note: Ce circuit n'est pas compatible arduino.




goto top Retour en haut


Signaux

Un connecteur mini-USB est soudé directement sur le circuit, alors pour USB il suffit simplement de brancher le câble. Pour les autres signaux, des PADs sont disponibles sur l'une ou l'autre des faces.

Signal Face Étiquette
PD0 (INT0/AIN0) Supérieure 0
PD1 (INT1/AIN1) Supérieure 2
PD2 (INT2/AIN2/RXD1) Supérieure 1
PD3 (INT3/TXD1) Supérieure 3
PB1 (SCLK) Inférieure SCK
PB2 (MOSI) Inférieure MOSI
PB3 (MISO) Inférieure MISO
PD7 (HWB) Inférieure HWB
Face supérieure

Face supérieure

Face inférieure

Face inférieure


Oui, les étiquettes 2 et 1 sont inversées.

goto top Retour en haut


Schéma

Rien de bien compliqué ici, mais voici tout de même quelques précisions:

goto top Retour en haut


Programmation

Option 1 : Bootloader DFU

L'IC Atmega32u2 sur lequel est basé ce circuit est programmé à l'usine d'Atmel avec un bootloader USB DFU (Device Firmware Update). Il est donc possible d'y installer un firmware sans équipement supplémentaire en utilisant un logiciel prévu à cette fin du côté PC.

Pour pouvoir installer un firmware, il faut cependant d'abord entrer dans le bootloader. Il y a différentes manières d'y arriver:
  1. Lorsque le chip est neuf, il suffit de brancher le câble USB car le bootloader ne fait rien lorsqu'aucun firmware n'est installé.
  2. Si le chip a déjà été programmé, il faut soit:
    1. Utiliser une commande spécifique au firmware pour sauter vers le bootloader.
    2. Effectuer un reset via le PAD reset tout en maintenant signal HWB à zéro (gnd)
Un logiciel côté PC fonctionnant bien pour programmer: dfu-programmer. C'est ce que j'utilise.
# Programmation d'un firmware avec dfu-programmer:
$ dfu-programmer atmega32u2 erase                   # Étape 1: Efface le firmware courant
$ dfu-programmer atmega32u2 flash ppusbcomm.hex     # Étape 2: Programme le nouveau firmware
$ dfu-programmer atmega32u2 start                   # Étape 3: Démarrage du nouveau firmware


Option 2 : AVR-ISP

Ceci est la méthode traditionnelle de programmation des micro-contrôleurs AVR effectuée avec un outil spécial. Cette méthode n'est pas normalement nécessaire mais peut parfois servir: Les signaux nécessaires sont exposés via les PADs sur la face inférieure du circuit. Il suffit de souder les 6 fils à un connecteur 2x3 correspondant au programmeur. Pour plus d'informations sur l'équipement requis, voir ma page sur la programmation d'AVR.

goto top Retour en haut


Développement

LUFA

Je recommande d'utiliser LUFA (http://www.fourwalledcubicle.com/LUFA.php) comme infra-structure USB. La popularité du projet LUFA fait qu'il y a des tonnes d'exemples pour toutes sortes de périphériques USB et un bon mailing list si jamais il vous faut de l'aide.

Voici un exemple simple utilisant LUFA: MouseShaker.tar.gz. Ce firmware, dérivé de l'exemple Demos/Devices/ClassDriver/Mouse fourni avec LUFA implémente une souris dont le pointeur tourne en rond. Presque utile pour empêcher l'écran de veille de s'activer.

Alternatives à LUFA

La documentation de LUFA mentionne quelques alternatives. Je n'ai essayé aucunes d'entre elles.
Alternative USB AVR Stacks

Tout faire sois-même

Il est bien sûr possible de développer son propre code USB en programmant les registres du micro-contrôleur directement (c'est ce que j'ai fait pour le projet PPUSBComm). C'est très bien pour apprendre et bien comprendre ce qui se passe, et aussi pour avoir les droits d'auteur afin de pouvoir être complètement libre quant à la manière de l'utiliser. Par contre, il faut être prêt à y passer beaucoup de temps.

goto top Retour en haut


Projets

Projets raphnet

ProjetDescription
Adaptateur manette Gamecube/N64 à USBLa troisième génération de mon adaptateur de manette N64/Gamecube à USB.
PPUSBCOMMPPUSBComm est un outil permettant de copier des fichiers depuis un système Linux doté d'un port USB vers un système tournant sous DOS via son port parallèle.

Projets usagers

Si vous avez publié un projet que vous avez réalisé sur ce PCB, faites moi en part!

goto top Retour en haut


FAQ

Si vous avez des questions, n'hésitez pas à m'écrire.

En attendant, voici quelques entrées anticipés:


goto top Retour en haut


Avertissement

Je ne saurais être tenu responsable pour les dommages que l'utilisation des informations ou la mise en œuvre des instructions présentées sur cette page pourrait causer à votre équipement, à vous-même ou à autrui. Aussi, je ne donne aucune garantie quant à l'exactitude des informations et à leur fonctionnement.

goto top Retour en haut


Les marques de commerce utilisées dans ce site appartiennent à leurs propriétaires respectifs.
Copyright © 2002-2017, Raphaël Assénat
Site codé avecSite codé avec vimDernière mise à jour: 18 Février 2016 (Jeudi)