网站首页 > 技术教程 正文
当我们在开发一些控制器高级算法时通常的做法可能是利用像Matlab这种高级编程语言先在PC上进行模拟仿真,没有问题后,再将算法移植到设备上。
在阿圆的上一篇文章里《「话说嵌入式」STM32算法的翅膀之MATLAB》也有提到,ST己经提供了由Matlab直接生成算法,并生到KEIL工程的方法。如果现在算法己经在PC上仿真完成,也己经下载到设备上了,那么我们能保证生成的算法在真实的硬件上运行也是正确的吗?或者说,就算算法是正确的,但我们想使用不同的测试数据对控制器上的算法进行测试时又该怎么做?
今天呢阿圆就带大家瞄一眼复杂算法或系统的在硬件上的代码生成及验证。
事实上这些应用可能在汽车领域,航空领域己经广泛应用了(哟,貌似是个很高级的主题哟)。
好了废话不多说,开始今天的实验,大家需要准备好的环境是
Matlab R2016b 64Bit in Windows 10
STM32MatTarget_4.4.0_setup.zip
Keil,STM32CubeMX
STM32F437ZGT6开发板,ST-LINKV2及串口线一条
这里需要注意的是ST官网上最新版本的STM32-MAT/TARGET是4.4.2版本的,需要支持SIMULINK 8.8,R2016b是不支持的。
首先找到STM32-MAT的安装路径,并进入到
E:\MATLAB\STM32-MAT\STM32\STM32demos\PIL\Filter
将以下文件全部复制到Matlab的workspace当中
其次直接在Matlab中打开Test_PIL_IIR_Filter.mdl
从左往右看,输入是一个testdata,中间经过了一个增益为1000的放大器后分别输入到两个滤波器,这里需要注意的是这两个滤波器的框图是一模一样的,不同的是上面的滤波器是运行在STM32F437当中,而下面的滤波器则是在Matlab的仿真。
这里要注意的是x0.001和x0.1只是名字而已,真正的增益是相同的,都为0.001。
理论上两个滤波器的输出需要完全一致,也就是说在示波器中看到差分值要为0。
我们先点击示波器图示,打开示波器
然后点运行
接下来需要配置PC串口和STM32F437ZGT6通信的串口
在配置好通信串口后就会打开STM32CubeMX,因为在上面我们配置了180MHz的时钟频率,所以在STM32CubeMX中也要配置好相应的频率。
有点奇怪的是,默认生成的串口参数并不对,需要设置成8N1模式
串口,时钟都设置好,下面就可以进行工程的生成。
点击编译,但阿圆发现编译并没有成功,有两个宏没有定义
#define CA_CHECK_FLOATING_POINT_ENABLED 0
#define CA_CHECK_LONG_LONG_ENABLED 0
添加两上定义就没问题了~ 再编译运行,到此设备端就准备好了,
回到Matlab,我们可以直接在Matlab那儿点Continue了
进行就可以在刚才打开的示波器中看到原始数据,PIL输出的结果以及PIL与Matlab仿真的差值。从示波器可以看到仿真的结果和算法在STM32F437上生成运行是一致的~
在上一篇的文章《「话说嵌入式」STM32算法的翅膀之MATLAB》评论有人问要怎么用Matlab的算法,今天就可以直接回答啦~按上一篇文章里的方法新建好工程后,以本文章为例,就可以直接将matlab的仿真那个框图Reference Simulation model拖到新的工程当中配置好数据的格式,即可
生成工程的方式还是参照上一篇文章啦,很简单的。(图上只是了为演示目的使用,并非正确的使用方式 )
今天的分享就到这里,谢谢大家!
猜你喜欢
- 2024-11-06 关于几种熵的计算(MATLAB)(matlab熵值法求权重)
- 2024-11-06 Python与Matlab画图的代码对比(matlab跟python)
- 2024-11-06 基于BP神经网络的QPSK解调算法matlab性能仿真
- 2024-11-06 MATLAB使用蒙特卡洛算法实例求解线性规划
- 2024-11-06 基于MATLAB的ACC控制算法设计及仿真测试
- 2024-11-06 「一」MATLAB语言之常见函数及符号运算
- 2024-11-06 基于无线传感器网络的MCKP-MMF算法matlab仿真
- 2024-11-06 基于最小二乘递推算法的系统参数辨识matlab仿真
- 2024-11-06 「话说嵌入式」STM32算法的翅膀之MATLAB
- 2024-11-06 K均值聚类算法-Matlab代码(k均值聚类算法过程)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)