Problem related:
When SPI host initialized with DMA channel it apply limitations (problem) for transactions:
read transactions must be in length of N*32bit , do not work for transactions like 31 bit.
do not work with FULL_DUPLEX (maybe only ESP32 related)
additional time loss at DMA prepare and finish - it is documented in "Transaction Duration"
Solution:
Implementing additional transaction flag like "SPI_TRANS_DONT_DMA" which will forse ignoring of SPI bus dma_enabled flag and will perform non dma transaction.
I do small modification to SPI master driver and SPI hal to check and it works for me, but maybe I miss something or thre is other existing options ??
Should I place PullRequest with mentioned changes or ?
I use SPI Master for J-Tag where are mixed random length transactions like 1,3,15 bits which do not work with DMA and long transactions for 1kbyte where only DMA transaction could be used.
There is same need for display driver where control transaction is 9 bits or 18 bits and color transfers are long and are n*16bit long.
And some driver need FULL_DUPLEX transaction mixing with long transactions.
Problem related: When SPI host initialized with DMA channel it apply limitations (problem) for transactions:
Solution: Implementing additional transaction flag like "SPI_TRANS_DONT_DMA" which will forse ignoring of SPI bus dma_enabled flag and will perform non dma transaction.
I do small modification to SPI master driver and SPI hal to check and it works for me, but maybe I miss something or thre is other existing options ?? Should I place PullRequest with mentioned changes or ?
I use SPI Master for J-Tag where are mixed random length transactions like 1,3,15 bits which do not work with DMA and long transactions for 1kbyte where only DMA transaction could be used. There is same need for display driver where control transaction is 9 bits or 18 bits and color transfers are long and are n*16bit long. And some driver need FULL_DUPLEX transaction mixing with long transactions.
Would like to hear comments.