Outils pour utilisateurs

Outils du site


votre temps local: :: ()

heure officielle (en France) : ::(TZ:)

Heure UTC client: :: Offset client: s - delai: ms - - timeZone: Heure UTC: ::
fr:dds

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
fr:dds [2016/03/02 10:44]
fwiotte [Direct Digital Synthesizer]
fr:dds [2018/03/23 14:39] (Version actuelle)
fwiotte [Les dernières applications DDS au LPL]
Ligne 10: Ligne 10:
 [[fr: Exemple de développement autour d'un DDS l'​AD9959]] [[fr: Exemple de développement autour d'un DDS l'​AD9959]]
  
 +[[fr: programmes en C pour communiquer avec le DDS]]
  
- +[[frNouveau développement 2018-> double ​DDS 8 sorties ​pour piège RF programmation QSPI]] 
- +===== Un schéma de base avec l'​AD9959 =====
- +
-======Les différents registres d'​un ​ DDSl'​AD9959====== +
-Le premier registre à programmer est le registre CSR: table 28 du datasheet  +
-      registre CSR (channel select register)  +
-      One byte is assigned to this register: ​ nombre d'​octets du registre  +
-      CSR serial address = 0x00;  +
-      CSR defaut value = 0xF0;  +
-Ce registre active les voies de sorties et les modes SPI: +
-Par défaut tous les voies sont activées et le mode SPI Single-bit serial 2-wire est sélectionné. +
-Il est évidemment possible de redéfinir ce registre suivant son application. +
- +
-Le second registre est le registre FR1: table 28 du datasheet  +
-      registre FR1 (fonction register 1)  +
-      three bytes is assigned to this register: nombre d'​octets du registre  +
-      FR1 serial address = 0x01;  +
-      FR1 defaut value = 0x00;  +
-Ce registre permet en autres de définir la PLL interne et le coefficient multiplicateur x4 à x20. +
-Pour exemple la valeur à fournir pour activer la PLL x20 =FR1 = 0xD00000; +
-Dans ce cas il suffit de fournir un quartz à 25MHz avec la PLL activée x20 on a 500MHz d'​horloge PIN 22 et 23 du DDS+
- +
-Le troisième registre est  le registre CFR table 29 du datasheet  +
-      registre CFR (Channel Function Register)  +
-      three bytes is assigned to this register: nombre d'​octets du registre  +
-      CFR serial address = 0x03;  +
-      CFR defaut value =0x302;  +
-Ce registre défini les différents mode de fonctionnement du DDS.Ce registre est important si vous utiliser +
-certains modes de fonctionnement:​ balayage de fréquence, de phase, ou d'​amplitude. +
-Important par défaut les sortie sont en mode DAC full-scale current. +
- +
-Le quatrième registre est le registre CFTW0: table 29 du datasheet  +
-      registre CFTW0 (Channel Frequency Tuning Word 01)  +
-      four bytes is assigned to this register: nombre d'​octets du registre  +
-      CFTW0 serial address = 0x04;  +
-      CFTW0 defaut value =0x00;  +
-Ce registre permet de rentrer la fréquence désirée suivant la relation ci-dessous:​ +
-      FTW0 = frequency output x 2^32 /frequency clock +
-           +
-Le cinquième registre est le registre CPOW0 table 29 du datasheet  +
-      registre CPOW0 (Channel Phase Offset Word 01)  +
-      two bytes is assigned to this register: ​ nombre d'​octets du registre  +
-      CPOW0 serial address = 0x05;  +
-      CPOW0 defaut value =0x00;  +
-Ce registre définie la phase du signal de sortie codé sur 14 bits avec la relation ci-dessous:​ +
-      CPOW0 = Delta phi x 2^14 /360° +
-            +
-Le sixième registre est le registre ACR: table 29 du datasheet  +
-      registre ACR (Amplitude Control Register) +
-      two bytes is assigned to this register: ​ nombre d'​octets du registre  +
-      ACR serial address = 0x06;  +
-      ACR defaut value =0x00;  +
-Ce registre permet de définir l'​amplitude. +
-Par défaut l'​amplitude est en mode full scale mais programmable si on modifie le registre CFR. +
- +
-Les autres registres sont utiles pour programmer le DDS pour des balayages de fréquences,​ de phases et d'​amplitudes en autres. +
-      Registre FR2 (Function Register 2) +
-      Registre LSRR (Linear Sweep Ramp Rate1) +
-      Registre FDW (LSR Falling delta Word1)  +
-      Registre RDW (LSR Risingdelta Word1) +
-      Registre CW1 (Channel Word 1) +
-      ... +
-**Exemple de programme en C écrit dans le microcontrôleur MSP430F169** +
- +
-initialisation et chargement des registres CSR et CFTW0: +
- +
-      int  CSR_ADDRESS = 0x00;   ​AD9959 CSR adresss Byte +
-      int CSR_NUM_BYTE = 0x01;   CSR nombre d'​octet du registre +
-      long CSR0 = 0x10;          AD9959 du channel 0 MSB first SPI par défaut +
-          +
-      int  FTW_ADDRESS = 0x04;   ​AD9959 FTW adresss Byte +
-      int FTW_NUM_BYTE = 0x04;   FTW nombre d'​octet du registre +
-      long FTW0 = 0x28F5C28F; ​   frequence en hex fout x2^32/​fclock +
-          +
-dans le main: +
-      P4OUT = 0x40;          AD9959 master reset bit de validation du MSP430 +
-      P4OUT = 0x00;          AD9959 master set   bit de validation du MSP430 +
-       +
-      write_serial_port(CSR_ADDRESS,​ CSR0, CSR_NUM_BYTE);​ +
-      P5OUT = 0x40;          I/O update du DDS bit de validation du MSP430  +
-      P5OUT = 0x00;          I/O update du DDS bit de validation du MSP430 ​  +
-       +
-      write_serial_port(FTW_ADDRESS,​ FTW0, FTW_NUM_BYTE);​ +
-      P5OUT = 0x40;          I/O update du DDS bit de validation du MSP430  +
-      P5OUT = 0x00;          I/O update du DDS bit de validation du MSP430 ​  +
- +
- +
-**Commentaires sur le programme:​** +
- +
-on fait un RESET du DDS (pin 3), on charge les données de chaque registre au travers du port SPI write_serial_port... +
-Puis on réalise un I/O UPDATE pin 46 du DDS pour la validation et le transfert des données. +
-Ce bout de programme permet de charger le channel 0 avec une fréquence de 80MHz et une amplitude par défaut FULL DAC. +
- +
-I/O_UPDATE is synchronous to the SYNC_CLK (Pin 54) = Master clock/4. +
-Voir figure 40 du datasheet du DDS. +
- +
-Ci-dessous le sous programme d'​initialisation des ports du microcontrôleur et du SPI pour le MSP430F169 : TI fourni de nombreux exemples de codes de bases pour configurer les modes SPI, I2C et utiliser la mémoire Flash: {{:​fr:​slac015p.zip|}} +
-       +
-      #​include ​ <​msp430x16x.h>​ +
-      void DDS_quartz_oscillator_init(void) +
-      { +
-        BCSCTL1 |= XTS;               ACLK= LFXT1= HF XTAL  +
-        BCSCTL2 |= SELM_3; ​           MCLK = LFXT1 (safe) pin 8,9 du MSP430 +
-        P1SEL = 0x00;                 P1 I/O select +
-        P2SEL = 0x00;                 P2 I/O select +
-        P3SEL = 0x00;                 P3 I/O select +
-        P4SEL = 0x00;                 P4 I/O select +
-        P5SEL = 0x0A;                 ​P5.1,​3 SPI option select +
-        P6SEL = 0x00;                 P6 I/O select +
-        P1DIR = 0xFF;                 ​P1.output direction +
-        P2DIR = 0xFF;                 P2 output direction +
-        P3DIR = 0xFF;                 P3 output direction +
-        P4DIR = 0xFF;                 P4 output direction +
-        P5DIR = 0xFF;                 P5 output direction +
-        P6DIR = 0xFF;                 P6 output direction +
-        ME2 |= USPIE1; ​               Enable USART1 SPI +
-        UCTL1 |= CHAR + SYNC + MM;    8-bit SPI Master **SWRST** +
-        UTCTL1 = CKPH + SSEL1 + STC;  SMCLK delayed, 3-pin +
-        UBR01 = 0x2;                  ACLK/2 for baud rate +
-        UBR11 = 0x0;                  ACLK/2 for baud rate +
-        UMCTL1 = 0x0;                 Clear modulation +
-        UCTL1 &= ~SWRST; ​             Initialize USART state machine +
-      } +
- +
-BCSCTL1 |= XTS; et BCSCTL2 |= SELM_3; ​ permet d'​être en mode HF XTAL le MSP430 fonctionnera à 8MHZ au lieu +
-de 32KHz par défaut. +
-               ​MSP430F169 +
-             ​----------------- +
-         /​|\| ​             XIN|- +
-          | |                 | HF XTAL (455k - 8Mhz) +
-          --|RST ​         XOUT|- +
-            |                 | +
-            |             ​P5.4|-->​MCLK = XTAL +
- +
-D'​après : +
-//  M. Buccini +
-//  Texas Instruments Inc. +
-//  Feb 2005 +
-//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.21A    +
-   +
-la routine ​pour le chargement des données en mode SPI du MSP430F169 : +
- +
-        void write_serial_port(int instruction,​ long data, int num_byte) +
-        { +
-         int i=0; +
-   +
-         ​TXBUF1 = instruction;​ +
-          do +
-         { +
-         ​TXBUF1 = data >>​(num_byte-1-i)*8;​ +
-         ​i++;​ +
-         } +
-          while (i < num_byte);​ +
-        } +
-la routine pour le chargement des données en mode SPI de l'ARM TM4C123GH6PM : +
- +
-   int i=0; +
-   ​SSI0_DR_R =  instruction;​  +
-    while( num_byte ) +
-     { +
-          while(!(SSI0_SR_R & SSI_SR_TNF)) {} // SPI0 du TM4C123GH6PM +
-          SSI0_DR_R =  data >>​(num_byte-1-i)*8;​ +
-          num_byte--; ​           +
-     } +
-     +
-    while( !( SSI0_SR_R & SSI_SR_TNF ) ) +
-          { +
-            ; +
-          } +
-La routine init (SPI) pour l'ARM TM4C123GH6PM:​  +
- +
-    // Enable Peripheral SSI0 +
-    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);​ //Enable GPIO port A SSI0. +
-    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);​ +
-    GPIOPinConfigure(GPIO_PA2_SSI0CLK);​  +
-    GPIOPinConfigure(GPIO_PA3_SSI0FSS);​ +
-    GPIOPinConfigure(GPIO_PA5_SSI0TX);​ +
-    GPIOPinTypeSSI(GPIO_PORTA_BASE,​ GPIO_PIN_5 | GPIO_PIN_3 | GPIO_PIN_2);​ +
-    //​GPIOPinTypeSSI(GPIO_PORTA_BASE,​ GPIO_PIN_5 | GPIO_PIN_2);​ +
-    SSIConfigSetExpClk(SSI0_BASE,​ SysCtlClockGet(),​ SSI_FRF_MOTO_MODE_0,​ +
-    SSI_MODE_MASTER,​ 10000000, 8); +
-    SSIEnable(SSI0_BASE);​ // Enable the SSI  +
-Exemple d'​initialisation d'un PORT sur l'ARM TM4C123GH6PM ​    +
-  //void PortB_Init(void) +
-  volatile unsigned long delay; +
-  SYSCTL_RCGC2_R |= 0x00000002; ​    // 1) activate clock for Port B +
-  delay = SYSCTL_RCGC2_R; ​          // allow time for clock to start +
-  GPIO_PORTB_AMSEL_R = 0x00;        // 3) disable analog on PB +
-  GPIO_PORTB_PCTL_R = 0x00000000; ​  // 4) PCTL GPIO on PB0 +
-  GPIO_PORTB_DIR_R |= 0xFF;         // 5) PB0-PB7 is out +
-  //​GPIO_PORTB_AFSEL_R &= ~0x01; ​     // 6) disable alt funct on PB0 +
-  GPIO_PORTB_AFSEL_R &= ~0xFF; ​     // 6) disable alt funct on PB0-PB7 +
-  GPIO_PORTB_DEN_R |= 0xFF;         // 7) enable digital I/O on PB0-PB7 +
- +
-====== Un schéma de base avec l'​AD9959 ​======+
 Parce qu'un schéma vaut mieux qu'un long discours! Parce qu'un schéma vaut mieux qu'un long discours!
 Cette carte est générique,​ et grâce au port SPI sur la carte on Cette carte est générique,​ et grâce au port SPI sur la carte on
