LS1021 SPI reception with eDMA

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LS1021 SPI reception with eDMA

1,375 Views
pratapgaikwad
Contributor I

I am trying to use SPI with eDMA. The SPI transmission with eDMA is working properly, but I am facing issue with SPI reception with eDMA. Please see below details on issue:

eDMA is not able to transfer content from SPI RX FIFO to destination RAM location properly. After the trigger from SPI RX FIFO Drain event, DMA transaction gets completed but SPI RX FIFO pointer does not change regularly after each DMA read operation on SPI POPR register

 

Following configuration is used:

  1. SPI Configuration for RX DMA transfer: 
    • Enable RX FIFO Drain DMA triggering in RSER register.
  2. eDMA channel configuration:
    • Source Port Size: 32 bit
    • Major loop count: Total number of 32bit-words to be transferred
    • Source Address: Address of SPI POPR register
    • Destination offset: 4 
    • Source offset: 0
    • Destination Address: Address of RAM buffer
    • NBYTES (Minor loop): 4 bytes
    • Destination port Size: 32 bit
    • Used DMA channel number: 1
  3. DMA MUX configuration
    • Channel 1 Trigger source -> SPI RFDF
Labels (1)
0 Kudos
2 Replies

924 Views
Pavel
NXP Employee
NXP Employee

Check your eDMA configuration. See Application Note for eDMA using in the attachment.


Have a great day,
Pavel Chubakov

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

924 Views
pratapgaikwad
Contributor I

Thanks for sharing application note on eDMA. I read the applicatiion note and also verified my eDMA configuration. You can see the eDMA configuration I made in original question. I am currently also using eDMA with other peripherals of LS1021A (like LPUART), and it works very well without any issue. I am facing the issue only with SPI and eDMA combination (SPI reception with eDMA to be specific).  DMA performs complete transfer as specified by eDMA configuration, but the "SPI RX FIFO pointer" does not change regularly after each DMA read operation on "SPI POPR" register.  This results in stale values transfered by DMA (because RX FIFO pointer does not change).

0 Kudos