# HG changeset patch # User Ethan Zonca # Date 2016-03-06 21:56:52 # Node ID b5b9635e3cd80faa503f13458c0a19119391993e # Parent 7a91d7557fd33acb27ba21e1af9dcd5e265582c8 Fix comms issues with the SI5351 which actually works now diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml --- a/.settings/language.settings.xml +++ b/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + diff --git a/lib/si5351/si5351.c b/lib/si5351/si5351.c --- a/lib/si5351/si5351.c +++ b/lib/si5351/si5351.c @@ -334,7 +334,8 @@ uint8_t si5351_set_freq(uint64_t freq, u uint8_t params[20]; void si5351_set_pll(uint64_t pll_freq, enum si5351_pll target_pll) -{ struct Si5351RegSet pll_reg; +{ + struct Si5351RegSet pll_reg; si5351_pll_calc(pll_freq, &pll_reg, ref_correction); @@ -905,16 +906,10 @@ void si5351_set_clock_fanout(enum si5351 -/* AAAH REFREAKINGIMPLEMENT WITH COMMON STANDARD I2C THINGS: -~/Projects/featherhab-fw/libopencm3/lib/stm32/common/i2c_common_all.c -*/ - uint8_t si5351_write_bulk(uint8_t addr, uint8_t bytes, uint8_t *data) { - HAL_Delay(300); uint32_t res = HAL_I2C_Mem_Write(si5351_i2cport, SI5351_BUS_BASE_ADDR, addr, 1, data, bytes, 100); led_blink(res); - HAL_Delay(300); @@ -931,12 +926,10 @@ uint8_t si5351_write_bulk(uint8_t addr, uint8_t si5351_write(uint8_t addr, uint8_t data) { - HAL_Delay(300); uint8_t data_arr[1] = {data}; - uint8_t res = HAL_I2C_Mem_Write(si5351_i2cport, SI5351_BUS_BASE_ADDR, addr, 1, data, 1, 100); + volatile uint8_t res = HAL_I2C_Mem_Write(si5351_i2cport, SI5351_BUS_BASE_ADDR, addr, 1, data_arr, 1, 100); led_blink(res); - HAL_Delay(300); /* Wire.beginTransmission(SI5351_BUS_BASE_ADDR); Wire.write(addr); @@ -949,11 +942,9 @@ uint8_t si5351_read(uint8_t addr) { uint8_t data_arr[1] = {0}; - HAL_Delay(300); uint8_t res = HAL_I2C_Mem_Read(si5351_i2cport, SI5351_BUS_BASE_ADDR, addr, 1, data_arr, 1, 100); led_blink(res); - HAL_Delay(300); /* Wire.beginTransmission(SI5351_BUS_BASE_ADDR); Wire.write(addr); @@ -966,7 +957,7 @@ uint8_t si5351_read(uint8_t addr) reg_val = Wire.read(); } */ - return data_arr[1]; + return data_arr[0]; } /*********************/ diff --git a/src/main.c b/src/main.c --- a/src/main.c +++ b/src/main.c @@ -23,7 +23,7 @@ int main(void) sysclk_init(); gpio_init(); - led_blink(5); + //led_blink(5); MX_DMA_Init(); MX_ADC_Init(); i2c_init(); @@ -39,18 +39,28 @@ int main(void) si5351_init(i2c_get(), SI5351_CRYSTAL_LOAD_8PF, 0); si5351_set_correction(0); + //SI5351_XTAL_FREQ + si5351_set_pll(SI5351_PLL_FIXED, SI5351_PLLA); - si5351_set_pll(SI5351_PLL_FIXED, SI5351_PLLA); + si5351_set_ms_source(SI5351_CLK0, SI5351_PLLA); + si5351_set_ms_source(SI5351_CLK1, SI5351_PLLA); + si5351_set_ms_source(SI5351_CLK2, SI5351_PLLA); + si5351_set_ms_source(SI5351_CLK3, SI5351_PLLA); - si5351_set_freq(100000UL * 100, 0, SI5351_CLK0); + si5351_set_freq(1000000UL * 100, SI5351_PLL_FIXED, SI5351_CLK0); si5351_drive_strength(SI5351_CLK0, SI5351_DRIVE_2MA); // Set for max power if desired (8ma max) + + si5351_output_enable(SI5351_CLK0, 1); // Disable the clock initially + //wspr_encode(call, loc, dbm, tx_buffer); si5351_pll_reset(SI5351_PLLA); + HAL_Delay(1000); + uint32_t led_timer = HAL_GetTick(); uint32_t last_gps = HAL_GetTick();