Hey guys!
I am using your spi-master driver from the SDK 11 with the nRF52 chip. I am trying to read data from a MPU-9250 chip, and through my logic analysis, it seems like everything works well. My problem is that the data on the MISO-line isn't always added to my receive buffer. (But a few rare times, it is!)
I'm at a loss here, maybe I have done something wrong with my configuration?
Here is my code for activating the spi-protocol:
void spi_init(void){
uint32_t err_code;
nrf_drv_spi_config_t spi_config = NRF_DRV_SPI_DEFAULT_CONFIG(SPI_INSTANCE);
spi_config.ss_pin = SPI_CS_PIN;
spi_config.frequency = NRF_DRV_SPI_FREQ_1M;
spi_config.mode = NRF_DRV_SPI_MODE_0;
spi_config.bit_order = NRF_DRV_SPI_BIT_ORDER_MSB_FIRST;
err_code = nrf_drv_spi_init(&spi, &spi_config, spi_event_handler); }
Here is my function for reading from a given register:
void spidev_readBytes(uint8_t* regAddr, uint8_t length, uint8_t* rx_buffer){
regAddr[0] = regAddr[0] + 0x80;
nrf_drv_spi_transfer(&spi, regAddr, length, rx_buffer, length); }
Here is my driver configuration:
#define SPI1_ENABLED 1
#if (SPI1_ENABLED == 1)
#define SPI1_USE_EASY_DMA 0
#define SPI1_CONFIG_SCK_PIN 10
#define SPI1_CONFIG_MOSI_PIN 9
#define SPI1_CONFIG_MISO_PIN 8
#define SPI1_CONFIG_IRQ_PRIORITY APP_IRQ_PRIORITY_HIGH
I might add that I have also configured pin 7, 8, 9 and 10 to be used as GPIO.
Lastly, a sample of my logic analysis:
The issue is that the value 0x71 is very, very rarely added to the rx_buffer.