Skip to content
Snippets Groups Projects
Commit 771e3244 authored by Berk Silemek's avatar Berk Silemek
Browse files

The script to run the transmitter to produce 297MHz sinusoidal output that are...

The script to run the transmitter to produce 297MHz sinusoidal output that are synced by using star-hub system in 2 transmitter m4i cards 
parent a0918bc2
No related branches found
No related tags found
Loading
#include "../c_header/dlltyp.h"
#include "../c_header/regs.h"
#include "../c_header/spcm_drv.h"
#include "../c_header/spcerr.h"
#include <stdio.h>
void m4iset_(int16 *pvData, int16 *pvData1, int32 *lMemsize)
{
drv_handle hDrv;
drv_handle hDrv1;
drv_handle hSync;
char szErrorText[ERRORTEXTLEN];
int32 lCardType;
int32 allchan;
int32 ausgabe;
int64 lSamplerate;
uint32 dwXMode;
// hDrv = spcm_hOpen ("/dev/spcm0");
// hDrv1 = spcm_hOpen ("/dev/spcm1");
hDrv = spcm_hOpen ("/dev/spcm1");
hDrv1 = spcm_hOpen ("/dev/spcm2");
hSync = spcm_hOpen ("sync0");
if (!hSync)
{
printf("Error Star-Hub\n");
spcm_vClose (hSync);
}
spcm_dwSetParam_i64 (hDrv, SPC_M2CMD, M2CMD_CARD_RESET);
spcm_dwSetParam_i64 (hDrv1, SPC_M2CMD, M2CMD_CARD_RESET);
spcm_dwSetParam_i32 (hSync, SPC_SYNC_ENABLEMASK, 0x0003);
spcm_dwSetParam_i32 (hDrv, SPC_TRIG_ORMASK, SPC_TM_NONE);
spcm_dwSetParam_i32 (hDrv1, SPC_CLOCKMODE, SPC_CM_INTPLL);
// spcm_dwSetParam_i64 (hDrv1, SPC_SAMPLERATE,625000000);
spcm_dwSetParam_i64 (hDrv1, SPC_SAMPLERATE,400000000);
spcm_dwSetParam_i32 (hDrv1, SPC_CLOCKOUT, 1); // enable clock output
// spcm_dwSetParam_i32 (hDrv, SPC_CLOCKMODE, SPC_CM_INTPLL);
// spcm_dwSetParam_i64 (hDrv, SPC_SAMPLERATE,625000000);
spcm_dwSetParam_i64 (hDrv, SPC_SAMPLERATE,400000000);
// spcm_dwSetParam_i32 (hDrv, SPC_CLOCKOUT, 1); // enable clock output
spcm_dwSetParam_i32 (hDrv, SPCM_X2_MODE, SPCM_XMODE_TRIGOUT);
spcm_dwSetParam_i32 (hDrv1, SPCM_X2_MODE, SPCM_XMODE_TRIGOUT);
// spcm_dwSetParam_i32 (hDrv1, SPCM_X2_MODE, SPCM_XMODE_CONTOUTMARK);
// spcm_dwGetParam_i32 (hDrv1, SPCM_X1_AVAILMODES, &ausgabe);
// printf ("available modes = %d\n", ausgabe);
spcm_dwGetParam_i64 (hDrv1, SPC_SAMPLERATE, &lSamplerate);
printf ("Sample rate = %d\n", lSamplerate);
// printf ("first sample = %d\n", pvData[0]);
// printf ("first sample = %d\n", pvData1[0]);
// dwXMode = (SPCM_XMODE_DIGOUT | SPCM_XMODE_DIGOUTSRC_CH1 | SPCM_XMODE_DIGOUTSRC_BIT15);
// spcm_dwSetParam_i32 (hDrv1, SPCM_X1_MODE, dwXMode);
// spcm_dwGetParam_i32 (hDrv1, SPCM_X1_MODE, &ausgabe);
// printf ("actual X0 mode = %d\n", ausgabe);
spcm_dwSetParam_i32 (hDrv, SPC_CHENABLE, CHANNEL0|CHANNEL1|CHANNEL2|CHANNEL3);
// dwXMode = (SPCM_XMODE_DIGOUT | SPCM_XMODE_DIGOUTSRC_CH0 | SPCM_XMODE_DIGOUTSRC_BIT15);
// spcm_dwSetParam_i32 (hDrv, SPCM_X0_MODE, dwXMode);
// spcm_dwGetParam_i32 (hDrv, SPCM_X0_MODE, &ausgabe);
// printf ("actual X0 mode = %d\n", ausgabe);
spcm_dwSetParam_i32 (hDrv, SPC_ENABLEOUT0, 1);
spcm_dwSetParam_i32 (hDrv, SPC_AMP0, 1000);
spcm_dwSetParam_i32 (hDrv, SPC_FILTER0, 0);
spcm_dwSetParam_i32 (hDrv, SPC_ENABLEOUT1, 1);
spcm_dwSetParam_i32 (hDrv, SPC_AMP1, 1000);
spcm_dwSetParam_i32 (hDrv, SPC_FILTER1, 0);
spcm_dwSetParam_i32 (hDrv, SPC_ENABLEOUT2, 1);
spcm_dwSetParam_i32 (hDrv, SPC_AMP2, 1000);
spcm_dwSetParam_i32 (hDrv, SPC_FILTER2, 0);
spcm_dwSetParam_i32 (hDrv, SPC_ENABLEOUT3, 1);
spcm_dwSetParam_i32 (hDrv, SPC_AMP3, 1000);
spcm_dwSetParam_i32 (hDrv, SPC_FILTER3, 0);
spcm_dwSetParam_i32 (hDrv1, SPC_CHENABLE, CHANNEL0|CHANNEL1|CHANNEL2|CHANNEL3);
// dwXMode = (SPCM_XMODE_DIGOUT | SPCM_XMODE_DIGOUTSRC_CH0 | SPCM_XMODE_DIGOUTSRC_BIT15);
// spcm_dwSetParam_i32 (hDrv1, SPCM_X0_MODE, dwXMode);
// spcm_dwGetParam_i32 (hDrv1, SPCM_X0_MODE, &ausgabe);
// printf ("actual X0 mode = %d\n", ausgabe);
spcm_dwSetParam_i32 (hDrv1, SPC_ENABLEOUT0, 1);
spcm_dwSetParam_i32 (hDrv1, SPC_AMP0, 1000);
spcm_dwSetParam_i32 (hDrv1, SPC_FILTER0, 0);
spcm_dwSetParam_i32 (hDrv1, SPC_ENABLEOUT1, 1);
spcm_dwSetParam_i32 (hDrv1, SPC_AMP1, 1000);
spcm_dwSetParam_i32 (hDrv1, SPC_FILTER1, 0);
spcm_dwSetParam_i32 (hDrv1, SPC_ENABLEOUT2, 1);
spcm_dwSetParam_i32 (hDrv1, SPC_AMP2, 1000);
spcm_dwSetParam_i32 (hDrv1, SPC_FILTER2, 0);
spcm_dwSetParam_i32 (hDrv1, SPC_ENABLEOUT3, 1);
spcm_dwSetParam_i32 (hDrv1, SPC_AMP3, 1000);
spcm_dwSetParam_i32 (hDrv1, SPC_FILTER3, 0);
// spcm_dwSetParam_i32 (hDrv, SPC_M2CMD, M2CMD_CARD_WRITESETUP);
// spcm_dwSetParam_i32 (hDrv1, SPC_M2CMD, M2CMD_CARD_WRITESETUP);
// spcm_dwSetParam_i32 (hDrv, SPCM_XX_ASYNCIO, 0);
// spcm_dwSetParam_i32 (hDrv, SPCM_XX_ASYNCIO, 1);
// spcm_dwSetParam_i32 (hDrv, SPCM_XX_ASYNCIO, 0);
spcm_dwSetParam_i32 (hDrv, SPC_CARDMODE, SPC_REP_STD_SINGLE);
spcm_dwSetParam_i32 (hDrv, SPC_MEMSIZE, *lMemsize);
spcm_dwSetParam_i32 (hDrv, SPC_LOOPS, 1); //60000
spcm_dwSetParam_i32 (hDrv1, SPC_CARDMODE, SPC_REP_STD_SINGLE);
spcm_dwSetParam_i32 (hDrv1, SPC_MEMSIZE, *lMemsize);
spcm_dwSetParam_i32 (hDrv1, SPC_LOOPS, 1);
spcm_dwDefTransfer_i64 (hDrv, SPCM_BUF_DATA, SPCM_DIR_PCTOCARD, 0, pvData, 0, 8* *lMemsize);
spcm_dwDefTransfer_i64 (hDrv1, SPCM_BUF_DATA, SPCM_DIR_PCTOCARD, 0, pvData1, 0, 8* *lMemsize);
spcm_dwSetParam_i32 (hDrv, SPC_M2CMD, M2CMD_DATA_STARTDMA | M2CMD_DATA_WAITDMA);
spcm_dwSetParam_i32 (hDrv1, SPC_M2CMD, M2CMD_DATA_STARTDMA | M2CMD_DATA_WAITDMA);
spcm_dwSetParam_i32 (hSync, SPC_M2CMD, M2CMD_CARD_START | M2CMD_CARD_FORCETRIGGER | M2CMD_CARD_WAITREADY);
if (spcm_dwGetErrorInfo_i32(hDrv,NULL,NULL,szErrorText) != ERR_OK)
{printf(szErrorText);
spcm_vClose (hDrv);
}
spcm_vClose (hDrv);
spcm_vClose (hDrv1);
spcm_vClose (hSync);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment