- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I use cyusb3065 and 0v5640 to tranmit image data by DMA. I create 3 dma channel to transmit stream date. I create Dma channel as:
(1)Dma0 :
prodSckId = CY_U3P_PIB_SOCKET_0
consSckId = CY_U3P_CPU_SOCKET_CONS
notification = CY_U3P_DMA_CB_PROD_EVENT
(2)Dma1:
prodSckId = CY_U3P_PIB_SOCKET_1
consSckId = CY_U3P_CPU_SOCKET_CONS
notification = CY_U3P_DMA_CB_PROD_EVENT
(3)Dma2:
prodSckId = CY_U3P_CPU_SOCKET_PROD
consSckId = CY_U3P_UIB_SOCKET_CONS_3
Dma0 and Dma1 registe same dma callback function. Dma2 registe none callback.
In this dma callback, if callback type is CY_U3P_DMA_CB_PROD_EVENT, I use api CyU3PDmaChannelGetBuffer() get buffer with dma2 handle, and commit buffer by dma2 channel.
I get gpif state and print it after commit buffer. I find gipf state is:
GpifStatus = 7 //CX3_WAIT_TO_FILL_SCK1
GpifStatus = 131
GpifStatus = 131
GpifStatus = 131
GpifStatus = 9 //CX3_PARTIAL_BUFFER_IN_SCK0
GpifStatus = 9
GpifStatus = 9
GpifStatus = 9
And I find the GPIF callback did not enter. I can see bushound catch 8 stream packet. What's my problem? How can I use these 3 dma channel cooperate with GPIF correctly?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
- Did you register for GpifInterrupt callback?
- Since you are discarding the buffers from Dma0 and Dma1, can you make consumers for Dma0 and Dma1 as UIB_CONS_X and UIB_CONS_Y (which are not used for any other channels) and then check if you are getting Gpif Intr callback?
- Can you let me know why there are only 8 dma callbacks? (You should have many Dma callbacks before partial buffer. Isn't it?)
Regards,
Hemanth