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); } }
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; }
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); }