« Projet DDS » : différence entre les versions
Ligne 116 : | Ligne 116 : | ||
Nécessite un signal d’horloge externe 10MHz 5dBm. | Nécessite un signal d’horloge externe 10MHz 5dBm. | ||
Une sortie RF (AD9858) programmable 0-400MHz 0dBm. | Une sortie RF (AD9858) programmable 0-400MHz 0dBm. | ||
Version du 12 octobre 2024 à 11:33
Programme Python pour la liaison USB-Série : Pour charger les fréquences et les amplitudes des sorties RF j'ai utilisé Pyserial et Python 3.7
Ci-dessous le code Python éditer avec l'IDE Thonny ( pour les débutants comme moi c'est pas mal ;) !)
il suffit d'installer Python 3.7 puis d'importer la bibliothèque PySerial.
IMPORTANT : le code c pour transmettre et recevoir les données via l'UART ci-dessous un exemple:
void write_immediate() //AD9959
{
//frequency DDS0//
frequency_value_f1_DDS0 = temp[3]<<24|temp[2]<<16|temp[1]<<8|temp[0];
FTW0_DDS0 = frequency_value_f1_DDS0 * 4294967296 / 500000000; //Convert to command for DDS //ad9959
frequency_value_f2_DDS0 = temp[7]<<24|temp[6]<<16|temp[5]<<8|temp[4];
FTW1_DDS0 = frequency_value_f2_DDS0 * 4294967296 / 500000000; //Convert to command for DDS //ad9959
frequency_value_f3_DDS0 = temp[11]<<24|temp[10]<<16|temp[9]<<8|temp[8];
FTW2_DDS0 = frequency_value_f3_DDS0 * 4294967296 / 500000000; //Convert to command for DDS //ad9959
frequency_value_f4_DDS0 = temp[15]<<24|temp[14]<<16|temp[13]<<8|temp[12];
FTW3_DDS0 = frequency_value_f4_DDS0 * 4294967296 / 500000000; //Convert to command for DDS //ad9959
....
}
//*****************************************************************************
//
// The UART interrupt handler.
//
//*****************************************************************************
void UARTIntHandler(void)
{
uint32_t ui32Status;
ui32Status = UARTIntStatus(UART0_BASE, true);
UARTIntClear(UART0_BASE, ui32Status);
while(UARTCharsAvail(UART0_BASE)) //loop while there are chars
{
//send data to uC via USB/Uart for change one output frequency ( 4 octets)
temp[t++] = UART0_DR_R; //Read from buffer
if(t >...)
{
write_immediate();
t = 0; //Reset read length
}
}
}
Code Python: Fichier:Code python.pdf Ci-dessous Code Python avec l'interface graphique Fichier:Code python avec l'interface numérique.pdf
Projet condensat STRONTIUM antenne RF 375-400MHz
Projet Antenne RF: RF CARD 375 to 400MHz Frequency Sweep control for RF antenna. Le but est de générer des sweeps de fréquence arbitraire pour une antenne RF dans la gamme de fréquence 375 à 400 MHz avec des pas de qqs KHz. J'utilise deux DDS , l'AD9911 pour asservir un VCO ultra low noise à 1GHZ (ROS-1000-519+) minicircuits et le second l'AD9858 pour générer les fréquences arbitraires. Ce dernier est “clocké” grâce au 1GHz provenant du VCO sur la carte. J'utilise également le MSP430F169 pour piloter les deux DDS en mode SPI 2wire single bit (bus SPI commun, un master et deux slaves en utilisant le chip select (CS) de chaques DDS).
Caractéristiques Programmation en mode SPI maître-esclave 2-wire mode single-bit. L’AD9911 et l’AD9858 en mode esclaves via les Chip Select (CS). Horloge commune le ROS-1000C-519@1GHz. Pente de la rampe de fréquence programmée via l’interface CVI. TTL externe commande rampe up et rampe down. Nécessite un signal d’horloge externe 10MHz 5dBm. Une sortie RF (AD9858) programmable 0-400MHz 0dBm.