This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

I2S TXPTRUPD and STOP timing

Question for I2S.

  1. Execute follow.
    [TXD.PTR set A] 1st
    [START]
    [TXPTRUPD event] (not set TXD.PTR) 2nd.
    2nd transfer address use A?

  2. How long time between [TXPTRUPD event] and [2nd transfer]?

  3. TASKS_STOP do. when do transfer stop? (when current block finished?)

  4. Is it possible to reliably stop it after transferring the specified number of blocks?

Parents
  • Hi,

    1. Yes, if you don’t update the TXD pointer after a TXPTRUPD event, the next transfer will continue to use address A.
    2. See this figure here. You can set the TXD.PTR for the 2nd transfer, before the first transfer have started. ( TXD.PTR = C in the figure)
    3. The transfer stops close to immediately after you call TASKS_STOP. It will not wait for the block to finish.
    4. Yes, that should be possible. I recommend using the I2S drivers, and use the data_handler to keep track of the numbers of block you are sending. The data_handler is called for every TXPTRUPD/RXPTRUPD event, and you will get a TXPTRUPD event for every RXTXD.MAXCNT words that are sent on the SDOUT pin. You can then use nrf_drv_i2s_stop() to stop after you have sent the number of blocks you want.
  • Thanks very much!!

    I try it.

Reply Children
No Data
Related