FPGA发送过来的图像大小为659*494,目前调试用的循环发送1-659数据,我设置的upp_line_size = 1024,不知道为什么,内存中存到的数每次都是1-659,1-365然后又直接跳到1-659,1-365。而且当我把upp_line_size改为其他数,内存存到的数每次都从366开始了,这到底是为什么呢?
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.
FPGA发送过来的图像大小为659*494,目前调试用的循环发送1-659数据,我设置的upp_line_size = 1024,不知道为什么,内存中存到的数每次都是1-659,1-365然后又直接跳到1-659,1-365。而且当我把upp_line_size改为其他数,内存存到的数每次都从366开始了,这到底是为什么呢?
谢谢您能给我回复,我是个新手,希望能从您这儿解惑,万分感谢!
#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. 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。