最近准备做一下USB2.0的基于FPGA的数据传输,特别是图像传输。在做的过程中遇到了各种各样的问题。下面就针对遇到的问题以及处理方法做一下相关总结。
1、对于USB2.0的图像数据传输不能像UART那样直接传输TXT文件,因为会对TXT中的数据进行ASCII 转码(这是与我用的USB测试软件有关,我用的是Cypress USb Console)导致传输的数据错误。
2、如果直接选择图像传输会产生一些本不属于图像的信号,例如传输.bmp 格式的文件,就会出现写一些代表这种格式的帧头文件。
所以要把相关要传输的文件转换成.bin文件。上代码:
clc;
clear;
%读取图片转换成数据,函数imread()是度函数,里面的路径可以根据自己实际填写
img = imread('test.bmp');
%因为的图片数据是具有RGB的三位数组,分别提取
img_r=img(:, :, 1);
img_g=img(:, :, 2);
img_b=img(:, :, 3);
% 把所有的数据组合成,因为我们最终是想把数据转换成可以在VGA上显示的,
%所以要把原始数据转换成16BIT,RGB = 565 就是R截取高5BIT,G截取高6BIT,B截取高5BIT
[ROW COL]= size(img_r);%获取图像大小
for R = 1:ROW;
for C= 1:COL;
out_data_h((R-1)*COL+C)=bitand(img_r(R,C),248)+bitshift(bitand(img_g(R,C),2