TI中文支持网
TI专业的中文技术问题搜集分享网站

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

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

Tony Tang:

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

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

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

xingde wang:

回复 Tony Tang:

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

#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)。

不知道我说明白了吗?

Tony Tang:

回复 xingde wang:

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

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

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

xingde wang:

回复 Tony Tang:

#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。

Tony Tang:

回复 xingde wang:

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

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

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

user5377263:

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

user5377263:

回复 user5377263:

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

赞(0)
未经允许不得转载:TI中文支持网 » 求助:C6748中UPP接口连续接收FPGA图像数据的问题
分享到: 更多 (0)