Hi,
I am using nRF52840 on custom board. I am trying to configure SPI pins, but I am not getting anything on the clock pin. I can see the chip select pin going low and high which is good. But there is no clock on the pin. Following is the code snippet from my project.
#define MEM_CS NRF_GPIO_PIN_MAP(0,4) #define MEM_SI NRF_GPIO_PIN_MAP(0,7) #define MEM_SO NRF_GPIO_PIN_MAP(1,8) #define MEM_SCK NRF_GPIO_PIN_MAP(0,13) void memInit(void) { //GPIO configuration nrf_gpio_cfg_output(MEM_CS); nrf_gpio_cfg_output(MEM_SI); nrf_gpio_cfg_output(MEM_SCK); nrf_gpio_cfg_input(MEM_SO, GPIO_PIN_CNF_PULL_Pulldown); //SPI configuration nrf_drv_spi_config_t spi_config = NRF_DRV_SPI_DEFAULT_CONFIG; spi_config.ss_pin = MEM_CS; spi_config.miso_pin = MEM_SO; spi_config.mosi_pin = MEM_SI; spi_config.sck_pin = MEM_SCK; spi_config.bit_order = NRF_SPI_BIT_ORDER_MSB_FIRST; spi_config.frequency = NRF_SPI_FREQ_250K; spi_config.mode = NRF_SPI_MODE_2; nrf_drv_spi_init(&spi, &spi_config, spi_event_handler, NULL); } uint32_t memId() { __disable_irq(); nrf_gpio_pin_clear(MEM_CS); //Pin goes low now err = nrf_drv_spi_transfer(&spi, p_tx_buffer, sizeof(tx_buffer), NULL, 0); nrf_delay_ms(100); nrf_gpio_pin_set(MEM_CS); //Pin goes high now __enable_irq(); return err; }
For my custom board configuration I have set Preprocessor definitions to BOARD_CUSTOM. But for simplicity, I have defined the pins in the source code file. I am thinking to test it first and then I can define the pins for SPI in custom_board.h. On the custom board I have checked for the pins they are not connected to any other peripheral.
For development, I am using SES with nRF SDK15.0.0 and Softdevice S140.
Any insight would be appreciated.
Thanks!