Пример #1
0
static void ep_cs(int val){
    //BP12 
    if(val == 1){
      spi_set_nss_high(SPI2);
      //gpio_set(GPIOB, GPIO12);
    } else {
      spi_set_nss_low(SPI2);
      //gpio_clear(GPIOB, GPIO12);
    }
}
Пример #2
0
bool Spi_stm32::transfer(uint8_t* out_buffer, uint8_t* in_buffer, uint32_t nbytes)
{
    bool ret = true;

    if (!config_.ss_mode_hard)
    {
        spi_set_nss_high(spi_);
    }

    if ((out_buffer != NULL) && (in_buffer != NULL))
    {
        // TX & RX transfer
        for (uint32_t i = 0; i < nbytes; i++)
        {
            in_buffer[i] = spi_xfer(spi_, out_buffer[i]);
        }
    }
    else if ((out_buffer == NULL) && (in_buffer != NULL))
    {
        // RX transfer
        for (uint32_t i = 0; i < nbytes; i++)
        {
            in_buffer[i] = spi_xfer(spi_, 0);
        }
    }
    else if ((out_buffer != NULL) && (in_buffer == NULL))
    {
        // TX transfer
        for (uint32_t i = 0; i < nbytes; i++)
        {
            (void)spi_xfer(spi_, out_buffer[i]);
        }
    }
    else if ((out_buffer == NULL) && (in_buffer == NULL))
    {
        // Error
        ret = false;
    }

    if (!config_.ss_mode_hard)
    {
        spi_set_nss_low(spi_);
    }

    return ret;
}
Пример #3
0
static void spi_setup(void)
{
spi_set_master_mode(SPI1);
spi_set_baudrate_prescaler(SPI1, SPI_CR1_BR_FPCLK_DIV_64);
spi_set_clock_polarity_1(SPI1);
spi_set_clock_phase_0(SPI1);
spi_set_bidirectional_transmit_only_mode(SPI1);
//spi_set_unidirectional_mode(SPI1); /* bidirectional but in 3-wire */
spi_set_data_size(SPI1, SPI_CR2_DS_16BIT);
//spi_enable_software_slave_management(SPI1);
spi_send_msb_first(SPI1);
spi_set_nss_low(SPI1);
//spi_enable_ss_output(SPI1);
//spi_fifo_reception_threshold_8bit(SPI1);
//SPI_I2SCFGR(SPI1) &= ~SPI_I2SCFGR_I2SMOD;
spi_enable(SPI1);
}