formatted

This commit is contained in:
Gatsby Van
2024-02-20 17:40:18 +08:00
parent 6d08ee216a
commit 597ea2c7cd
3 changed files with 553 additions and 501 deletions
+196 -157
View File
@@ -1,5 +1,4 @@
/***************************************************************************//** /******************************************************************************* * @file ad9371/src/app/headless.c
* @file ad9371/src/app/headless.c
* @brief Implementation of Main Function. * @brief Implementation of Main Function.
******************************************************************************** ********************************************************************************
* Copyright 2017(c) Analog Devices, Inc. * Copyright 2017(c) Analog Devices, Inc.
@@ -66,7 +65,8 @@ int HARDWARE_initialize()
Status = HARDWARE_ad9371Config(); Status = HARDWARE_ad9371Config();
if (Status != ADIERR_OK){ if (Status != ADIERR_OK)
{
return ADIERR_FAILED; return ADIERR_FAILED;
} }
@@ -75,11 +75,11 @@ int HARDWARE_initialize()
// /**********************************************************/ // /**********************************************************/
// Status = HW_ad9371DynamicCfgInit(); // Status = HW_ad9371DynamicCfgInit();
// if (Status != ADIERR_OK){ // if (Status != ADIERR_OK){
// printf("HW:: AD9371 dynamic configuration initialization failed!\n"); // HW_PRINT("HW:: AD9371 dynamic configuration initialization failed!\n");
// return ADIERR_FAILED; // return ADIERR_FAILED;
// } // }
// //
// printf("HW:: AD9371 ready to be reconfigured!\n"); // HW_PRINT("HW:: AD9371 ready to be reconfigured!\n");
// //
// // main loop // // main loop
// while(1); // while(1);
@@ -101,57 +101,64 @@ int HARDWARE_ad9371Config(void)
/*********** Initialize Configuration Interface ***********/ /*********** Initialize Configuration Interface ***********/
/**********************************************************/ /**********************************************************/
Status = CMB_initPlatform(); Status = CMB_initPlatform();
if (Status != ADIERR_OK){ if (Status != ADIERR_OK)
{
return ADIERR_FAILED; return ADIERR_FAILED;
} }
Status = HW_adiCfgProfileInit(); Status = HW_adiCfgProfileInit();
if (Status != ADIERR_OK){ if (Status != ADIERR_OK)
{
return ADIERR_FAILED; return ADIERR_FAILED;
} }
printf("HW:: Initialize configuration interface done!\n"); HW_PRINT("HW:: Initialize configuration interface done!\n");
/**********************************************************/ /**********************************************************/
/****************** AD9528 Configuration ******************/ /****************** AD9528 Configuration ******************/
/**********************************************************/ /**********************************************************/
Status = HW_9528Config(ad9528Init); Status = HW_9528Config(ad9528Init);
if (Status != ADIERR_OK){ if (Status != ADIERR_OK)
{
return ADIERR_FAILED; return ADIERR_FAILED;
} }
printf("HW:: AD9528 configuration done!\n"); HW_PRINT("HW:: AD9528 configuration done!\n");
Status = HW_9528GetLockStatus(ad9528Init, &reg508); Status = HW_9528GetLockStatus(ad9528Init, &reg508);
if (Status != ADIERR_OK){ if (Status != ADIERR_OK)
{
return ADIERR_FAILED; return ADIERR_FAILED;
} }
printf("HW:: AD9528 REG508: 0x%02x\n",reg508); HW_PRINT("HW:: AD9528 REG508: 0x%02x\n", reg508);
/**********************************************************/ /**********************************************************/
/****************** AD9371 Configuration ******************/ /****************** AD9371 Configuration ******************/
/**********************************************************/ /**********************************************************/
Status = HW_9371Config(ad9528Init, &mykDevice); Status = HW_9371Config(ad9528Init, &mykDevice);
if (Status != ADIERR_OK){ if (Status != ADIERR_OK)
{
return ADIERR_FAILED; return ADIERR_FAILED;
} }
Status = HW_9371CheckJesdStatus(&mykDevice, &framerStatus, Status = HW_9371CheckJesdStatus(&mykDevice, &framerStatus,
&obsFramerStatus, &deframerStatus); &obsFramerStatus, &deframerStatus);
if (Status != ADIERR_OK){ if (Status != ADIERR_OK)
{
return ADIERR_FAILED; return ADIERR_FAILED;
} }
else { else
{
// typical value: 0x3E // typical value: 0x3E
printf("HW:: RxFramerStatus = 0x%x\n", framerStatus); HW_PRINT("HW:: RxFramerStatus = 0x%x\n", framerStatus);
// typical value: 0x3E // typical value: 0x3E
printf("HW:: OrxFramerStatus = 0x%x\n", obsFramerStatus); HW_PRINT("HW:: OrxFramerStatus = 0x%x\n", obsFramerStatus);
// typical value: 0x28 // typical value: 0x28
printf("HW:: DeframerStatus = 0x%x\n", deframerStatus); HW_PRINT("HW:: DeframerStatus = 0x%x\n", deframerStatus);
} }
printf("HW:: All configuration done!\n"); HW_PRINT("HW:: All configuration done!\n");
return ADIERR_OK; return ADIERR_OK;
} }
@@ -163,7 +170,7 @@ int HARDWARE_ad9371Config(void)
// //
// Status = HW_setupIntrSystem(INTC_DEVICE_ID, &Intc); // Status = HW_setupIntrSystem(INTC_DEVICE_ID, &Intc);
// if (Status != XST_SUCCESS) { // if (Status != XST_SUCCESS) {
// printf("HW: HW_setupIntrSystem() failed!\n"); // HW_PRINT("HW: HW_setupIntrSystem() failed!\n");
// return XST_FAILURE; // return XST_FAILURE;
// } // }
// //
@@ -171,7 +178,7 @@ int HARDWARE_ad9371Config(void)
// Status |= XGpio_Initialize(&GpioGainCtrl, GAIN_CTRL_DEVICE_ID); // Status |= XGpio_Initialize(&GpioGainCtrl, GAIN_CTRL_DEVICE_ID);
// Status |= XGpio_Initialize(&GpioAttnCtrl, ATTN_CTRL_DEVICE_ID); // Status |= XGpio_Initialize(&GpioAttnCtrl, ATTN_CTRL_DEVICE_ID);
// if (Status != XST_SUCCESS) { // if (Status != XST_SUCCESS) {
// printf("HW: GPIO init failed!\n"); // HW_PRINT("HW: GPIO init failed!\n");
// return XST_FAILURE; // return XST_FAILURE;
// } // }
// //
@@ -229,14 +236,16 @@ int HW_setupIntrSystem(u16 DeviceId, XScuGic * GicPtr)
* use. * use.
*/ */
CfgPtr = XScuGic_LookupConfig(DeviceId); CfgPtr = XScuGic_LookupConfig(DeviceId);
if (!CfgPtr) { if (!CfgPtr)
printf("No interrupt config found for %d\n", DeviceId); {
HW_PRINT("No interrupt config found for %d\n", DeviceId);
return XST_FAILURE; return XST_FAILURE;
} }
Status = XScuGic_CfgInitialize(GicPtr, CfgPtr, CfgPtr->CpuBaseAddress); Status = XScuGic_CfgInitialize(GicPtr, CfgPtr, CfgPtr->CpuBaseAddress);
if (Status != XST_SUCCESS) { if (Status != XST_SUCCESS)
printf("No interrupt config found for %d\n", DeviceId); {
HW_PRINT("No interrupt config found for %d\n", DeviceId);
return XST_FAILURE; return XST_FAILURE;
} }
@@ -249,7 +258,6 @@ int HW_setupIntrSystem(u16 DeviceId, XScuGic * GicPtr)
return XST_SUCCESS; return XST_SUCCESS;
} }
int HW_connectIntr(XScuGic *GicPtr, u32 IntrId, Xil_InterruptHandler Handler, int HW_connectIntr(XScuGic *GicPtr, u32 IntrId, Xil_InterruptHandler Handler,
void *CallBackRef, u8 Priority, u8 Trigger) void *CallBackRef, u8 Priority, u8 Trigger)
{ {
@@ -268,16 +276,17 @@ int HW_connectIntr(XScuGic *GicPtr,u32 IntrId,Xil_InterruptHandler Handler,
return XST_SUCCESS; return XST_SUCCESS;
} }
int HW_adiCfgProfileInit(void) int HW_adiCfgProfileInit(void)
{ {
if (!ad9528Init) { if (!ad9528Init)
printf("Cannot find ad9528 configuration profile with name 'ad9528Init'!"); {
HW_PRINT("Cannot find ad9528 configuration profile with name 'ad9528Init'!");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
if (!&mykDevice) { if (!&mykDevice)
printf("Cannot find ad9371 configuration profile with name 'mykDevice'!"); {
HW_PRINT("Cannot find ad9371 configuration profile with name 'mykDevice'!");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
@@ -293,7 +302,6 @@ int HW_adiCfgProfileInit(void)
return ADIERR_OK; return ADIERR_OK;
} }
int HW_9528Config(ad9528Device_t *clockAD9528_device) int HW_9528Config(ad9528Device_t *clockAD9528_device)
{ {
ADI_ERR error; ADI_ERR error;
@@ -303,8 +311,9 @@ int HW_9528Config(ad9528Device_t *clockAD9528_device)
/* Perform a hard reset on the AD9528 DUT */ /* Perform a hard reset on the AD9528 DUT */
error = AD9528_resetDevice(clockAD9528_device); error = AD9528_resetDevice(clockAD9528_device);
if (error != ADIERR_OK) { if (error != ADIERR_OK)
printf("AD9528_resetDevice() failed\n"); {
HW_PRINT("AD9528_resetDevice() failed\n");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
@@ -312,35 +321,36 @@ int HW_9528Config(ad9528Device_t *clockAD9528_device)
clockAD9528_device->pll1Settings->vcxo_Frequency_Hz, clockAD9528_device->pll1Settings->vcxo_Frequency_Hz,
clockAD9528_device->pll1Settings->refA_Frequency_Hz, clockAD9528_device->pll1Settings->refA_Frequency_Hz,
clockAD9528_device->outputSettings->outFrequency_Hz[1]); clockAD9528_device->outputSettings->outFrequency_Hz[1]);
if (error != ADIERR_OK) { if (error != ADIERR_OK)
printf("AD9528_initDeviceDataStruct() failed\n"); {
HW_PRINT("AD9528_initDeviceDataStruct() failed\n");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
/* Initialize the AD9528 by writing all SPI registers */ /* Initialize the AD9528 by writing all SPI registers */
error = AD9528_initialize(clockAD9528_device); error = AD9528_initialize(clockAD9528_device);
if (error != ADIERR_OK) { if (error != ADIERR_OK)
printf("WARNING: AD9528_initialize() issues.\n"); {
HW_PRINT("WARNING: AD9528_initialize() issues.\n");
} }
return ADIERR_OK; return ADIERR_OK;
} }
int HW_9528GetLockStatus(ad9528Device_t *device, uint8_t *reg508) int HW_9528GetLockStatus(ad9528Device_t *device, uint8_t *reg508)
{ {
ADI_ERR error; ADI_ERR error;
error = CMB_SPIReadByte(device->spiSettings, AD9528_ADDR_STATUS_READBACK0, reg508); error = CMB_SPIReadByte(device->spiSettings, AD9528_ADDR_STATUS_READBACK0, reg508);
if (error != ADIERR_OK) { if (error != ADIERR_OK)
printf("HW_9528GetLockStatus failed.\n"); {
HW_PRINT("HW_9528GetLockStatus failed.\n");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
return ADIERR_OK; return ADIERR_OK;
} }
int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice) int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice)
{ {
ADI_ERR error; ADI_ERR error;
@@ -365,19 +375,19 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
/* Allocating memory for the errorString */ /* Allocating memory for the errorString */
errorString = NULL; errorString = NULL;
/*************************************************************************/ /*************************************************************************/
/***** Mykonos Initialization Sequence *****/ /***** Mykonos Initialization Sequence *****/
/*************************************************************************/ /*************************************************************************/
/* Perform a hard reset on the MYKONOS DUT (Toggle RESETB pin on device) */ /* Perform a hard reset on the MYKONOS DUT (Toggle RESETB pin on device) */
if ((mykError = MYKONOS_resetDevice(mykDevice)) != MYKONOS_ERR_OK) { if ((mykError = MYKONOS_resetDevice(mykDevice)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((mykError = MYKONOS_initialize(mykDevice)) != MYKONOS_ERR_OK) { if ((mykError = MYKONOS_initialize(mykDevice)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
@@ -387,7 +397,8 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
/*************************************************************************/ /*************************************************************************/
if ((mykError = MYKONOS_checkPllsLockStatus(mykDevice, if ((mykError = MYKONOS_checkPllsLockStatus(mykDevice,
&pllLockStatus)) != MYKONOS_ERR_OK) { &pllLockStatus)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
@@ -397,7 +408,8 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
/*************************************************************************/ /*************************************************************************/
if ((mykError = MYKONOS_enableMultichipSync(mykDevice, 1, if ((mykError = MYKONOS_enableMultichipSync(mykDevice, 1,
&mcsStatus)) != MYKONOS_ERR_OK) { &mcsStatus)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
@@ -418,34 +430,40 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
/*************************************************************************/ /*************************************************************************/
if ((mykError = MYKONOS_enableMultichipSync(mykDevice, 0, if ((mykError = MYKONOS_enableMultichipSync(mykDevice, 0,
&mcsStatus)) != MYKONOS_ERR_OK) { &mcsStatus)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((mcsStatus & 0x0B) == 0x0B) if ((mcsStatus & 0x0B) == 0x0B)
printf("MCS successful\n"); HW_PRINT("MCS successful\n");
else else
printf("MCS failed\n"); HW_PRINT("MCS failed\n");
/*************************************************************************/ /*************************************************************************/
/***** Mykonos Load ARM file *****/ /***** Mykonos Load ARM file *****/
/*************************************************************************/ /*************************************************************************/
if (pllLockStatus & 0x01) { if (pllLockStatus & 0x01)
printf("CLKPLL locked\n"); {
if ((mykError = MYKONOS_initArm(mykDevice)) != MYKONOS_ERR_OK) { HW_PRINT("CLKPLL locked\n");
if ((mykError = MYKONOS_initArm(mykDevice)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((mykError = MYKONOS_loadArmFromBinary(mykDevice, if ((mykError = MYKONOS_loadArmFromBinary(mykDevice,
&firmware_Mykonos_M3_bin[0], firmware_Mykonos_M3_bin_len)) != MYKONOS_ERR_OK) { &firmware_Mykonos_M3_bin[0], firmware_Mykonos_M3_bin_len)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
} else { }
printf("CLKPLL not locked (0x%x)\n", pllLockStatus); else
{
HW_PRINT("CLKPLL not locked (0x%x)\n", pllLockStatus);
error = ADIERR_FAILED; error = ADIERR_FAILED;
goto error_2; goto error_2;
} }
@@ -453,26 +471,29 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
/* Read back the version of the ARM binary loaded into the Mykonos ARM memory */ /* Read back the version of the ARM binary loaded into the Mykonos ARM memory */
if ((mykError = MYKONOS_getArmVersion(mykDevice, &arm_major, &arm_minor, if ((mykError = MYKONOS_getArmVersion(mykDevice, &arm_major, &arm_minor,
&arm_release, NULL)) == MYKONOS_ERR_OK) &arm_release, NULL)) == MYKONOS_ERR_OK)
printf("AD9371 ARM version %d.%d.%d\n", arm_major, arm_minor, arm_release); HW_PRINT("AD9371 ARM version %d.%d.%d\n", arm_major, arm_minor, arm_release);
/*************************************************************************/ /*************************************************************************/
/***** Mykonos Set RF PLL Frequencies *****/ /***** Mykonos Set RF PLL Frequencies *****/
/*************************************************************************/ /*************************************************************************/
if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, RX_PLL, if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, RX_PLL,
mykDevice->rx->rxPllLoFrequency_Hz)) != MYKONOS_ERR_OK) { mykDevice->rx->rxPllLoFrequency_Hz)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, TX_PLL, if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, TX_PLL,
mykDevice->tx->txPllLoFrequency_Hz)) != MYKONOS_ERR_OK) { mykDevice->tx->txPllLoFrequency_Hz)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, SNIFFER_PLL, if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, SNIFFER_PLL,
mykDevice->obsRx->snifferPllLoFrequency_Hz)) != MYKONOS_ERR_OK) { mykDevice->obsRx->snifferPllLoFrequency_Hz)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
@@ -481,15 +502,17 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
mdelay(200); mdelay(200);
if ((mykError = MYKONOS_checkPllsLockStatus(mykDevice, if ((mykError = MYKONOS_checkPllsLockStatus(mykDevice,
&pllLockStatus)) != MYKONOS_ERR_OK) { &pllLockStatus)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((pllLockStatus & 0x0F) == 0x0F) if ((pllLockStatus & 0x0F) == 0x0F)
printf("PLLs locked\n"); HW_PRINT("PLLs locked\n");
else { else
printf("PLLs not locked (0x%x)\n", pllLockStatus); {
HW_PRINT("PLLs not locked (0x%x)\n", pllLockStatus);
error = ADIERR_FAILED; error = ADIERR_FAILED;
goto error_2; goto error_2;
} }
@@ -592,56 +615,67 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
/*************************************************************************/ /*************************************************************************/
if ((mykError = MYKONOS_runInitCals(mykDevice, if ((mykError = MYKONOS_runInitCals(mykDevice,
(initCalMask & ~TX_LO_LEAKAGE_EXTERNAL))) != MYKONOS_ERR_OK) { (initCalMask & ~TX_LO_LEAKAGE_EXTERNAL))) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((mykError = MYKONOS_waitInitCals(mykDevice, 60000, &errorFlag, if ((mykError = MYKONOS_waitInitCals(mykDevice, 60000, &errorFlag,
&errorCode)) != MYKONOS_ERR_OK) { &errorCode)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((errorFlag != 0) || (errorCode != 0)) { if ((errorFlag != 0) || (errorCode != 0))
{
/*** < Info: abort init cals > ***/ /*** < Info: abort init cals > ***/
if ((mykError = MYKONOS_abortInitCals(mykDevice, if ((mykError = MYKONOS_abortInitCals(mykDevice,
&initCalsCompleted)) != MYKONOS_ERR_OK) { &initCalsCompleted)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if (initCalsCompleted) if (initCalsCompleted)
printf("Completed calibrations: %x\n", (unsigned int)initCalsCompleted); HW_PRINT("Completed calibrations: %x\n", (unsigned int)initCalsCompleted);
} else }
printf("Calibrations completed successfully\n"); else
HW_PRINT("Calibrations completed successfully\n");
/*************************************************************************/ /*************************************************************************/
/***** Mykonos ARM Initialization External LOL Calibrations with PA *****/ /***** Mykonos ARM Initialization External LOL Calibrations with PA *****/
/*************************************************************************/ /*************************************************************************/
/* Please ensure PA is enabled operational at this time */ /* Please ensure PA is enabled operational at this time */
if (initCalMask & TX_LO_LEAKAGE_EXTERNAL) { if (initCalMask & TX_LO_LEAKAGE_EXTERNAL)
{
if ((mykError = MYKONOS_runInitCals(mykDevice, if ((mykError = MYKONOS_runInitCals(mykDevice,
TX_LO_LEAKAGE_EXTERNAL)) != MYKONOS_ERR_OK) { TX_LO_LEAKAGE_EXTERNAL)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((mykError = MYKONOS_waitInitCals(mykDevice, 60000, &errorFlag, if ((mykError = MYKONOS_waitInitCals(mykDevice, 60000, &errorFlag,
&errorCode)) != MYKONOS_ERR_OK) { &errorCode)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((errorFlag != 0) || (errorCode != 0)) { if ((errorFlag != 0) || (errorCode != 0))
{
/*** < Info: abort init cals > ***/ /*** < Info: abort init cals > ***/
if ((mykError = MYKONOS_abortInitCals(mykDevice, if ((mykError = MYKONOS_abortInitCals(mykDevice,
&initCalsCompleted)) != MYKONOS_ERR_OK) { &initCalsCompleted)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
} else }
printf("External LOL Calibrations completed successfully\n"); else
HW_PRINT("External LOL Calibrations completed successfully\n");
} }
/*************************************************************************/ /*************************************************************************/
@@ -649,7 +683,8 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
/*************************************************************************/ /*************************************************************************/
if ((mykError = MYKONOS_enableSysrefToRxFramer(mykDevice, if ((mykError = MYKONOS_enableSysrefToRxFramer(mykDevice,
1)) != MYKONOS_ERR_OK) { 1)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
@@ -657,7 +692,8 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
* transmitting CGS from the RxFramer> ***/ * transmitting CGS from the RxFramer> ***/
if ((mykError = MYKONOS_enableSysrefToObsRxFramer(mykDevice, if ((mykError = MYKONOS_enableSysrefToObsRxFramer(mykDevice,
1)) != MYKONOS_ERR_OK) { 1)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
@@ -665,18 +701,20 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
* transmitting CGS from the ObsRxFramer> ***/ * transmitting CGS from the ObsRxFramer> ***/
if ((mykError = MYKONOS_enableSysrefToDeframer(mykDevice, if ((mykError = MYKONOS_enableSysrefToDeframer(mykDevice,
0)) != MYKONOS_ERR_OK) { 0)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((mykError = MYKONOS_resetDeframer(mykDevice)) != MYKONOS_ERR_OK) { if ((mykError = MYKONOS_resetDeframer(mykDevice)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((mykError = MYKONOS_enableSysrefToDeframer(mykDevice, if ((mykError = MYKONOS_enableSysrefToDeframer(mykDevice, 1)) != MYKONOS_ERR_OK)
1)) != MYKONOS_ERR_OK) { {
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
@@ -704,7 +742,8 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
/*************************************************************************/ /*************************************************************************/
if ((mykError = MYKONOS_enableTrackingCals(mykDevice, if ((mykError = MYKONOS_enableTrackingCals(mykDevice,
trackingCalMask)) != MYKONOS_ERR_OK) { trackingCalMask)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
@@ -714,19 +753,22 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
/*** < Info: Function to turn radio on, Enables transmitters and receivers /*** < Info: Function to turn radio on, Enables transmitters and receivers
* that were setup during MYKONOS_initialize() > ***/ * that were setup during MYKONOS_initialize() > ***/
if ((mykError = MYKONOS_radioOn(mykDevice)) != MYKONOS_ERR_OK) { if ((mykError = MYKONOS_radioOn(mykDevice)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
/*** < Info: Allow TxQEC to run when User: is not actively using ORx receive path > ***/ /*** < Info: Allow TxQEC to run when User: is not actively using ORx receive path > ***/
if ((mykError = MYKONOS_setObsRxPathSource(mykDevice, if ((mykError = MYKONOS_setObsRxPathSource(mykDevice,
OBS_RXOFF)) != MYKONOS_ERR_OK) { OBS_RXOFF)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
if ((mykError = MYKONOS_setObsRxPathSource(mykDevice, if ((mykError = MYKONOS_setObsRxPathSource(mykDevice,
OBS_INTERNALCALS)) != MYKONOS_ERR_OK) { OBS_INTERNALCALS)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
@@ -734,26 +776,26 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice
mdelay(1000); mdelay(1000);
if ((mykError = MYKONOS_setObsRxPathSource(mykDevice, if ((mykError = MYKONOS_setObsRxPathSource(mykDevice,
OBS_RX1_SNIFFERLO)) != MYKONOS_ERR_OK) { OBS_RX1_SNIFFERLO)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
goto error_11; goto error_11;
} }
Xil_DCacheInvalidateRange(DDR_MEM_BASEADDR + 0x800000, 16384 * 8); Xil_DCacheInvalidateRange(DDR_MEM_BASEADDR + 0x800000, 16384 * 8);
printf("Done\n"); HW_PRINT("Done\n");
return 0; return 0;
error_11: error_11:
printf("%s", errorString); HW_PRINT("%s", errorString);
error_2: error_2:
// axi_clkgen_remove(rx_clkgen); // axi_clkgen_remove(rx_clkgen);
return FAILURE; return FAILURE;
} }
int HW_9371CheckJesdStatus(mykonosDevice_t *mykDevice, uint8_t *framerStatus, int HW_9371CheckJesdStatus(mykonosDevice_t *mykDevice, uint8_t *framerStatus,
uint8_t *obsFramerStatus, uint8_t *deframerStatus) uint8_t *obsFramerStatus, uint8_t *deframerStatus)
{ {
@@ -767,19 +809,24 @@ int HW_9371CheckJesdStatus(mykonosDevice_t *mykDevice, uint8_t *framerStatus,
/*************************************************************************/ /*************************************************************************/
if ((mykError = MYKONOS_readRxFramerStatus(mykDevice, if ((mykError = MYKONOS_readRxFramerStatus(mykDevice,
framerStatus)) != MYKONOS_ERR_OK) { framerStatus)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
return ADIERR_FAILED; return ADIERR_FAILED;
} }
else { else
{
// typical value: 0x3E // typical value: 0x3E
} }
if ((mykError = MYKONOS_readOrxFramerStatus(mykDevice, if ((mykError = MYKONOS_readOrxFramerStatus(mykDevice,
obsFramerStatus)) != MYKONOS_ERR_OK) { obsFramerStatus)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
return ADIERR_FAILED; return ADIERR_FAILED;
} else { }
else
{
// typical value: 0x3E // typical value: 0x3E
} }
@@ -788,17 +835,19 @@ int HW_9371CheckJesdStatus(mykonosDevice_t *mykDevice, uint8_t *framerStatus,
/*************************************************************************/ /*************************************************************************/
if ((mykError = MYKONOS_readDeframerStatus(mykDevice, if ((mykError = MYKONOS_readDeframerStatus(mykDevice,
deframerStatus)) != MYKONOS_ERR_OK) { deframerStatus)) != MYKONOS_ERR_OK)
{
errorString = getMykonosErrorMessage(mykError); errorString = getMykonosErrorMessage(mykError);
return ADIERR_FAILED; return ADIERR_FAILED;
} else { }
else
{
// typical value: 0x28 // typical value: 0x28
} }
return ADIERR_OK; return ADIERR_OK;
} }
int HW_9371SmallFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz) int HW_9371SmallFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
{ {
mykonosErr_t mykError = MYKONOS_ERR_OK; mykonosErr_t mykError = MYKONOS_ERR_OK;
@@ -808,7 +857,7 @@ int HW_9371SmallFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
*/ */
if ((mykError = MYKONOS_radioOff(mykDevice)) != MYKONOS_ERR_OK) if ((mykError = MYKONOS_radioOff(mykDevice)) != MYKONOS_ERR_OK)
{ {
printf("Turn radio off failed!\n\r"); HW_PRINT("Turn radio off failed!\n\r");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
@@ -818,14 +867,14 @@ int HW_9371SmallFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, TX_PLL, if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, TX_PLL,
freq_Hz)) != MYKONOS_ERR_OK) freq_Hz)) != MYKONOS_ERR_OK)
{ {
printf("Set TX PLL failed!\n\r"); HW_PRINT("Set TX PLL failed!\n\r");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
mykError = MYKONOS_checkPllsLockStatus(mykDevice, &pllLockStatus); mykError = MYKONOS_checkPllsLockStatus(mykDevice, &pllLockStatus);
if ((pllLockStatus & 0x07) != 0x07) if ((pllLockStatus & 0x07) != 0x07)
{ {
/*** < Info: Clock, Rx and Tx PLLs not locked > ***/ /*** < Info: Clock, Rx and Tx PLLs not locked > ***/
printf("Not all PLLs locked, lock status: 0x%02x\n", pllLockStatus); HW_PRINT("Not all PLLs locked, lock status: 0x%02x\n", pllLockStatus);
} }
/* /*
@@ -834,7 +883,7 @@ int HW_9371SmallFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
// If((mykError = MYKONOS_resetExtTxLolChannel(mykDevice, TX1_TX2)) // If((mykError = MYKONOS_resetExtTxLolChannel(mykDevice, TX1_TX2))
// != MYKONOS_ERR_OK) ; //where TX1_TX2 is part of the enum mykonosTxChannels_t // != MYKONOS_ERR_OK) ; //where TX1_TX2 is part of the enum mykonosTxChannels_t
// { // {
// printf("Reset external channel FAILED!"); // HW_PRINT("Reset external channel FAILED!");
// } // }
/* /*
@@ -842,7 +891,7 @@ int HW_9371SmallFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
*/ */
if ((mykError = MYKONOS_radioOn(mykDevice)) != MYKONOS_ERR_OK) if ((mykError = MYKONOS_radioOn(mykDevice)) != MYKONOS_ERR_OK)
{ {
printf("Turn radio on failed!\n\r"); HW_PRINT("Turn radio on failed!\n\r");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
@@ -852,12 +901,11 @@ int HW_9371SmallFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
// If((mykError = MYKONOS_MYKONOS_setObsRxPathSource(mykDevice, OBS_INTERNALCALS)) // If((mykError = MYKONOS_MYKONOS_setObsRxPathSource(mykDevice, OBS_INTERNALCALS))
// != MYKONOS_ERR_OK) ; //where TX1_TX2 is part of the enum mykonosTxChannels_t // != MYKONOS_ERR_OK) ; //where TX1_TX2 is part of the enum mykonosTxChannels_t
// { // {
// printf("Reenable tracking calibrations FAILED!"); // HW_PRINT("Reenable tracking calibrations FAILED!");
// } // }
return ADIERR_OK; return ADIERR_OK;
} }
int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz) int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
{ {
mykonosErr_t mykError = MYKONOS_ERR_OK; mykonosErr_t mykError = MYKONOS_ERR_OK;
@@ -875,7 +923,7 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
*/ */
if ((mykError = MYKONOS_radioOff(mykDevice)) != MYKONOS_ERR_OK) if ((mykError = MYKONOS_radioOff(mykDevice)) != MYKONOS_ERR_OK)
{ {
printf("Turn radio off failed!\n\r"); HW_PRINT("Turn radio off failed!\n\r");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
@@ -885,14 +933,14 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, TX_PLL, if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, TX_PLL,
freq_Hz)) != MYKONOS_ERR_OK) freq_Hz)) != MYKONOS_ERR_OK)
{ {
printf("Set TX PLL failed!\n\r"); HW_PRINT("Set TX PLL failed!\n\r");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
mykError = MYKONOS_checkPllsLockStatus(mykDevice, &pllLockStatus); mykError = MYKONOS_checkPllsLockStatus(mykDevice, &pllLockStatus);
if ((pllLockStatus & 0x07) != 0x07) if ((pllLockStatus & 0x07) != 0x07)
{ {
/*** < Info: Clock, Rx and Tx PLLs not locked > ***/ /*** < Info: Clock, Rx and Tx PLLs not locked > ***/
printf("Not all PLLs locked, lock status: 0x%02x\n", pllLockStatus); HW_PRINT("Not all PLLs locked, lock status: 0x%02x\n", pllLockStatus);
} }
/* /*
@@ -900,34 +948,30 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
*/ */
uint32_t initCalMask = TX_QEC_INIT | LOOPBACK_RX_LO_DELAY | uint32_t initCalMask = TX_QEC_INIT | LOOPBACK_RX_LO_DELAY |
LOOPBACK_RX_RX_QEC_INIT | RX_LO_DELAY | RX_QEC_INIT; LOOPBACK_RX_RX_QEC_INIT | RX_LO_DELAY | RX_QEC_INIT;
if ((mykError = MYKONOS_runInitCals(mykDevice, initCalMask)) if ((mykError = MYKONOS_runInitCals(mykDevice, initCalMask)) != MYKONOS_ERR_OK)
!= MYKONOS_ERR_OK)
{ {
printf("Rerun the initialization calibrations FAILED!"); HW_PRINT("Rerun the initialization calibrations FAILED!");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
if ((mykError = MYKONOS_waitInitCals(mykDevice, 60000, &errorFlag, if ((mykError = MYKONOS_waitInitCals(mykDevice, 60000, &errorFlag,
&errorCode)) != MYKONOS_ERR_OK) &errorCode)) != MYKONOS_ERR_OK)
{ {
printf("Initialize calibration TIME OUT!"); HW_PRINT("Initialize calibration TIME OUT!");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
if ((errorFlag != 0) || (errorCode != 0)) if ((errorFlag != 0) || (errorCode != 0))
{ {
printf("initial cals error!\n\r"); HW_PRINT("initial cals error!\n\r");
if((mykError = MYKONOS_getInitCalStatus(mykDevice, &initCalStatus)) if ((mykError = MYKONOS_getInitCalStatus(mykDevice, &initCalStatus)) != MYKONOS_ERR_OK)
!= MYKONOS_ERR_OK)
{ {
/*** < User log error return value to debug why init failed > ***/ /*** < User log error return value to debug why init failed > ***/
} }
// abort init calibrations // abort init calibrations
if((mykError = MYKONOS_abortInitCals(mykDevice, &initCalsCompleted)) if ((mykError = MYKONOS_abortInitCals(mykDevice, &initCalsCompleted)) != MYKONOS_ERR_OK)
!= MYKONOS_ERR_OK)
{ {
/*** < User log error return value to debug why init failed > ***/ /*** < User log error return value to debug why init failed > ***/
} }
if (initCalsCompleted) if (initCalsCompleted)
{ {
@@ -938,10 +982,8 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
{ {
/*** < User log error return value to debug why init failed > ***/ /*** < User log error return value to debug why init failed > ***/
} }
if((mykError = MYKONOS_readArmCmdStatusByte(mykDevice, 2, &status)) if ((mykError = MYKONOS_readArmCmdStatusByte(mykDevice, 2, &status)) != MYKONOS_ERR_OK)
!= MYKONOS_ERR_OK)
{ {
} }
if (status != 0) if (status != 0)
{ {
@@ -955,26 +997,25 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
*/ */
if ((mykError = MYKONOS_radioOn(mykDevice)) != MYKONOS_ERR_OK) if ((mykError = MYKONOS_radioOn(mykDevice)) != MYKONOS_ERR_OK)
{ {
printf("Turn radio on failed!\n\r"); HW_PRINT("Turn radio on failed!\n\r");
return ADIERR_FAILED; return ADIERR_FAILED;
} }
return ADIERR_OK; return ADIERR_OK;
} }
// void FreqIntrHandler(void *CallbackRef) // void FreqIntrHandler(void *CallbackRef)
// { // {
// XGpio *GpioPtr = (XGpio *)CallbackRef; // XGpio *GpioPtr = (XGpio *)CallbackRef;
// uint8_t IntrStatus; // uint8_t IntrStatus;
// uint32_t NewFreqHz; // uint32_t NewFreqHz;
// IntrStatus = XGpio_InterruptGetStatus(GpioPtr); // IntrStatus = XGpio_InterruptGetStatus(GpioPtr);
//
// if (IntrStatus & XGPIO_IR_CH1_MASK) // if (IntrStatus & XGPIO_IR_CH1_MASK)
// { // {
// /* Clear the Interrupt */ // /* Clear the Interrupt */
// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH1_MASK); // XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH1_MASK);
//
// NewFreqHz = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_1); // NewFreqHz = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_1);
// if (NewFreqHz != mykDevice.tx->txPllLoFrequency_Hz) // if (NewFreqHz != mykDevice.tx->txPllLoFrequency_Hz)
// { // {
@@ -989,20 +1030,20 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
// HW_9371LargeFrequencyChange(&mykDevice, NewFreqHz); // HW_9371LargeFrequencyChange(&mykDevice, NewFreqHz);
// } // }
// mykDevice.tx->txPllLoFrequency_Hz = NewFreqHz; // mykDevice.tx->txPllLoFrequency_Hz = NewFreqHz;
// printf("New Tx frequency set to %d Hz!\n",NewFreqHz); // HW_PRINT("New Tx frequency set to %d Hz!\n", NewFreqHz);
// } // }
// else // else
// { // {
// printf("The desired Tx Frequency is out of range(300 ~ 6000 MHz)!\n"); // HW_PRINT("The desired Tx Frequency is out of range(300 ~ 6000 MHz)!\n");
// } // }
// } // }
// } // }
//
// if (IntrStatus & XGPIO_IR_CH2_MASK) // if (IntrStatus & XGPIO_IR_CH2_MASK)
// { // {
// /* Clear the Interrupt */ // /* Clear the Interrupt */
// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH2_MASK); // XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH2_MASK);
//
// NewFreqHz = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_2); // NewFreqHz = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_2);
// if (NewFreqHz != mykDevice.rx->rxPllLoFrequency_Hz) // if (NewFreqHz != mykDevice.rx->rxPllLoFrequency_Hz)
// { // {
@@ -1017,29 +1058,28 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
// HW_9371LargeFrequencyChange(&mykDevice, NewFreqHz); // HW_9371LargeFrequencyChange(&mykDevice, NewFreqHz);
// } // }
// mykDevice.rx->rxPllLoFrequency_Hz = NewFreqHz; // mykDevice.rx->rxPllLoFrequency_Hz = NewFreqHz;
// printf("New Rx frequency set to %d Hz!\n",NewFreqHz); // HW_PRINT("New Rx frequency set to %d Hz!\n", NewFreqHz);
// } // }
// else // else
// { // {
// printf("The desired Rx Frequency is out of range(300 ~ 6000 MHz)!\n"); // HW_PRINT("The desired Rx Frequency is out of range(300 ~ 6000 MHz)!\n");
// } // }
// } // }
// } // }
// } // }
//
//
// void GainIntrHandler(void *CallbackRef) // void GainIntrHandler(void *CallbackRef)
// { // {
// XGpio *GpioPtr = (XGpio *)CallbackRef; // XGpio *GpioPtr = (XGpio *)CallbackRef;
// uint8_t IntrStatus; // uint8_t IntrStatus;
// uint32_t NewRxGain; // uint32_t NewRxGain;
// IntrStatus = XGpio_InterruptGetStatus(GpioPtr); // IntrStatus = XGpio_InterruptGetStatus(GpioPtr);
//
// if (IntrStatus & XGPIO_IR_CH1_MASK) // if (IntrStatus & XGPIO_IR_CH1_MASK)
// { // {
// /* Clear the Interrupt */ // /* Clear the Interrupt */
// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH1_MASK); // XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH1_MASK);
//
// NewRxGain = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_1); // NewRxGain = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_1);
// if (NewRxGain != mykDevice.rx->rxGainCtrl->rx1GainIndex) // if (NewRxGain != mykDevice.rx->rxGainCtrl->rx1GainIndex)
// { // {
@@ -1048,21 +1088,21 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
// MYKONOS_setRx1ManualGain(&mykDevice, NewRxGain); // MYKONOS_setRx1ManualGain(&mykDevice, NewRxGain);
// mykDevice.rx->rxGainCtrl->rx1GainIndex = NewRxGain; // mykDevice.rx->rxGainCtrl->rx1GainIndex = NewRxGain;
// char buf[BUFSIZ]; // char buf[BUFSIZ];
// sprintf(buf, "%u", NewRxGain); // sHW_PRINT(buf, "%u", NewRxGain);
// printf("New Rx1 gain index set to %s!\n",buf); // HW_PRINT("New Rx1 gain index set to %s!\n", buf);
// } // }
// else // else
// { // {
// printf("The desired Rx1 gain index is out of range(195 ~ 255), 0.5dB per stage!\n"); // HW_PRINT("The desired Rx1 gain index is out of range(195 ~ 255), 0.5dB per stage!\n");
// } // }
// } // }
// } // }
//
// if (IntrStatus & XGPIO_IR_CH2_MASK) // if (IntrStatus & XGPIO_IR_CH2_MASK)
// { // {
// /* Clear the Interrupt */ // /* Clear the Interrupt */
// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH2_MASK); // XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH2_MASK);
//
// NewRxGain = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_2); // NewRxGain = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_2);
// if (NewRxGain != mykDevice.rx->rxGainCtrl->rx2GainIndex) // if (NewRxGain != mykDevice.rx->rxGainCtrl->rx2GainIndex)
// { // {
@@ -1071,30 +1111,29 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
// MYKONOS_setRx2ManualGain(&mykDevice, NewRxGain); // MYKONOS_setRx2ManualGain(&mykDevice, NewRxGain);
// mykDevice.rx->rxGainCtrl->rx2GainIndex = NewRxGain; // mykDevice.rx->rxGainCtrl->rx2GainIndex = NewRxGain;
// char buf[BUFSIZ]; // char buf[BUFSIZ];
// sprintf(buf, "%u", NewRxGain); // sHW_PRINT(buf, "%u", NewRxGain);
// printf("New Rx2 gain index set to %s!\n",buf); // HW_PRINT("New Rx2 gain index set to %s!\n", buf);
// } // }
// else // else
// { // {
// printf("The desired Rx2 gain index is out of range(195 ~ 255), 0.5dB per stage!\n"); // HW_PRINT("The desired Rx2 gain index is out of range(195 ~ 255), 0.5dB per stage!\n");
// } // }
// } // }
// } // }
// } // }
//
//
// void AttnIntrHandler(void *CallbackRef) // void AttnIntrHandler(void *CallbackRef)
// { // {
// XGpio *GpioPtr = (XGpio *)CallbackRef; // XGpio *GpioPtr = (XGpio *)CallbackRef;
// uint8_t IntrStatus; // uint8_t IntrStatus;
// uint32_t NewTxAttn; // uint32_t NewTxAttn;
// IntrStatus = XGpio_InterruptGetStatus(GpioPtr); // IntrStatus = XGpio_InterruptGetStatus(GpioPtr);
//
// if (IntrStatus & XGPIO_IR_CH1_MASK) // if (IntrStatus & XGPIO_IR_CH1_MASK)
// { // {
// /* Clear the Interrupt */ // /* Clear the Interrupt */
// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH1_MASK); // XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH1_MASK);
//
// NewTxAttn = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_1); // NewTxAttn = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_1);
// if (NewTxAttn != mykDevice.tx->tx1Atten_mdB) // if (NewTxAttn != mykDevice.tx->tx1Atten_mdB)
// { // {
@@ -1103,21 +1142,21 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
// MYKONOS_setTx1Attenuation(&mykDevice, NewTxAttn); // MYKONOS_setTx1Attenuation(&mykDevice, NewTxAttn);
// mykDevice.tx->tx1Atten_mdB = NewTxAttn; // mykDevice.tx->tx1Atten_mdB = NewTxAttn;
// char buf[BUFSIZ]; // char buf[BUFSIZ];
// sprintf(buf, "%u", NewTxAttn); // sHW_PRINT(buf, "%u", NewTxAttn);
// printf("New Tx1 attenuation set to %s dBm!\n",buf); // HW_PRINT("New Tx1 attenuation set to %s dBm!\n", buf);
// } // }
// else // else
// { // {
// printf("The desired Tx1 attenuation is out of range(0 ~ 41950 dBm), 50 dBm step!\n"); // HW_PRINT("The desired Tx1 attenuation is out of range(0 ~ 41950 dBm), 50 dBm step!\n");
// } // }
// } // }
// } // }
//
// if (IntrStatus & XGPIO_IR_CH2_MASK) // if (IntrStatus & XGPIO_IR_CH2_MASK)
// { // {
// /* Clear the Interrupt */ // /* Clear the Interrupt */
// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH2_MASK); // XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH2_MASK);
//
// NewTxAttn = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_2); // NewTxAttn = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_2);
// if (NewTxAttn != mykDevice.tx->tx2Atten_mdB) // if (NewTxAttn != mykDevice.tx->tx2Atten_mdB)
// { // {
@@ -1126,12 +1165,12 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz)
// MYKONOS_setTx2Attenuation(&mykDevice, NewTxAttn); // MYKONOS_setTx2Attenuation(&mykDevice, NewTxAttn);
// mykDevice.tx->tx2Atten_mdB = NewTxAttn; // mykDevice.tx->tx2Atten_mdB = NewTxAttn;
// char buf[BUFSIZ]; // char buf[BUFSIZ];
// sprintf(buf, "%u", NewTxAttn); // sHW_PRINT(buf, "%u", NewTxAttn);
// printf("New Tx2 attenuation set to %s dBm!\n",buf); // HW_PRINT("New Tx2 attenuation set to %s dBm!\n", buf);
// } // }
// else // else
// { // {
// printf("The desired Tx2 attenuation is out of range(0 ~ 41950 dBm), 50 dBm step!\n"); // HW_PRINT("The desired Tx2 attenuation is out of range(0 ~ 41950 dBm), 50 dBm step!\n");
// } // }
// } // }
// } // }
+3 -2
View File
@@ -1,7 +1,7 @@
/* /*
* headless.h * headless.h
* *
* Created on: 2021Äê6ÔÂ8ÈÕ * Created on: 2021��6��8��
* Author: Josh * Author: Josh
*/ */
@@ -30,7 +30,8 @@
/**************************** Type Definitions *******************************/ /**************************** Type Definitions *******************************/
/***************** Macros (Inline Functions) Definitions *********************/ /***************** Macros (Inline Functions) Definitions *********************/
#define HW_PRINT(...) __asm__("nop")
// #define HW_PRINT(...) printf(__VA_ARGS__)
/************************** Variable Definitions *****************************/ /************************** Variable Definitions *****************************/
/************************** Function Prototypes ******************************/ /************************** Function Prototypes ******************************/
+21 -9
View File
@@ -51,33 +51,39 @@ void ScuTimer_IntrHandler(void *context);
void Systembus_RxIntrHandler(void *context); void Systembus_RxIntrHandler(void *context);
void Systembus_TxIntrHandler(void *context); void Systembus_TxIntrHandler(void *context);
/************************** Constant Definitions *****************************/ /************************** Constant Definitions *****************************/
struct callback_desc phy_callback_desc = { struct callback_desc phy_callback_desc =
{
.callback = Phy_IntrHandler, .callback = Phy_IntrHandler,
.ctx = NULL .ctx = NULL
}; };
struct callback_desc periodicpull_callback_desc = { struct callback_desc periodicpull_callback_desc =
{
.callback = PeriodicPull_Handler, .callback = PeriodicPull_Handler,
.ctx = NULL .ctx = NULL
}; };
struct callback_desc sysbus_rx_callback_desc = { struct callback_desc sysbus_rx_callback_desc =
{
.callback = Systembus_RxIntrHandler, .callback = Systembus_RxIntrHandler,
.ctx = NULL .ctx = NULL
}; };
struct callback_desc sysbus_tx_callback_desc = { struct callback_desc sysbus_tx_callback_desc =
{
.callback = Systembus_TxIntrHandler, .callback = Systembus_TxIntrHandler,
.ctx = NULL .ctx = NULL
}; };
struct callback_desc scutm_callback_desc = { struct callback_desc scutm_callback_desc =
{
.callback = ScuTimer_IntrHandler, .callback = ScuTimer_IntrHandler,
.ctx = NULL .ctx = NULL
}; };
L2_CONFIG linkConfig = { L2_CONFIG linkConfig =
{
.myType = L2_NODE_HEAD, .myType = L2_NODE_HEAD,
.clustId = 1, .clustId = 1,
.myId = 1, .myId = 1,
@@ -99,16 +105,22 @@ L2_CONFIG linkConfig = {
// .tmcInstPtr = NULL // .tmcInstPtr = NULL
// }; // };
static PHY_CONFIG phyConfig = { static PHY_CONFIG phyConfig =
{
.devId = 0, .devId = 0,
.baseAddr = PHY_BASEADDR, .baseAddr = PHY_BASEADDR,
.antBramId = PHY_ANTCONFIG_BRAM_DEVICE_ID, .antBramId = PHY_ANTCONFIG_BRAM_DEVICE_ID,
.txBramId = PHY_TXBUFF_BRAM_DEVICE_ID, .txBramId = PHY_TXBUFF_BRAM_DEVICE_ID,
.rxBramId = PHY_RXBUFF_BRAM_DEVICE_ID, .rxBramId = PHY_RXBUFF_BRAM_DEVICE_ID,
.hwXadcId = PHY_HW_XADC_DEVICE_ID .hwXadcId = PHY_HW_XADC_DEVICE_ID,
.get_clk_state = NULL,
.get_ad_lock_state = NULL,
.get_ad0_temp = NULL,
.get_ad1_temp = NULL
}; };
TMC_CONFIG tmcConfig = { TMC_CONFIG tmcConfig =
{
.baseAddr = TIME_CONTROLLER_BASEADDR, .baseAddr = TIME_CONTROLLER_BASEADDR,
.reset = 10 .reset = 10
}; };