This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

求助:C6748中UPP接口连续接收FPGA图像数据的问题

FPGA发送过来的图像大小为659*494,目前调试用的循环发送1-659数据,我设置的upp_line_size = 1024,不知道为什么,内存中存到的数每次都是1-659,1-365然后又直接跳到1-659,1-365。而且当我把upp_line_size改为其他数,内存存到的数每次都从366开始了,这到底是为什么呢?

  • #1. 整个upp DMA的参数是怎么设置的?

    xingde wang 说:
    而且当我把upp_line_size改为其他数,内存存到的数每次都从366开始了

    #2. 这句话是什么意思,是在一帧搬运过程中改的?还是一个新配置,从一开始就这样?

  • 谢谢您能给我回复,我是个新手,希望能从您这儿解惑,万分感谢!

    #1.参数配置是

    A.DMA的参数设置:

    #define upp_line_size         (1024)
    #define upp_line_count      (494)
    #define upp_frame_size      (upp_line_size * upp_line_count)
    #define upp_line_offset        (upp_line_size)

    B.UPP的参数设置为:

    unsigned int temp_reg = 0;

    CSL_FINST(temp_reg,UPP_UPCTL_IWA,16BIT);
    CSL_FINST(temp_reg,UPP_UPCTL_DPWA,FULL);
    CSL_FINST(temp_reg,UPP_UPCTL_DRA,SINGLE);

    CSL_FINST(temp_reg,UPP_UPCTL_CHN,ONE);
    CSL_FINST(temp_reg,UPP_UPCTL_MODE,RECEIVE);

    upp_reg_hdl -> UPCTL = temp_reg;

    temp_reg = 0;

    CSL_FINST(temp_reg,UPP_UPICR_TRISA,ENABLE);
    CSL_FINST(temp_reg,UPP_UPICR_STARTA,ENABLE);
    CSL_FINST(temp_reg,UPP_UPICR_ENAA,ENABLE);

    upp_reg_hdl -> UPICR = temp_reg;

    temp_reg = 0;

    CSL_FINS(temp_reg,UPP_UPIVR_VALA,0x7f7f);

    upp_reg_hdl -> UPIVR = temp_reg;

    temp_reg = 0;

    CSL_FINST(temp_reg,UPP_UPTCR_RDSIZEI,256B);

    upp_reg_hdl -> UPTCR = temp_reg;

    #2.这句话是说我把上面的 upp_line_size   (1024),改成upp_line_size   (660),其余参数不变,本来应该是从1开始存的,可从366开始了(我的图像大小为659*494)。

    不知道我说明白了吗?

  • #1. 659*494不等于1024x494,这个DMA在一帧数据结束后,DMA并没有结束,会参与下一帧的数据搬运,也就是会把下一帧开始部分的数据放到这个buffer的后面部分。数据乱了啊。

    #2. 上面的配置,我想在接收第一帧的数据应该没什么问题,问题应该是出在连续接收后,从第二帧开始数据才会出现乱的现象吧。

    #3. 建议把DMA的参数按实现帧的大小配置。

  • #1. Tony 您好,我按照您给的建议修改了配置,由于Byte Count只能是偶数,所以我把upp_line_size   (1024) 修改为upp_line_size   (658)或者upp_line_size   (660),这样的话,我是不是需要将FPGA数据发送程序修改为658或者660? 但是还是不行啊,这次的数据起始地址处总是从41开始,一直到328,然后从1到328循环,当到达第1024的数时又跳回41开始。不知道什么原因只能接收到328个数了。

    #2. 我觉得之所以会跳回去可能是我连续接收这块儿还是没有配置好,您能给我一份按照上述图像大小数据连续接收的DMA的配置例程吗?实在感激不尽,由于这是我第一次接触DSP,没什么经验,也都是什么都自己在调,没有人指导一下,这个问题卡在这儿都折腾1个来月了,希望您能帮帮我,谢谢谢谢。我的邮箱是770615327@qq.com。

  • xingde wang 说:
    可能是我连续接收这块儿还是没有配置好

    先别做连续接收,只接收一帧就停下来。看看数据是什么样子。

    并不一定需要line size就等于FPGA定义的行大小,这只是表示的区别,在内存上都是连续的一帧数据。但是要求FPGA送的一帧的大小等于uPP配置的一帧的大小。

  • 您好,请问您upp连续接收数据是否已成功,能否给个示例看一下。我想upp单通道2个DMA乒乓操作接收fpga数据,可是upp中断只进入一次就不再进入了,不知是哪里配置错误。

  • 您好,能给个UPP连续接收数据的demo看一下嘛,谢谢!qq594973412