- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have been trying to use DMA to transfer a pre-defined byte array out of a transmit only standard UART.
Everything works fine when a DMA channel is defined for both Tx and Rx (Based on the DMA_UART_PSoC4 example code) and everything works as the interrupts are turned off, the second descriptor deleted and all the code except the "RxDma_Start((void *)UART_RX_FIFO_RD_PTR, (void *)uartBuffer0);" deleted. When this line is deleted, or the RxDma block removed the schematic the TxDma stops working.
I am clearly missing something or there is some deep reason for this, anyone got any insights?
Many thanks
Dave
Solved! Go to Solution.
- Labels:
-
PSoC 4 MCU
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
In order to use DMA, the CyDmaEnable(); function must be called.
In the project you attached, this function is only called in the RxDma_Start() function.
Please add CyDmaEnable(); after TxDmaSetConfig();.
It will probably work.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
In order to use DMA, the CyDmaEnable(); function must be called.
In the project you attached, this function is only called in the RxDma_Start() function.
Please add CyDmaEnable(); after TxDmaSetConfig();.
It will probably work.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Many thanks, it was exactly that.
I had forgotten how much gets buried in the auto generated code, and is not documented in the module data sheets. It kept me guessing for several hours...must be losing my touch! 🙂