HI all
I am facing SPI cofiguration issue on nRF 52 DK.I am using PAJ7025R2 sensor and will act as a slave, and nRF52 acts as a master.Currently i am not getting any data from MISO pin.
I am using spi example as a reference.
configuration settings:
#define NRF_DRV_SPI_DEFAULT_CONFIG \
{ \
.sck_pin = NRF_DRV_SPI_PIN_NOT_USED, \
.mosi_pin = NRF_DRV_SPI_PIN_NOT_USED, \
.miso_pin = NRF_DRV_SPI_PIN_NOT_USED, \
.ss_pin = NRF_DRV_SPI_PIN_NOT_USED, \
.irq_priority = SPI_DEFAULT_CONFIG_IRQ_PRIORITY, \
.orc = 0xFF, \
.frequency = NRF_DRV_SPI_FREQ_1M, \
.mode = NRF_DRV_SPI_MODE_2, \
.bit_order = NRF_DRV_SPI_BIT_ORDER_LSB_FIRST, \
}
i have probed on C.R.O also, where i am getting all(SCK,MOSI,CS) signals except MISO signal.
i have changed configuration only, i didn't change anything in low level drivers.
for my task, is it require to change anything low level also?
if so, please help me.
below is my main application..
#include "nrf_drv_spi.h"
#include "app_util_platform.h"
#include "nrf_gpio.h"
#include "nrf_delay.h"
#include "boards.h"
#include "app_error.h"
#include <string.h>
#include "nrf_log.h"
#include "nrf_log_ctrl.h"
#include "nrf_log_default_backends.h"
#define SPI_INSTANCE 0 /**< SPI instance index. */
static const nrf_drv_spi_t spi = NRF_DRV_SPI_INSTANCE(SPI_INSTANCE); /**< SPI instance. */
static volatile bool spi_xfer_done; /**< Flag used to indicate that SPI instance completed the transfer. */
//#define TEST_STRING "Nordic"
//static uint8_t m_tx_buf[] = TEST_STRING; /**< TX buffer. */
static uint8_t m_tx_buf[] = {0x00,0x64,0x00,0x80,0x02,0x03}; /**< TX buffer. */
static uint8_t m_rx_buf[2] = {0x00}; /**< RX buffer. */
static const uint8_t m_length = sizeof(m_tx_buf); /**< Transfer length. */
/**
* @brief SPI user event handler.
* @param event
*/
void spi_event_handler(nrf_drv_spi_evt_t const * p_event,
void * p_context)
{
spi_xfer_done = true;
NRF_LOG_INFO("Transfer completed.");
// if (m_rx_buf[0] == 0)
// {
NRF_LOG_INFO(" Received:");
NRF_LOG_HEXDUMP_INFO(m_rx_buf, strlen((const char *)m_rx_buf));
for (int i=0; i<2; i++)
{
NRF_LOG_INFO(" m_rx_buf[%d] = 0x%x\r\n", i, m_rx_buf[i]);
}
// }
}
int main(void)
{
bsp_board_init(BSP_INIT_LEDS);
APP_ERROR_CHECK(NRF_LOG_INIT(NULL));
NRF_LOG_DEFAULT_BACKENDS_INIT();
nrf_drv_spi_config_t spi_config = NRF_DRV_SPI_DEFAULT_CONFIG;
spi_config.ss_pin = SPI_SS_PIN;
spi_config.miso_pin = SPI_MISO_PIN;
spi_config.mosi_pin = SPI_MOSI_PIN;
spi_config.sck_pin = SPI_SCK_PIN;
APP_ERROR_CHECK(nrf_drv_spi_init(&spi, &spi_config, spi_event_handler, NULL));
NRF_LOG_INFO("SPI example started.");
APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, &m_tx_buf[0], 1, NULL, 0));//sending data to slave
nrf_delay_ms(200);
APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, &m_tx_buf[1], 1, NULL, 0));//sending data to slave
nrf_delay_ms(200);
APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, &m_tx_buf[2], 1, NULL, 0));//sending data to slave
nrf_delay_ms(200);
while (1)
{
// Reset rx buffer and transfer done flag
memset(m_rx_buf, 0, m_length);
spi_xfer_done = false;
//APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, m_tx_buf, 5, m_rx_buf, m_length));
APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, &m_tx_buf[3], 1, NULL, 0));//sending data to slave
nrf_delay_ms(5000);
APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, &m_tx_buf[4], 1, NULL ,0));//sending data to slave
nrf_delay_ms(5000);
// APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, NULL, 0,&m_rx_buf[0],2));//receive data from slave
// nrf_delay_ms(5000);
NRF_LOG_INFO(" m_rx_buf[0] = 0x%x, m_rx_buf[0] = 0x%x\r\n",m_rx_buf[0], m_rx_buf[1]);
while (!spi_xfer_done)
{
__WFE();
}
NRF_LOG_FLUSH();
bsp_board_led_invert(BSP_BOARD_LED_0);
nrf_delay_ms(200);
}
}
any help that could be greatful.