I'm develping my application with nrf52832 and nrf SDK v17.
I'm testing SPI interface so that I can use the external flash.
When I using SPI without BLE stack,the waveform looks like this:
But when I add BLE stack to application,the wave form changed..It looks like this:
The relevant code being executed when the situation shown in the figure occurred is as follows
void hal_spi_init(void) { 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)); } void SpiFlash_WriteOneByte(uint8_t Dat) { uint8_t len = 1; spi_tx_buf[0] = Dat; spi_xfer_done = false; APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, spi_tx_buf, len, spi_rx_buf, len)); while(!spi_xfer_done) ; } void SpiFlash_Write_Enable(void) { spi_xfer_done = false; SpiFlash_WriteOneByte(SPIFlash_WriteEnable_CMD); while(!spi_xfer_done) ; } void SPIFlash_Erase_Sector(uint8_t Block_Num,uint8_t Sector_Number) { SpiFlash_Write_Enable(); spi_tx_buf[0] = SPIFlash_SecErase_CMD; spi_tx_buf[1] = Block_Num; spi_tx_buf[2] = Sector_Number<<4; spi_tx_buf[3] = 0x00; spi_xfer_done = false; APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, spi_tx_buf, 4, spi_rx_buf, 4)); while(!spi_xfer_done) ; nrf_delay_ms(10); return ; } uint8_t SpiFlash_Write_Page(uint8_t *pBuffer, uint32_t WriteAddr, uint32_t WriteBytesNum) { uint8_t len; SpiFlash_Write_Enable(); spi_tx_buf[0] = SPIFlash_PageProgram_CMD; spi_tx_buf[1] = (uint8_t)((WriteAddr&0x00ff0000)>>16); spi_tx_buf[2] = (uint8_t)((WriteAddr&0x0000ff00)>>8); spi_tx_buf[3] = (uint8_t)WriteAddr; memcpy(&spi_tx_buf[4],pBuffer,WriteBytesNum); len = WriteBytesNum + 4; spi_xfer_done = false; APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, spi_tx_buf, len, spi_rx_buf, 0)); while(!spi_xfer_done) ; return RET_SUCCESS; } uint8_t SpiFlash_Read(uint8_t *pBuffer,uint32_t ReadAddr,uint32_t ReadBytesNum) { uint8_t len; spi_tx_buf[0] = SPIFlash_ReadData_CMD; spi_tx_buf[1] = (uint8_t)((ReadAddr&0x00ff0000)>>16); spi_tx_buf[2] = (uint8_t)((ReadAddr&0x0000ff00)>>8); spi_tx_buf[3] = (uint8_t)ReadAddr; len = ReadBytesNum + 4; spi_xfer_done = false; APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, spi_tx_buf, len, spi_rx_buf, len)); while(!spi_xfer_done) ; memcpy(pBuffer,&spi_rx_buf[4],ReadBytesNum); return RET_SUCCESS; } hal_spi_init(); nrf_delay_ms(100); SPIFlash_Erase_Sector(0,0); nrf_delay_ms(100); flash_tx_buf[0] = 0;flash_tx_buf[1] = 0;flash_tx_buf[2] = 0;flash_tx_buf[3] = 0;flash_tx_buf[4] = 1; SpiFlash_Write_Page(flash_tx_buf,0x00,5); SpiFlash_Read(flash_rx_buf,0x00,5);