bandeau

Programmer l'AD9850

Plutôt que de réinventer la roue, pour ceux qui seraient intéressés par la programmation de l'AD9850 en assembleur j'ai fais un petit programme démo simple, à chacun de l'étoffer ensuite suivant les besoins. On peut envoyer le mot binaire en // ou en série, ici j'ai fais mes essais en // pour simplifier la lecture du programme démo. Formule pour calculer le mot binaire en fonction de la fréquence voulue: mot=(Fq choisie .2^32)/Fq DDS Mon module AD9850 est cadencé à 125Mhz. Exemple pour une fréquence de 7012Khz: ((7.012 . 2^32)/125)= 240930485 = 0x000E5C4EB5 C'est ce nombre hexa 0X 00 0E 5C 4E B5 qu'on va envoyer au module en 5 salves de 8 bits en partant du MSB. Après l'envoi de chaque octet on fera un front montant sur W_CLK pour valider, et après le 5eme on validera la fréquence en effectuant un front montant sur Fq_ud. Important: toujours mettre l'octet 5 ( MSB) à 0x00, il sert à des tests d'usine et en y mettant des valeurs aléatoires on risque de bloquer l'AD9850, se reporter au datasheet pour plus d'explications. Chronologie: init AD9850: pin reset=0 pin Fq_ud=0 pin w_clk=0 envoi du mot binaire chargement du mot5: 0x00 w_clk=1 w_clk=0 chargement du mot4: 0x0E w_clk=1 w_clk=0 chargement du mot3: 0x5C w_clk=1 w_clk=0 chargement du mot2: 0x4E w_clk=1 w_clk=0 chargement du mot1: 0xB5 w_clk=1 w_clk=0 Validation du mot de 40 bits et génération de la fréquence Fq_ud=1 Fq_ud=0 Ci-dessous la boucle se déroule sans fin pour des facilités de lecture, dans la vraie vie un seul réglage est suffisant pour générer la frq tant que l'AD9850 est sous tension.





retour