/* ser_phy API function */
uint32_t ser_phy_open(ser_phy_events_handler_t events_handler)
{
    if (m_spi_master_state != SER_PHY_STATE_DISABLED)
    {
        return NRF_ERROR_INVALID_STATE;
    }

    if (events_handler == NULL)
    {
        return NRF_ERROR_NULL;
    }

    uint32_t err_code = NRF_SUCCESS;

    ser_phy_init_gpio();
    m_spi_master_state        = SER_PHY_STATE_IDLE;
    m_callback_events_handler = events_handler;
    spi_master_config_t spi_master_config = SPI_MASTER_INIT_DEFAULT;
    spi_master_config.SPI_Pin_SCK     = SER_PHY_SPI_MASTER_PIN_SCK;
    spi_master_config.SPI_Pin_MISO    = SER_PHY_SPI_MASTER_PIN_MISO;
    spi_master_config.SPI_Pin_MOSI    = SER_PHY_SPI_MASTER_PIN_MOSI;
    spi_master_config.SPI_Pin_SS      = SER_PHY_SPI_MASTER_PIN_SLAVE_SELECT;
    spi_master_config.SPI_PriorityIRQ = APP_IRQ_PRIORITY_MID;
    err_code                          = spi_master_open(SER_PHY_SPI_MASTER, &spi_master_config);

    if (err_code != NRF_SUCCESS)
    {
        return err_code;
    }
    spi_master_evt_handler_reg(SER_PHY_SPI_MASTER, ser_phy_spi_master_event_handler);
    ser_phy_init_gpiote();
    ser_phy_init_PendSV();
    return err_code;
}
Ejemplo n.º 2
0
/* ser_phy API function */
uint32_t ser_phy_open(ser_phy_events_handler_t events_handler)
{

    if (m_spi_master_state != SER_PHY_STATE_DISABLED)
    {
        return NRF_ERROR_INVALID_STATE;
    }

    if (events_handler == NULL)
    {
        return NRF_ERROR_NULL;
    }

    uint32_t err_code = NRF_SUCCESS;
    m_spi_master_state        = SER_PHY_STATE_IDLE;
    m_callback_events_handler = events_handler;
    ser_phy_init_gpiote();

    /* Configure SPI Master driver */
    spi_master_config_t spi_master_config;
    spi_master_config.SPI_Freq     = SPI_FREQUENCY_FREQUENCY_M1;
    spi_master_config.SPI_Pin_SCK  = SER_PHY_SPI_MASTER_PIN_SCK;
    spi_master_config.SPI_Pin_MISO = SER_PHY_SPI_MASTER_PIN_MISO;
    spi_master_config.SPI_Pin_MOSI = SER_PHY_SPI_MASTER_PIN_MOSI;
    spi_master_config.SPI_Pin_SS   = SER_PHY_SPI_MASTER_PIN_SLAVE_SELECT;
    spi_master_config.SPI_ORDER    = SPI_CONFIG_ORDER_LsbFirst;
    spi_master_config.SPI_CPOL     = SPI_CONFIG_CPOL_ActiveHigh;
    spi_master_config.SPI_CPHA     = SPI_CONFIG_CPHA_Leading;

    err_code = spi_master_open(SER_PHY_SPI_MASTER, &spi_master_config);

    if (err_code != NRF_SUCCESS)
    {
        return err_code;
    }
#ifdef _SPI_5W_
    spi_5W_master_evt_handler_reg(SER_PHY_SPI_MASTER, ser_phy_spi_master_event_handler);
#else
    spi_master_evt_handler_reg(SER_PHY_SPI_MASTER, ser_phy_spi_master_event_handler);
#endif
    ser_phy_init_pendSV();

    return err_code;
}