Master SIAME | Université Toulouse 3

Internet of things and System on Chip

Master SIAME | Université Toulouse 3

Internet of things and System on Chip

User Tools


ADC

Comme vous pourrez le voir, l'ADC du TI AM335x est très de l'ADC d'ATMEL vu en cours. Déjà au niveau matériel, il n'accepte qu'un courant de 1,8V ce qui n'a pas rendu les choses simples pour brancher le sonar dessus (sortie de 3,3 à 5V). Notre solution actuelle basée sur un diviseur de tension n'est pas très satisfaisante et produit un courant beaucoup plus affaibli qu'attendu (en raison de problème d'impédance entre notre diviseur et le BagleBone). Le signal est très déformé dans les basses tension.

Quoi qu'il en soit, l'idée est que les différents canaux de l'ADC sont programmés et quand l'ADC est lancé, il échantillonne chacun des canaux. Les registres d'échantillonnage ont également une largeur de 10-bits. Par contre, l'ADC de l'AM-335x permet une programmation beaucoup plus fine de l'échantillonnage qui ne devrait pas nous être utile ici. Entre autre, l'action d'échantillonnage est divisée en step programmable configurable séparément. Chaque step va stocker le résultat de l'échantillonage dans la FIFO0.

Voici la liste des registres intéressants de l'ADC :

  • ADC_CTRL - contrôle de l'ADC (dont le bit ENABLE pour démarre un échantillonage),
  • ADC_STEPENABLE – activation des steps à réaliser,
  • ADC_FIFO0COUNT – nombre d'échantillons dans la FIFO0,
  • ADC_FIFO0DATA – adresse de base donnant les échantillons de la FIFO0.
  • ADC_STEPCONFIGi – configuration step i (source d'échantillonage),
  • ADC_STEPDELAYi – période step i.

Attention ! Pour pouvoir changer les registres de step, il faut d'abord mettre à 1 le bit STEPCONFIG_WRITE_PROTECT_N_ACTIVE du registre ADC_CTRL.

Il est bien sûr conseillé, pour des raisons de rapidité, de programmer directement les registres matériels en mémoire. L'adresse de base est 0x44E0D000 et la taille du bloc de registres est 8Ko.

En ce qui concerne les entrées de l'ADC, nous avons:

  • AIN0 – sonar,
  • AIN1 – batterie (en projet).

Nous ne l'avons pas testé mais il doit être possible de programmer un sur-échantillonage pour ensuite faire une moyenne et atténuer les erreurs de mesure: par exemple, on peut lancer un échantillonage chaque ms pendant 10 ms. On obtient alors 10 échantillons dont on peut faire la moyenne (par exemple).