votre temps local: ??:??:?? (??)
heure officielle (en France) : ??:??:??(TZ:??)
?? ?? ?? ?? Heure UTC client: ?? ?? ?? ?? ??:??:?? Offset client: ?? s - delai: ?? ms - (synchro en cours) - timeZone: ?? ?? ?? ?? ?? Heure UTC: ?? ?? ?? ?? ??:??:??Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
fr:programmes_pour_communiquer_avec_le_dds [2016/03/04 10:22] fwiotte |
fr:programmes_pour_communiquer_avec_le_dds [2016/03/04 10:46] (Version actuelle) fwiotte |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | Interface avec un microcontrôleur TI: le MSP430 | + | ===Interface avec un microcontrôleur TI: le MSP430=== |
Exemple de programme en C écrit dans le microcontrôleur MSP430F169 | Exemple de programme en C écrit dans le microcontrôleur MSP430F169 | ||
Ligne 32: | Ligne 32: | ||
==Commentaires sur le programme== | ==Commentaires sur le programme== | ||
- | Pour initialiser le DDS on applique cette procédure : RESET-DATA SEND-IO_UPDATE. | + | Pour initialiser le DDS on applique cette procédure : RESET-DATA_SEND_to_BUFFER-IO_UPDATE. |
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. | 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. | ||
Ligne 89: | Ligne 90: | ||
while (i < num_byte); | while (i < num_byte); | ||
} | } | ||
- | Interface avec un microcontrôleur ARM TI: le TM4C123GH6PM | + | ===Interface avec un microcontrôleur ARM TI: le TM4C123GH6PM=== |
Exemple de programme en C écrit dans le microcontrôleur ARM TM4C123GH6PM | Exemple de programme en C écrit dans le microcontrôleur ARM TM4C123GH6PM | ||
Ligne 99: | Ligne 100: | ||
la routine pour le chargement des données en mode SPI de l'ARM TM4C123GH6PM : | la routine pour le chargement des données en mode SPI de l'ARM TM4C123GH6PM : | ||
- | int i=0; | + | |
- | SSI0_DR_R = instruction; | + | int i=0; |
+ | SSI0_DR_R = instruction; | ||
while( num_byte ) | while( num_byte ) | ||
{ | { | ||
Ligne 112: | Ligne 114: | ||
; | ; | ||
} | } | ||
+ | | ||
La routine init (SPI) pour l'ARM TM4C123GH6PM: | La routine init (SPI) pour l'ARM TM4C123GH6PM: | ||
Ligne 126: | Ligne 129: | ||
SSIEnable(SSI0_BASE); // Enable the SSI | SSIEnable(SSI0_BASE); // Enable the SSI | ||
| | ||
- | Exemple d'initialisation d'un PORT sur l'ARM TM4C123GH6PM | + | Exemple d'initialisation d'un PORT sur l'ARM TM4C123GH6PM: |
- | //void PortB_Init(void) | + | |
- | volatile unsigned long delay; | + | //void PortB_Init(void) |
- | SYSCTL_RCGC2_R |= 0x00000002; // 1) activate clock for Port B | + | volatile unsigned long delay; |
- | delay = SYSCTL_RCGC2_R; // allow time for clock to start | + | SYSCTL_RCGC2_R |= 0x00000002; // 1) activate clock for Port B |
- | GPIO_PORTB_AMSEL_R = 0x00; // 3) disable analog on PB | + | delay = SYSCTL_RCGC2_R; // allow time for clock to start |
- | GPIO_PORTB_PCTL_R = 0x00000000; // 4) PCTL GPIO on PB0 | + | GPIO_PORTB_AMSEL_R = 0x00; // 3) disable analog on PB |
- | GPIO_PORTB_DIR_R |= 0xFF; // 5) PB0-PB7 is out | + | GPIO_PORTB_PCTL_R = 0x00000000; // 4) PCTL GPIO on PB0 |
- | //GPIO_PORTB_AFSEL_R &= ~0x01; // 6) disable alt funct on PB0 | + | GPIO_PORTB_DIR_R |= 0xFF; // 5) PB0-PB7 is out |
- | GPIO_PORTB_AFSEL_R &= ~0xFF; // 6) disable alt funct on PB0-PB7 | + | //GPIO_PORTB_AFSEL_R &= ~0x01; // 6) disable alt funct on PB0 |
- | GPIO_PORTB_DEN_R |= 0xFF; // 7) enable digital I/O on PB0-PB7 | + | 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 | ||
+ | |||
+ | |||
Exemple d'initialisation d'un PORT pour la communication série USB-UART0 sur l'ARM TM4C123GH6PM: | Exemple d'initialisation d'un PORT pour la communication série USB-UART0 sur l'ARM TM4C123GH6PM: | ||
- | //void init_UART0(void) | + | //void init_UART0(void) |
- | SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); | + | SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); |
- | SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); | + | SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); |
- | GPIOPinConfigure(GPIO_PA0_U0RX); | + | GPIOPinConfigure(GPIO_PA0_U0RX); |
- | GPIOPinConfigure(GPIO_PA1_U0TX); | + | GPIOPinConfigure(GPIO_PA1_U0TX); |
- | GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); | + | GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); |
- | UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 9600, | + | UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 9600, |
- | (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE)); | + | (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE)); |
+ | |||
+ | | ||
Exemple de déclaration et d'initialisation des registres mot de fréquences: | Exemple de déclaration et d'initialisation des registres mot de fréquences: | ||
- | + | //AD9852// | |
- | //AD9852// | + | int FTW0_ADRESS = 0x02; |
- | int FTW0_ADRESS = 0x02; | + | //unsigned long long FTW0 = 0x17E4B17E4B1; //1.75MHz@300MHz clk |
- | //unsigned long long FTW0 = 0x17E4B17E4B1; //1.75MHz@300MHz clk | + | unsigned long long FTW0; |
- | unsigned long long FTW0; | + | //float FTW0 = 0x17E4B17E4B1; //1.75MHz@300MHz clk |
- | //float FTW0 = 0x17E4B17E4B1; //1.75MHz@300MHz clk | + | int FTW0_NUM_BYTE = 0x06; |
- | int FTW0_NUM_BYTE = 0x06; | + | //AD9858// |
- | //AD9858// | + | int FTW1_ADRESS = 0x03; |
- | int FTW1_ADRESS = 0x03; | + | unsigned long FTW1 = 0x418937; //1MHz@1000MHz clk |
- | unsigned long FTW1 = 0x418937; //1MHz@1000MHz clk | + | int FTW1_NUM_BYTE = 0x04; |
- | int FTW1_NUM_BYTE = 0x04; | + | //AD9858// |
- | //AD9858// | + | int CFR_ADRESS = 0x00; |
- | int CFR_ADRESS = 0x00; | + | unsigned long CFR = 0x79; // MSB first |
- | unsigned long CFR = 0x79; // MSB first | + | int CFR_NUM_BYTE = 0x04; |
- | int CFR_NUM_BYTE = 0x04; | + |