From c8b72779e08b32ce9fa41d1c513ad84482cae562 Mon Sep 17 00:00:00 2001 From: "Christian L. V. Madsen" Date: Sun, 13 Apr 2025 14:35:23 +0200 Subject: [PATCH] seems to work but there might be some calc error in gui --- storno_cqp6xx_digital_xtal/cm_task_manager | 1 - storno_cqp6xx_digital_xtal/cqm6xx_app.c | 85 ++++++++----------- storno_cqp6xx_digital_xtal/si5351_driver | 2 +- .../storno_cqp6xx_digital_xtal.cproj | 13 --- 4 files changed, 36 insertions(+), 65 deletions(-) delete mode 160000 storno_cqp6xx_digital_xtal/cm_task_manager diff --git a/storno_cqp6xx_digital_xtal/cm_task_manager b/storno_cqp6xx_digital_xtal/cm_task_manager deleted file mode 160000 index c6b3c93..0000000 --- a/storno_cqp6xx_digital_xtal/cm_task_manager +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c6b3c93074fa24dace48e16a935f260dc3989c4c diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.c b/storno_cqp6xx_digital_xtal/cqm6xx_app.c index 836462d..4e890cb 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.c +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.c @@ -26,37 +26,35 @@ static uint8_t isStructValid(storno_xtal_app_t *inst){ } static void cqm_setPLLParam(storno_xtal_app_t *inst, si5351_PLLs pll_num, si5351_Outputs output){ - - cm_setPllParamRaw(inst->si5351_dev,pll_num, inst->plla_param_data.MSNx_P1, inst->plla_param_data.MSNx_P2, inst->plla_param_data.MSNx_P3); - //_delay_ms(1); - cm_setOutputMultiSynthRaw(inst->si5351_dev,output, inst->plla_param_data.MSx_P1, inst->plla_param_data.MSx_P2, inst->plla_param_data.MSx_P3); - //_delay_ms(1); - cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); + if(pll_num != SI5351_PLL_B){ + + cm_setPllParamRaw(inst->si5351_dev,pll_num, inst->plla_param_data.MSNx_P1, inst->plla_param_data.MSNx_P2, inst->plla_param_data.MSNx_P3); + cm_setOutputMultiSynthRaw(inst->si5351_dev,output, inst->plla_param_data.MSx_P1, inst->plla_param_data.MSx_P2, inst->plla_param_data.MSx_P3); + cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); + + }else{ + cm_setPllParamRaw(inst->si5351_dev,pll_num, inst->pllb_param_data.MSNx_P1, inst->pllb_param_data.MSNx_P2, inst->pllb_param_data.MSNx_P3); + cm_setOutputMultiSynthRaw(inst->si5351_dev,output, inst->pllb_param_data.MSx_P1, inst->pllb_param_data.MSx_P2, inst->pllb_param_data.MSx_P3); + cm_setCLKControl(inst->si5351_dev,output,SI5351_CLK_POWER_UP); + } + } static void cqm6xx_app_loadPLLParam(storno_xtal_app_t *inst){ - // Read settings for PLLA first - cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->plla_param_data,sizeof(storno_pll_param_msg)); - //_delay_ms(1); + cm_setInputSource(inst->si5351_dev, SI5351_CLK_SOURCE_XTAL); - //_delay_ms(1); - - + cqm_setPLLParam(inst, SI5351_PLL_A, SI5351_OUTPUT_0); - //_delay_ms(1); - - - cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->plla_param_data,sizeof(storno_pll_param_msg)); - //_delay_ms(1); + cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_1); // Set third output to crystal freq for calibration! cqm_setPLLParam(inst, SI5351_PLL_B, SI5351_OUTPUT_2); cm_setCLKControl(inst->si5351_dev, SI5351_OUTPUT_2,SI5351_CLK_POWER_UP); - //_delay_ms(1); + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_2,SI5351_OUTPUT_ENABLE); @@ -68,7 +66,7 @@ void setRTXOscMode(storno_xtal_app_t *inst){ if(inst->rtx_mode != STORNO_APP_TX_MODE){ cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_ENABLE); // RX - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_DISABLE); // TX + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX }else{ cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX @@ -79,30 +77,8 @@ void setRTXOscMode(storno_xtal_app_t *inst){ void EepromWritePLLParameters(storno_xtal_app_t *inst){ - //Burn settings into eeprom here: - switch(inst->plla_param_data.header.PLL_Ident){ - - case MSG_PLLA_PARAM: - cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->plla_param_data), sizeof(storno_pll_param_msg)); - break; - - case MSG_PLLB_PARAM: - cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pllb_param_data), sizeof(storno_pll_param_msg)); - break; - - case MSG_GET_PLLA_PARAM: - cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->plla_param_data,sizeof(storno_pll_param_msg)); - break; - - case MSG_GET_PLLB_PARAM: - cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pllb_param_data,sizeof(storno_pll_param_msg)); - break; - - default: - break; - - - } + cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->plla_param_data), sizeof(storno_pll_param_msg)); + cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pllb_param_data), sizeof(storno_pll_param_msg)); } @@ -129,7 +105,7 @@ void cqm6xx_app_taskHandler(storno_xtal_app_t *inst){ setRTXOscMode(inst); //cm_taskManager_addTaskToList(&inst->storno_xtal_task,setRTXOscMode,inst); - }else if (inst->rtx_mode != STORNO_APP_TX_MODE){ + }else if ((gpio_get_level(GPIO_PORTA,GPIO_PIN_PTT) == GPIO_LEVEL_SET) && (inst->rtx_mode != STORNO_APP_TX_MODE)){ inst->rtx_mode = STORNO_APP_TX_MODE; setRTXOscMode(inst); //cm_taskManager_addTaskToList(&inst->storno_xtal_task,setRTXOscMode,inst); @@ -144,17 +120,17 @@ static int writeDefaultSettingsEEprom(storno_xtal_app_t *inst){ //inst->pllb_param_data.PLL_Ident = inst->plla_param_data.PLL_Ident = 0; - inst->pllb_param_data.MSNx_P1 = inst->plla_param_data.MSNx_P1 = 3395; - inst->pllb_param_data.MSNx_P2 = inst->plla_param_data.MSNx_P2 = 11510; - inst->pllb_param_data.MSNx_P3 = inst->plla_param_data.MSNx_P3 = 1067099; + inst->pllb_param_data.MSNx_P1 = inst->plla_param_data.MSNx_P1 = 4030; + inst->pllb_param_data.MSNx_P2 = inst->plla_param_data.MSNx_P2 = 244; + inst->pllb_param_data.MSNx_P3 = inst->plla_param_data.MSNx_P3 = 250; - inst->pllb_param_data.MSx_P1 = inst->plla_param_data.MSx_P1 = 18; + inst->pllb_param_data.MSx_P1 = inst->plla_param_data.MSx_P1 = 1920; inst->pllb_param_data.MSx_P2 = inst->plla_param_data.MSx_P2 = 0; inst->pllb_param_data.MSx_P3 = inst->plla_param_data.MSx_P3 = 1; inst->pllb_param_data.XtalFreq = inst->plla_param_data.XtalFreq = 25000000; cm_EEPROM_write((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->plla_param_data), sizeof(storno_pll_param_msg)); - //_delay_ms(1); + cm_EEPROM_write((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t*)&(inst->pllb_param_data), sizeof(storno_pll_param_msg)); return 0; @@ -216,11 +192,20 @@ void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ //cm_taskManager_init(&inst->storno_xtal_task); // Check if data is vaild (if this is a new mcu) - if(!isEEPROMValid(inst)){ + if(!isEEPROMValid(inst)|| 1){ // If settings are somehow unvalid, then write default settings.. writeDefaultSettingsEEprom(inst); } + // Read settings for PLLA first + cm_EEPROM_read((uint8_t*)PLLA_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->plla_param_data,sizeof(storno_pll_param_msg)); + + // Read settings for PLLB + cm_EEPROM_read((uint8_t*)PLLB_SETTINGS_EEPROM_ADDR,(uint8_t *)&inst->pllb_param_data,sizeof(storno_pll_param_msg)); + cqm6xx_app_loadPLLParam(inst); + inst->rtx_mode = STORNO_APP_RX_MODE; + setRTXOscMode(inst); + } \ No newline at end of file diff --git a/storno_cqp6xx_digital_xtal/si5351_driver b/storno_cqp6xx_digital_xtal/si5351_driver index a01bd85..1102fbd 160000 --- a/storno_cqp6xx_digital_xtal/si5351_driver +++ b/storno_cqp6xx_digital_xtal/si5351_driver @@ -1 +1 @@ -Subproject commit a01bd85b6fc4faee724427b3d27d1ffcdfa63d23 +Subproject commit 1102fbd4d5faa50572af80ba0b9c6f3c48708a1d diff --git a/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj b/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj index f1063f4..276f558 100644 --- a/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj +++ b/storno_cqp6xx_digital_xtal/storno_cqp6xx_digital_xtal.cproj @@ -180,12 +180,6 @@ compile - - compile - - - compile - compile @@ -211,7 +205,6 @@ - @@ -251,12 +244,6 @@ compile - - compile - - - compile - compile