info@panadisplay.com
Réglage d'horloge interne FT800-FT801

Réglage d'horloge interne FT800-FT801

Nov 03, 2018

Réglage d'horloge interne FT800-FT801


Les contrôleurs vidéo FTDI FT800 et FT801 offrent une solution à faible coût pour les exigences graphiques intégrées. Outre les graphiques, les entrées à écran tactile et une sortie audio fournissent une interface homme-machine complète au monde extérieur.

Cette note d’application fournira une séquence de programmation expliquant comment ajuster l’horloge interne de la puce pour une précision accrue, afin que les applications puissent fonctionner sans cristal externe.

L'utilisation d'appareils FTDI dans des applications de réanimation et / ou de sécurité est entièrement aux risques de l'utilisateur, qui s'engage à défendre, indemniser et protéger FTDI de tout dommage, réclamation, poursuite ou dépense résultant d'une telle utilisation.


1. Introduction

Le FT800 / FT801 fonctionne comme un périphérique SPI ou I²C sur un processeur principal, offrant ainsi une expérience d’interface humaine peu coûteuse, mais complète, grâce à l’incorporation de fonctions de rendu graphique, de détection d’écran tactile et audio. Il est contrôlé via une interface SPI ou I2C à faible bande passante, ce qui permet d’utiliser pratiquement tous les microcontrôleurs.

Le FT800 / FT801 prend en charge l’horloge interne et externe.

opérations. L'horloge interne est un oscillateur à relaxation qui peut être ajusté par un registre pour une précision accrue, de sorte que, pour de nombreuses applications, une horloge ou un cristal externe n'est pas nécessaire.


Circuit 2 horloges

Les circuits d’horloge FT800 / FT801 comprennent une source d’horloge d’entrée et une PLL. La source d'horloge peut être sélectionnée

entre oscillateur à relaxation interne et oscillateur à cristal 12 MHz. La PLL va multiplier l'entrée

horloge par 4 (valeur par défaut) pour générer une horloge système nominale à 48 MHz, qui fournit l’horloge à tous les périphériques internes.

registres, mémoires et processeurs.

L’horloge de l’oscillateur de relaxation interne est comprise entre 4,46 et 12,11 MHz (non limitée) et peut être

coupé en écrivant dans le registre de coupe (REG_TRIM). Après avoir réglé l'horloge peut atteindre 12 MHz à

la précision de réglage de +/- 2,5%. La fréquence syntonisée peut varier de +/- 3% selon les pays.

température et tensions.

Le FT800 / FT801 dispose de 2 broches de sortie qui peuvent être utilisées pour surveiller et calculer l’horloge système.

la fréquence. La broche de sortie PCLK émettra une horloge dont la fréquence sera égale à fsys_clk / REG_PCLK.

(REG_PCLK programmé à une valeur nulle). Par exemple, supposons que REG_PCLK est programmé

à 5, et la fréquence de sortie PCLK est mesurée à 9,6 MHz, dans ce cas le fclk_sys = 5 *

9,6 MHz = 48 MHz.

Vous pouvez également calculer fclk_sys en mesurant la fréquence d'horloge sur la broche AUDIO_L. le

La broche AUDIO_L émet un signal PWM pour le signal audio mono. La fréquence du signal PWM est

fclk_sys / 512. Si la fréquence mesurée sur la broche AUDIO_L est de 93,75 kHz, alors fclk_sys = 512 *

93,75 kHz = 48 MHz.

Le circuit d'horloge FT800 / FT801 est illustré à la figure 2-1. Pour les applications utilisant la relaxation interne

horloge seulement, le cristal externe n'est pas nécessaire. Dans ce cas, la broche X1 / CLKIN doit être liée à GND.

et la broche X2 ne doit pas être connectée, comme indiqué à la Figure 2-2.

image

Figure 2-1 Circuit d'horloge FT800 / FT801

image

Figure 2-2 Connexion des broches du mode d'horloge interne

 

Séquence de réglage de 3 horloges

La fréquence de l'oscillateur de relaxation interne est déterminée par la valeur RC du circuit de l'oscillateur.

La résistance et le condensateur intégrés à la puce présentent un écart assez important dans le processus de plaquette. En accordant

la valeur RC effective à travers les registres, il est possible de régler la fréquence d’horloge pour des fréquences plus élevées.

précision.

3.1 Description utile du registre