Ligne 212: Ligne 20:
 {{:​fr:​carte_ad9959.png?​200|}} {{:​fr:​carte_ad9959.png?​200|}}
  
-====== La carte électronique pour l'​habillage du piège RF=====+==== La carte électronique pour l'​habillage du piège RF====
 ===== BEC de Rubidium ====== ===== BEC de Rubidium ======
 {{:​fr:​dds_ad9959_bec.pdf|}} {{:​fr:​dds_ad9959_bec.pdf|}}
Ligne 235: Ligne 43:
 Document complet Document complet
 {{:​fr:​cartes_dds_ad9858_et_ad9852_sur_carte_ni_dio_32hs.pdf|}} {{:​fr:​cartes_dds_ad9858_et_ad9852_sur_carte_ni_dio_32hs.pdf|}}
-====== Le programme sous windows avec interface CVI ======+===== Le programme sous windows avec interface CVI ===== 
 + 
 +Une routine sous Windows CVI à été développée avec une liaison USB-Série (un pont USB)  
 +pour charger les données via un PC.
  
-Une routine sous Windows CVI à été développée avec une liaison USB-Série (un pont USB). 
 Ci-dessous le programme en C dans le microcontrôleur qui permet le transfert des données à une vitesse maximale de 1Mb Ci-dessous le programme en C dans le microcontrôleur qui permet le transfert des données à une vitesse maximale de 1Mb
   data1 => données séries venant du pont USB-serial.puce FTDI    data1 => données séries venant du pont USB-serial.puce FTDI 
Ligne 273: Ligne 83:
  
 {{:​fr:​20151027electroniqueatomesfroidslpl2-a0.pdf|}} {{:​fr:​20151027electroniqueatomesfroidslpl2-a0.pdf|}}
 +
 +{{ :​fr:​geneyig.pdf |}}
 +
 +{{ :​fr:​notebusdds.pdf |}}
 +
 +
fr/dds.1456911845.txt.gz · Dernière modification: 2016/03/02 10:44 par fwiotte