Matlab串口通信FFT变换显示

Matlab串口通信FFT变换显示

主要介绍Matlab 的串口方式读取数据,并波形显示和后期数据分析,非常实用,根据自己的需求做简单更改即可使用。

一、下位机

下位机周期性发送数据

int main(void)
{
	uint32_t test;

	bsp_Init();		/* 硬件初始化 */

	PrintfInfo();

	while (1)
	{
		test = rand()%600;
		HAL_UART_Transmit_IT(&UART2_Handler, (uint8_t *)&test, sizeof(test));
		HAL_Delay(100);
	}
}

二、Matlab接收并显示

使用Matlab GUI创建界面

刻度模式修改成auto,要不刻度不随下方程序变化。
在这里插入图片描述
数据接收,波形显示代码如下:

while app.rcv_flag == 1
   tempdata = fread(app.serialObj, 4, 'uint8');
    RecData = typecast(uint8(tempdata(1:4)), 'uint32');
    % disp(RecData);
    %更新数据
    RecDataDisp(AxisValue) = RecData;
    %更新X轴
    Axis(AxisValue) = AxisValue;
    %更新变量
    AxisValue = AxisValue + 1;
    %绘制波形
    plot(app.UIAxesData, Axis(1:AxisValue-1), RecDataDisp(1:AxisValue-1), '-r');
    axis(app.UIAxesData, [window, window + window_width, AxisMin, AxisMax]);
    window = window + 1;
    drawnow;

    g_count = g_count + 1;
    if g_count == 300
        Fs = g_count *2 ;   % 采样率=2*周期
        N = g_count;        % 采样点数
        n = 0:N-1;          % 采样序列
        f = n * Fs / N;     % 真实的频率X轴

        %对原始信号做 FFT 变换
        y = fft(RecDataDisp(AxisValue-g_count:AxisValue-1), g_count);

        %求 FFT 转换结果的模值
        Mag = abs(y)*2/N;

        %绘制幅频相应曲线
        plot(app.UIAxesFFT, f, Mag, 'r');
        g_count = 0;
        drawnow;
    end
    pause(0.1);
end

产品介绍
https://seeker.taobao.com/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值