基于MKV31F256VLL12芯片的单片机数据保存与数据处理

数据保存

存储指令

save d:\test\speed_200.txt 0x20000bf0,0x200017a8 %地址不区分大小写

save d:\test\speed_200.txt 0x20000bf0,0x200017a8(不区分大小写)
其中save是存盘命令,用于将指定的存储区的数据存储到电脑文件中。
d:\test\speed_200.txt是文件路径和文件名。可以根据具体要求进行修改。

起始地址与终止地址的计算

计算时采取十六进制。
首地址的计算
变量名后的地址即为首地址
末地址的计算
末地址的计算式为,末地址=(首地址+存储点数*4)
计算实例
在这里插入图片描述
在这里插入图片描述

例子中,储存的数据类型为int32_t,数据是32位,地址计算的过程中使用字节数参与计算。对于speed变量而言,首地址为0x20000BF0,末地址=0x20000BF0+BB8(750*4)=0x200017A8。

辅助计算过程

利用计算机自带的计算器辅助计算,过程如下:
在这里插入图片描述
在这里插入图片描述

数据存储演示

在这里插入图片描述
回车后,在指定路径(D:\test\speed_200)出现相应文件
在这里插入图片描述

数据处理的思想

数据提取

取练习素材前四行数据分析

:020000042000DA
:100BF00046CD2A0075CF2A0075CF2A0075CF2A006E
:100C0000A4D12A00A4D12A005BC22A009FB92A00DD
:100C10009FB92A005BC22A00B9C62A00B9C62A00B9

在这里插入图片描述
本行数据长度是数据长度域,它代表记录当中数据字节(dd)的数量,数据是以16进制数呈现,故数据应为16byte。
图片中有用的数据是标红部分数据,其余的数据可视为’无用‘数据。对图片中的剩余参数不做过多介绍。现对有用的数据进行分析。

46CD2A00 75CF2A00 75CF2A00 75CF2A00  %有用的数据
A4D12A00 A4D12A00 5BC22A00 9FB92A00
9FB92A00 5BC22A00 B9C62A00 B9C62A00

数据处理思路

存数据的数组定义为int32_t(表示有符号32位整型变量),每个字节表示8位,故每个数据由4个字节组成。数据采取小端存储模式,较高的字节存在高位,较低的字节存在低位,以第一个数据46CD2A00为例,真实的数据(十六进制)应为002ACD46,后续进行的工作是将十六进制数据转换为十进制。在转化成十进制的过程中,需要进行负数处理,在计算机的世界中,负数是以补码的形式的存在的。至此,数据的处理思想讲述完毕。

数据处理演示

数据处理源代码

clear;clc
data = importdata('speed_200.txt');
a = char(data);
b = a(2:size(a,1)-2,:); %去掉第一行和最后两行无效数据
[m,n] = size(b);

for i=1:m
    store_data(i,1:32) = b(i,10:41);
end

store_data = store_data'; %利用reshape函数获得想要的数据
A = reshape(store_data,8,4*m);
A = A';

for i=1:4*m
    real_store_data(i,7) = A(i,1);
    real_store_data(i,8) = A(i,2);
    real_store_data(i,5) = A(i,3);
    real_store_data(i,6) = A(i,4);
    real_store_data(i,3) = A(i,5);
    real_store_data(i,4) = A(i,6);
    real_store_data(i,1) = A(i,7);
    real_store_data(i,2) = A(i,8);
end
for k=1:4*m
    nomalized_data(k,1) = hex2dec(real_store_data(k,1:8));
    if nomalized_data(k,1)>2^30   %对负数进行处理
        nomalized_data(k,1) = nomalized_data(k,1)-2^32;
    end
end

t = 0:2/12000:(m*4-1)*2/12000;   %隔两个点采集一次有效数据,采样频率12k
real_data = nomalized_data/2^24*3000; %反标幺处理代码,按上述处理得到的十进制数据需要进行反标幺处理
figure
plot(t,real_data,'b','linewidth',1);

%对图片的属性进行简易的设置
axis([0 0.12 495 505])
set(gcf,'unit','centimeters','position',[30 15 15 7]);%设置画布大小和位置
set(gca,'FontName','Times New Roman','FontSize',16,'FontWeight','bold');%坐标轴数字大小

xlabel('Time (s)','FontName','Times New Roman','FontWeight','Bold','FontSize',16);
ylabel('Encoder speed (rpm)','FontName','Times New Roman','FontWeight','Bold','FontSize',16);
grid on

数据处理后获得的图片

在这里插入图片描述

练习素材

https://download.csdn.net/download/qq_50632468/19403706

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值