Hi,
I'm trying to use the nrf52832 with a sdcard application in SDK_13. I based my code on the example provided and managed to get the sd card working without any problems.
However I am now trying to get the another SPI slave working sharing the MOSI, MISO and CLK lines of the SD card without any success. I already manage the chip select pins manually before every call to the sdcard and the other spi slave however it still does not work.
I commented out the APP_ERROR_CHECK since the spi might already be initialized
err_code = nrf_drv_spi_init(&m_spi, &spi_cfg, spi_handler, NULL); /*APP_ERROR_CHECK(err_code);*/
Does anyone have any idea on how to make it work? Is it possible using the SDK?
Here is an excerpt of the code which contains the main steps used:
nrf_gpio_cfg_output(cs_sdcard);
nrf_gpio_pin_write(cs_sdcard, HIGH);
nrf_gpio_cfg_output(cs_slave2);
nrf_gpio_pin_write(cs_slave2, HIGH);
/* Desired sector size and pins to configure */
m_block_dev_sdc.sdc_bdev_config.block_size = SDC_SECTOR_SIZE;
m_block_dev_sdc.sdc_bdev_config.sdc_config.mosi_pin = SPI_MOSI;
m_block_dev_sdc.sdc_bdev_config.sdc_config.miso_pin = SPI_MISO;
m_block_dev_sdc.sdc_bdev_config.sdc_config.sck_pin = SPI_SCLK;
/* Initialize SDcard block device work structure */
m_block_dev_sdc.p_work = &this->m_block_dev_sdc_work;
m_block_dev_sdc.block_dev.p_ops = (const nrf_block_dev_s::nrf_block_dev_ops_s*)&nrf_block_device_sdc_ops;
/* Initialize structure to registers a drive */
drive.config.p_block_device = &m_block_dev_sdc.block_dev;
drive.config.wait_func = NULL;
drive.last_result = NRF_BLOCK_DEV_RESULT_SUCCESS;
drive.state = STA_NOINIT;
drive.busy = false;
/* Registers a drive */
diskio_blockdev_register(&drive, NUMBER_OF_DRIVES);
/* Pointer to the file system object to be registered */
static FATFS filesys;
FRESULT mount_result;
nrf_gpio_pin_write(cs_sdcard, LOW);
/* Mounting volume */
mount_result = f_mount(&filesys, DEFAULT_DRIVE, MOUNT_IMMEDIATELY_OPT);
nrf_gpio_pin_write(cs_sdcard, HIGH);
nrf_gpio_pin_write(cs_sdcard, LOW);
/* Creating a partition */
f_fdisk(PHYSICAL_DRIVE, plist, &work);
/* Creating FAT32 file system */
create_fs_result = f_mkfs(DEFAULT_DRIVE, FM_FAT32, DEFAULT_ALLOCATION_UNIT_SIZE, work, sizeof(work));
nrf_gpio_pin_write(cs_sdcard, HIGH);
nrf_gpio_pin_write(cs_sdcard, LOW);
create_sign_result = f_open(&file1, FILE_SIGN_NAME, FA_CREATE_ALWAYS);
nrf_gpio_pin_write(cs_sdcard, HIGH);
/* This does not work */
nrf_gpio_pin_write(cs_slave2, LOW);
nrf_drv_spi_transfer(&spi_instance, register, size_register, NULL, 0);
nrf_gpio_pin_write(cs_slave2, HIGH);
Thanks
Edit: Added excerpt of code