Un certain nombre de registres sont impliqués dans les séquences d'ajustement de l'horloge. Cette section décrit

en détail la fonction de ces registres.

REG_TRIM

Le registre de trim REG_TRIM a 5 bits valides Trim [4: 0], ce qui permet un total de 32 réglages de trim. Défaut

est égal à 0. Lors de l’augmentation de la valeur du registre de trim, la valeur RC réelle de l’oscillateur diminue,

que la fréquence d'horloge augmente en conséquence.

REG_CLOCK

Ce registre 32 bits compte le nombre de cycles d'horloge principale FT800 / FT801 depuis la réinitialisation. En lisant

ce registre, le MCU hôte peut calculer la fréquence d'horloge principale en fonction du temporisateur précis

le MCU.

REG_FREQUENCY

Ce registre 32 bits stocke la valeur de la fréquence d'horloge principale actuelle. Le logiciel doit être mis à jour

ce registre une fois le réglage de l’horloge terminé.

3.2 Méthode de rognage

Lors de l’initialisation à la mise sous tension, le logiciel peut ajuster l’horloge interne de l’oscillateur de relaxation au minimum.

Valeur souhaitée. La valeur cible est 12 MHz, de sorte que l'horloge principale fonctionne à 48 MHz.

Une fois la puce mise en mode actif, l’horloge interne, PLL, s’allumera et le système

l'horloge principale sera disponible. REG_CLOCK commencera à compter chaque cycle d'horloge principale. En lisant

le REG_CLOCK deux fois dans un intervalle défini (c.-à-d. 1us basé sur l’horloge ou le temporisateur MCU), l’horloge principale

la fréquence peut être calculée. Si la fréquence mesurée est inférieure à la cible, augmentez le

valeur de REG_TRIM. Répétez cette opération jusqu'à ce que la fréquence mesurée se situe à +/- 3% de la

fréquence cible.

3.3 Séquences Détaillées

Les étapes suivantes fournissent une séquence de programmation détaillée pour ajuster l'horloge interne.

1. Après une réinitialisation matérielle (mise sous tension ou basculement de la broche PD_N), le FT800 / FT801 passe en STANDBY.

mode. L'horloge de l'oscillateur de relaxation interne est sélectionnée comme source d'horloge de la PLL.

L’horloge interne et la PLL sont allumées, mais l’horloge principale de la logique principale est

éteindre.

2. Mettez la puce en mode ACTIF en effectuant une opération de lecture fictive via l'interface hôte.

(SPI ou I2C).

3. Mesurer la fréquence d'horloge actuelle

une. Lire REG_CLOCK comme t0

b. Retarder 1us

c. Lire REG_CLOCK en tant que t1

ré. Calculer la fréquence d'horloge f = (t1-t0) / 1us

4. Si la fréquence mesurée f est inférieure à 48 MHz - 3%, augmentez le registre REG_TRIM de 1.

5. Répétez les étapes 3 et 4 jusqu'à ce que la fréquence mesurée se situe dans les 48MHz +/- 3%, ou le

REG_TRIM atteint déjà la valeur maximale de 31 (ce qui est peu probable car le détourage

la plage est définie pour pouvoir régler l'horloge sur la cible)

6. Ecrivez la dernière fréquence mesurée f dans REG_FREQUENCY

Voici l'exemple de code C pour le réglage de l'horloge interne, utilisé par l'application Gameduinuo 2:

/ ************************************************* *******

#define REG_CLOCK 0x102408

uint32_t GDClass :: measure_freq (void)

{

unsigned long t0 = GDTR.rd32 (REG_CLOCK);

delayMicroseconds (15625);

unsigned long t1 = GDTR.rd32 (REG_CLOCK);

return (t1 - t0) <>

}

#define REG_TRIM 0x10256C

#define REG_FREQUENCY 0x10240C

#define LOW_FREQ_BOUND 47040000UL

void GDClass :: tune (void)

{

non signé char i = 0;

uint32_t f;

pour (octet i = 0; (i <31) &&="" ((f="mesure_freq" ())="">

GDTR.wr (REG_TRIM, i);

GDTR.wr32 (REG_FREQUENCY, f);

}

Comme REG_TRIM sera réinitialisé à 0 chaque fois qu’une réinitialisation matérielle se produit, il est nécessaire d’effectuer

la séquence d'ajustement de l'horloge dans la routine d'initialisation de réinitialisation.