MATLAB输出串口发送所需十六进制数据
在FPGA设计过程中,有时需要与MATLAB进行联合调试,需要从MATLAB导出数据,再从PC端通过串口发送给FPGA,对数据进行处理后再返回PC端。串口的收发一般是以十六进制进行收发的,在MATLAB中没有直接从二进制数据转十六进制的函数,所以需要自行编写相关函数用于二进制转十六进制。如下:
function hex_matrix = bin2hex(bin_matrix)
L = length(bin_matrix); % 二进制数组长度
str_matrix = {}; %空元组
dec_matrix = []; %空数组
for i = 1:L
str_matrix{i} = num2str(bin_matrix(i)); % 十进制转字符串
dec_matrix(i) = bin2dec(str_matrix{i}); % 二进制转十进制
hex_matrix{i} = dec2hex(dec_matrix(i)); % 十进制转十六进制
end
end
可以用一个文件来测试其是否符合我们的要求,将一个二进制向量转化为十六进制向量,每个十六进制数表示1byte(不足1byte前面补0),并且写入txt文件中,每byte之间用空格隔开。
clc;clear;
fid=fopen('F:\Matlab_Function\hex.txt','w'); % txt文件存储路径
bin_matrix = [10110 11101001 00001101 00001111]; % 二进制数组
hex_matrix = bin2hex(bin_matrix); % 十六进制数组
L = length(hex_matrix); % 数组中数据个数
for i = 1:L
fprintf(fid,'%02s ',hex_matrix{i}); % 逐个输出到txt文件
end
打开存储路径下的txt文件,可见符合预期需求。
使用串口助手载入txt文件,可见按照txt文件中的数据读入到串口助手的发送端口。
《源码》
以上仅为个人学习笔记,欢迎评论区探讨交流!