Files @ b5b9635e3cd8
Branch filter:

Location: FeatherHAB/wsprhab/src/main.c - annotation

Ethan Zonca
Fix comms issues with the SI5351 which actually works now
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0dd5c923fdea
b5b9635e3cd8
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
b5b9635e3cd8
b5b9635e3cd8
0d9900312165
b5b9635e3cd8
0d9900312165
b5b9635e3cd8
b5b9635e3cd8
b5b9635e3cd8
0d9900312165
b5b9635e3cd8
0d9900312165
0d9900312165
b5b9635e3cd8
b5b9635e3cd8
0d9900312165
b5b9635e3cd8
0d9900312165
0d9900312165
0d9900312165
0d9900312165
b5b9635e3cd8
b5b9635e3cd8
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
0d9900312165
#include "stm32f0xx_hal.h"
#include "si5351.h"
#include "jtencode.h"
#include "adc.h"
#include "dma.h"
#include "i2c.h"
#include "usart.h"
#include "gpio.h"
#include "gps.h"


void sysclk_init(void);


char call[7] = "N0CALL";
char loc[5] = "AA00";
uint8_t dbm = 27;
uint8_t tx_buffer[255];

int main(void)
{
    HAL_Init();

    sysclk_init();
    gpio_init();
    //led_blink(5);
    MX_DMA_Init();
    MX_ADC_Init();
    i2c_init();

    HAL_GPIO_WritePin(OSC_NOTEN, 0);
    HAL_GPIO_WritePin(TCXO_EN, 1);
    HAL_Delay(100);

//    MX_USART1_UART_Init();

    //jtencode_init();
    //gps_init();
    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_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(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();

    while (1)
    {
        if(HAL_GetTick() - led_timer > 100)
        {
            HAL_GPIO_TogglePin(LED_BLUE);
            led_timer = HAL_GetTick();
        }
        if(HAL_GetTick() - last_gps > 100)
        {
//            gps_process();
            last_gps = HAL_GetTick();
        }
    }
}


// Initialize system clocks
void sysclk_init(void)
{
    RCC_OscInitTypeDef RCC_OscInitStruct;
    RCC_ClkInitTypeDef RCC_ClkInitStruct;
    RCC_PeriphCLKInitTypeDef PeriphClkInit;

    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSI14;
    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
    RCC_OscInitStruct.HSI14State = RCC_HSI14_ON;
    RCC_OscInitStruct.HSICalibrationValue = 16;
    RCC_OscInitStruct.HSI14CalibrationValue = 16;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
    HAL_RCC_OscConfig(&RCC_OscInitStruct);

    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
    HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);

    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_I2C1;
    PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1;
    PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_SYSCLK;
    HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);

    HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

    HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

    // SysTick_IRQn interrupt configuration 
    HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}