From d6fb9d88566c9f6c615da84239222daf124538e1 Mon Sep 17 00:00:00 2001 From: "Christian L. V. Madsen" Date: Sun, 13 Apr 2025 19:18:57 +0200 Subject: [PATCH] works --- si5351_driver.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/si5351_driver.c b/si5351_driver.c index 2665987..8d6fdca 100644 --- a/si5351_driver.c +++ b/si5351_driver.c @@ -15,6 +15,12 @@ enum{ }; +static int clear_buffer(si5351_driver *inst){ + + memset(inst->device_data,0, sizeof(inst->device_data)); + +} + static int readRegister(si5351_driver *inst,uint8_t data_addr, uint8_t *data, uint32_t len){ // Write what kind of addr we would like to read from: @@ -32,6 +38,7 @@ static int writeRegister(si5351_driver *inst,uint8_t data_addr, uint32_t len){ // Set address inst->device_data[0] = data_addr; inst->i2c_transfer_evt(inst->i2c_transfer_inst,&inst->device_data[0],len+1, SI5351_I2C_SET); + clear_buffer(inst); return 0; } @@ -40,6 +47,7 @@ static int writeRegisterbyte(si5351_driver *inst,uint8_t data_addr, uint8_t data // Set address uint8_t buff[2] = {data_addr,data}; inst->i2c_transfer_evt(inst->i2c_transfer_inst,&buff[0],2, SI5351_I2C_SET); + clear_buffer(inst); return 0; } @@ -145,10 +153,6 @@ int cm_setOutputEnable(si5351_driver *inst,si5351_Outputs clk_output, si5351_Out break; } - - outputEnableControl->CLK0_OEB = 0; - outputEnableControl->CLK1_OEB = 0; - outputEnableControl->CLK2_OEB = 0; writeRegister(inst,SI5351_REG_OUTPUT_ENABLE_CONTROL, sizeof(si5351_outputEnableControl_t)); @@ -161,7 +165,7 @@ int cm_setCLKControl(si5351_driver *inst, si5351_Outputs clk_output, si5351_CLK_ si5351_CLK_Control_t *CLKx_control = (void*)&inst->device_data[1]; CLKx_control->CLK_PDN = clk_pdn; - + CLKx_control->CLK_INV = 0; CLKx_control->CLK_IDRV = SI5351_DRIVE_STRENGTH_8MA; switch (clk_output) @@ -239,14 +243,6 @@ int cm_resetPLLs(si5351_driver *inst, uint8_t reset_PLLA, uint8_t reset_PLLB){ return 0; } -/* -uint8_t cm_si5351_getRevisionNumber(si5351_driver *inst){ - - // Read Device Status register: - readRegister(inst,0x00, (uint8_t *) &inst->device_data.deviceStatus, sizeof(si5351_deviceStat_t)); - - return inst->device_data.deviceStatus.REVID; -}*/ int cm_si5351_init(si5351_driver *inst, void *i2c_transfer_inst, setGet_I2C_Event_fpt i2c_transfer_evt){