NRF53 QSPI signal with unexpected output

Hi , I got a problem when testing nrf53 qspi signal using a logic analyzer ,with a non-blocking init of qspi and a 4 Byte write , codes are below:

int main(void)
{
    uint32_t i;
    uint32_t err_code;
 
uint8_t base = 0x00;
if(!nrfx_is_word_aligned(m_buffer_tx)){

base = 0x02;
}

    LOG_INF(""
                 "QSPI write and read example using 24bit addressing mode");
    for (i = 0; i < QSPI_TEST_DATA_SIZE; ++i)
    {
        (m_buffer_tx+base)[i] = i;
    }
    for (i = 0; i < QSPI_TEST_DATA_SIZE; ++i)
    {
        (m_buffer_rx+base)[i] = 0x00;
    }


    nrfx_qspi_config_t config = NRFX_QSPI_DEFAULT_CONFIG(sck,cs,d0,d1,d2,d3);
    config.prot_if.writeoc = NRF_QSPI_WRITEOC_PP4IO ; 	
    config.prot_if.addrmode = NRF_QSPI_ADDRMODE_24BIT;


    err_code = nrfx_qspi_init(&config,NULL, NULL);
    
    LOG_INF("QSPI example started. %02X",err_code);


    err_code = nrfx_qspi_write((m_buffer_tx+base), 4, 0x38);
    
    
    }

I got a word align problem at first , solved it by adjusting the address at line 7

according to the ps the qspi out put on 4 wires should look like this :

however I got this from the logic analyzer connecting the nrf53 qspi pins I set  :

With 12 unexpected bytes before the command specified in ps , and 8 unexpected bytes after data . I looked deep into the api nrfx_qspi_write and found out it takes only the buffer address ,length and dst address, nothing relative to these  unexpected bytes, with different inputs into the function I still got these .

We're using nrf53's qspi to communicate with a time-sensitive device , so these addtional bytes are intolerable , wonder if anyone can explain why they exist or how to remove them .

I'm using nrf connect sdk 1.5.1 , with a standard nrf53 dk 

  • It's a bit hard to tell from that scope, can you label the inputs for us? 

    Also, it looks like the clock signal on channel '1' has a fair bit of jitter, can you get an analog scope of it? 

  • The output tranlated to bytes  :

    first part (between the first falling edge of qspi_clk and the first rinsing edge of it)

    0x00 0x00 0x01 0x01 0x00 0x00 0x00 0x00 , 8 bytes

    second part (between the second falling edge of qspi_clk and the second rinsing edge of it)

    0xCC 0xCC 0xCD 0xDC  ,4 Bytes 

    third part (which is the same as described in ps)

    0x00 0x11 0x10 0x00 (it is 0x38h as the figure 129 in nrf53 ps  ) , 0x00 0x00 0x38 0x00 0x01 0x02 0x03 

    forth part 

    0xAA 0xAA 0xAB 0xAB 0xAA 0xAA 0xAA 0xAA , 8 bytes

    fifth part 

    0xAA 0xAA 0x8B 0x89 0x88 0x88 0x88 0x88   , 8 bytes

    these are the output signals after I called nrfx_qspi_write, write length 4 in buffer  {0x00,0x01,0x02,0x03,.....} to address 0x38   (in the codes above , line 34)

    Only the third part is correct , others are unexpected or at least not specified in ps ,  maybe I did'nt configure the qspi correctly ? But the output signal length is way longer than specified in ps , so I'm confused  .

    If anyother infos are needed please tell me , thanks a lot for answering the question .

  • It could be a signal intergity issue, in that case we need an analog scope of the signals.

Related