Hello,
I'm using SPI 3 to communicate with a NAND memory. I'm able to go up to 8MHz but not more than that. Do I need to set an array list or use the spi manager.
Is there any exemple of the spi going up to 16Mhz?
Best regards
Hello,
I'm using SPI 3 to communicate with a NAND memory. I'm able to go up to 8MHz but not more than that. Do I need to set an array list or use the spi manager.
Is there any exemple of the spi going up to 16Mhz?
Best regards
Hi,
There is no example of SPIM3 with speeds > 8 MHz. It is supported by the HW, but you have to adapt the driver slightly as it only supports up to 8 MHz. Note that that you should read the errata list if you use SPIM3 as there is quite a few issues with it.
Hello,
I have seen the thread about the SPIM3->IFTIMING.RXDELAY and i've set it to 2 but it doesn't work either. Do you have more information about how I should adapt the driver? I have activated the anomaly 198 workaround but no success.
Hello,
I have seen the thread about the SPIM3->IFTIMING.RXDELAY and i've set it to 2 but it doesn't work either. Do you have more information about how I should adapt the driver? I have activated the anomaly 198 workaround but no success.
Fast SPIM is only functional on the final silicon. Are you using a engineering sample (for instance preview DK) or do you have revision 1? (What is the marking on the chip?)
We are using the revision 1. We also have some revision B but as it is describe on some other thread it seems to works with this one too no?
Anyway all our product are with the final revision.
I see, then all should be good. Can you let me know which SDK you are using and how you have configured and are using the SPIM3 peripheral? Seeing your code would be helpful. In what way does it not work?
We are using the SDK 15, I'm now migrating to the 15.2. The device work fine at 8Mhz but to optimize our device, we need to go up to 16Mhz.
here is the init part in our code :
void init_spi() {
// CS output
nrf_gpio_cfg_output(SPI_CS);
nrfx_spim_config_t config = NRFX_SPIM_DEFAULT_CONFIG;
config.sck_pin = SPI_SCK;
config.miso_pin = SPI_MISO;
config.mosi_pin = SPI_MOSI;
config.rx_delay = 2;
config.frequency = NRF_SPIM_FREQ_8M; // max working frequency
config.irq_priority =2;
config.mode = NRF_SPIM_MODE_0;
nrf_gpio_cfg_default(IO_NAND_IO0);
nrf_gpio_cfg_default(IO_NAND_IO1);
nrf_gpio_cfg_output(IO_NAND_IO2);
nrf_gpio_cfg_output(IO_NAND_IO3);
nrf_gpio_pin_write(IO_NAND_IO2, 1);
nrf_gpio_pin_write(IO_NAND_IO3, 1);
uint32_t err_code = nrfx_spim_init(&m_spi, &config, spi_event_handler, NULL);
}
Thanks for your help
I see. What happens when you set "config.frequency = NRF_SPIM_FREQ_16M;" this instead? In what way does things fail?