Other Parts Discussed in Thread: DCA1000EVM
Hi
What I am trying now is transmit 2D FFT output for all virtual antenna(for this case 8 antennas) through lvds.
With references from several e2e forums, I found that it is possible to send user data buffer upto 3 by adding
gMmwDssMCB.lvdsStream.swSessionEDMAChannelTable[2].chainChannelsId = MMW_LVDS_STREAM_SW_SESSION_EDMA_CH_2;
gMmwDssMCB.lvdsStream.swSessionEDMAChannelTable[2].shadowLinkChannelsId = MMW_LVDS_STREAM_SW_SESSION_EDMA_SHADOW_CH_2;
at dss_lvds_stream.c
and changing MMWDEMO_LVDS_STREAM_SW_SESSION_MAX_EDMA_CHANNEL 2U to 3U at dss_lvds_stream.h
and adding
#define MMW_LVDS_STREAM_SW_SESSION_EDMA_CH_2 EDMA_TPCC1_REQ_FREE_15
#define MMW_LVDS_STREAM_SW_SESSION_EDMA_SHADOW_CH_2 (EDMA_NUM_DMA_CHANNELS + 29U)
at dss_resources.h
However due to the size of 2D fft out for all virtual antennas exceeds the buffer limits of user lvds (rangebins*dopplerbins*virtualantennas*(8bytes)) I have to increase the number of user buffer
So what i've done until now is delete 15th of hw buffer and add that buffer to sw buffer, which does not take more memory.
//#define MMW_LVDS_STREAM_HW_SESSION_EDMA_CH_14 EDMA_TPCC1_REQ_FREE_14
/*SW Session*/
#define MMW_LVDS_STREAM_SW_SESSION_EDMA_CH_0 EDMA_TPCC1_REQ_FREE_14
#define MMW_LVDS_STREAM_SW_SESSION_EDMA_CH_1 EDMA_TPCC1_REQ_FREE_15
#define MMW_LVDS_STREAM_SW_SESSION_EDMA_CH_2 EDMA_TPCC1_REQ_FREE_16
#define MMW_LVDS_STREAM_SW_SESSION_EDMA_CH_3 EDMA_TPCC1_REQ_FREE_17
//#define MMW_LVDS_STREAM_HW_SESSION_EDMA_SHADOW_CH_14 (EDMA_NUM_DMA_CHANNELS + 28U)
/*SW Session*/
#define MMW_LVDS_STREAM_SW_SESSION_EDMA_SHADOW_CH_0 (EDMA_NUM_DMA_CHANNELS + 28U)
#define MMW_LVDS_STREAM_SW_SESSION_EDMA_SHADOW_CH_1 (EDMA_NUM_DMA_CHANNELS + 29U)
#define MMW_LVDS_STREAM_SW_SESSION_EDMA_SHADOW_CH_2 (EDMA_NUM_DMA_CHANNELS + 30U)
#define MMW_LVDS_STREAM_SW_SESSION_EDMA_SHADOW_CH_3 (EDMA_NUM_DMA_CHANNELS + 31U)
at dss_resources.h
and add
gMmwDssMCB.lvdsStream.swSessionEDMAChannelTable[3].chainChannelsId = MMW_LVDS_STREAM_SW_SESSION_EDMA_CH_3;
gMmwDssMCB.lvdsStream.swSessionEDMAChannelTable[3].shadowLinkChannelsId = MMW_LVDS_STREAM_SW_SESSION_EDMA_SHADOW_CH_3;
at dss_lvds_stream.c
and changing MMWDEMO_LVDS_STREAM_SW_SESSION_MAX_EDMA_CHANNEL from 3U to 4U while MMWDEMO_LVDS_STREAM_HW_SESSION_MAX_EDMA_CHANNEL to 14U at dss_lvds_stream.h
Also at cbuff.h
I change CBUFF_MAX_USER_BUFFER to 4U and at hsiprotocol.h HSI_HEADER_MAX_USER_BUFFER to 4U
However, when i check lvds result using wireshark and DCA1000EVM, it only transmit 3 buffers.
Do I have to change more code to send more than 3 user buffers through lvds or is it absolutely impossible to send more user buffer?
Thanks a lot
Regards
Jinhyeong Kim