• 382查看
  • 0回复

[底层软件] (补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境

[复制链接]


该用户从未签到

发表于 2-3-2024 14:40:40 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


前些日子写了连载了几篇关于STM32使用Simulink硬件在环的文章,也收到很多网友的回馈,综合分析了下大部分读者对I2C和SPI以及CAN总线通信有着强烈需求,而Matlab2021b官方提供的硬件支持包由于高度封装以及支持的芯片有限,灵活度不高,所以实际使用起来很不方便,所以特意写了这篇增补文章,使用的是Mat-Target支持包实现硬件在环功能,由于其生成的Keil工程有源码,对于实际开发者而言更具有研究意义,废话不多说,直接进入正题。
(1) 系统环境和软件版本

STM32CubeMx版本:6.2.0Target版本:en.stm32-mat_target5.6.0.zipMatlab版本:2021bVisual Studio 版本:Community 2019Keil软件版:5.27.0.0硬件平台:YF-STM32-ALPHA 1R5
(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w1.jpg

图0.0 YF-STM32-ALPHA开发板
(2) Mat-Target软件包安装

这里为了方便大家下载,提供百度云stm32-mat_target5.6.0.zip下载链接:https://pan.baidu.com/s/1hljXwXS9NuoEYdJ0ckdjgg

提取码:9epa

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w2.jpg

图8.1.1 下载好的stm32-mat_target5.6.0包

双击打开“en.stm32-mat_target5.6.0.zip”安装包,如图8.1.1所示,然后双击里面的“STM32MatTarget_5.6.0_setup.exe”软件进行安装,剩下操作流程比较简单,直接对照图8.1.3~图8.1.8操作直至安装完成即可。
(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w3.jpg

图8.1.2 压缩包中的STM32MatTarget_5.6.0_setup.exe安装软件

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w4.jpg

图8.1.3 “License”协议

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w5.jpg

图8.1.4 安装路径选择

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w6.jpg

图8.1.5 快捷键创建

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w7.jpg

图8.1.6 开始安装

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w8.jpg

图8.1.7 安装过程进度

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w9.jpg

图8.1.8  点击“Finish”安装完成
(3) Matlab设置

      打开matlab 2021b,在命令行中输入“pathtool”指令,回车,在弹出的“路径设置”对话框中点击“添加并包含子文件夹...”按钮,如图8.1.9所示,找到(2)步骤中的STM32-MAT安装位置,然后点击“选择文件夹”,如图8.1.10所示,添加成功后可以在simulink的库浏览器中查看到STM32的所有外设,如图8.1.11所示。

?温馨提示:此处添加一定要选则“添加并包含子文件夹”,否则无法正常使用!

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w10.jpg

图8.1.9 文件夹包含路径设置

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w11.jpg

图8.1.10 选择安装的“STM32-MAT”文件

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w12.jpg

8.1.11 添加成功后的STM32-MAT

(4) Cubemx工程创建与设置

    新建CubeMx工程部分就不过多介绍了,可以参看CubeMX工程创建文章,这里只对关键设置部分进行介绍,如图8.1.12所示设置“RCC”的“High Speed Clock(HSE)”为“Crystal/Cermic Resonator”(即外部晶振)模式。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w13.jpg

图8.1.12 “RCC”设置

     设置“SYS”中的“Debug”为“Serial Wire”模式,将“Timebase Source”设置为“TIM1”,如图8.1.13所示。

??注 意:此处“Timebase Soure”设置非常重要,如果没设置会出现不能正常生成代码情况。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w14.jpg

图8.1.13 “SYS”设置

        GPIO设置与普通的CubeMX工程没什么区别,直接设置为“GPIO_Output”即可,如图8.1.14所示。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w15.jpg

图8.1.14“GPIO”设置

        “Clock Configuration”部分也与普通的CubeMX工程设置一样,如图8.1.15所示。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w16.jpg

图8.1.15 时钟设置

        工程设置部分比较关键,需要将“Application Structure”设置为“Base”模式,“Toolchain/IDE”设置为“MDK-ARM”,后面的版本设置为读者自己使用的版本,这里笔者使用的版本为“V5.27”,另外后面如果进行在环功能使用时需要将“Linker Settings”中的“Minimum Heap Size”设置为“0x3000”,以方便后期的硬件在环使用,如图8.1.16所示,创建完成,按“Ctl+S”保存即可。

????特别注意:

1、将文件放置于全英文路径下,不然生产代码过程中会报错;

2、“Application Structure”必须设置为“Base”模式;

3、如果已经使用matlab生成了嵌入式代码,“Application Structure”处将变为灰色,不能进行再次设置,所以创建新CubeMX工程时就要设置好,否则就只能再次创建新工程;

4、由于在环功能数据交互量比较大需要将“Minimum Heap Size”设置为“0x3000”

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w17.jpg
图8.1.16 工程设置
(5) Simulink工程创建与设置

      点击创建“Simulink工程”,然后在点击切换到“建模”栏,点击“模型设置”,在配置参数中点击“代码生成”处,浏览“目标选择->系统目标文件”并选中“stm32.tlc”文件,如图8.1.17所示。

????注 意:很多初学者matlab默认打开是进入到“xxx/bin/win64”安装目录,实际生成嵌入式代码时会报错!!,如图8.1.16所示,切换到创建工程目录

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w18.jpg

图8.1.16 切换到新建工程目录

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w19.jpg

图8.1.17 设置代码生成tlc文件

      tlc文件设置完成后点击“应用”或“确定”按钮,稍等一会儿会出现“STM32 Options”和 "STM32 Project Files"选项,点击“STM32 Options”选项,勾选“STM32CubeMX Path update”选项,然后点击“Update installed path”,稍等片刻在“STM32CubeMx installation path:”处会出现完整的CubeMx安装路径,如图8.1.18所示,点击确定完成设置。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w20.jpg

图8.1.18“STM32 Options”设置

      拖入“STM32_Config”模型,双击打开,然后点击“Select STM32 Configuration file”按钮,在弹出的文件选择对话框中找到前面配置好的“LED_Blinker.ioc”文件选中并点击“打开按钮”,如图8.1.19所示。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w21.jpg

图8.1.19 “STM32_Config”模型设置

      点击simulink库浏览器找到“Target Support Package - STM32 Adapter”库,拖入剩下的模型并搭建如图8.1.20所示模型,将停止时间改为“inf”。

?温馨提示:此处是为了后面的硬件在环控制效果搭建的模型,如果只是搭建模型控制LED闪烁或其它功能模型,可以使用“Pulse Generator”模型控制LED闪烁频率。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w22.jpg
8.1.20 新建LED控制simulink工程

    在“配置参数->求解器”栏中设置“固定步长(基础采样时间)”为“0.01”,即0.01s,如图8.1.21所示。

?温馨提示:此处基础采样时间也可以设置为“auto”或其它值,不是特别影响硬件在环功能。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w23.jpg

图8.1.21 基础采样时间设置为0.01s
(6) 硬件在环设置与Keil工程代码生成

       ????此处是硬件在环设置的关键步骤,在“配置参数->代码生成->接口”中将“外部模式”勾选上,如图8.1.22所示,设置完成后会在最上面出现“HARDWARE”栏,如图8.1.23所示。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w24.jpg

图8.1.22 硬件在环设置

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w25.jpg

图8.1.23 "HARDWARE"栏

        此时点击“Monitor&Tune->Build for Monitoring”生成的代码时注意看“Connect”按钮是灰色的,且生成的代码无法进行硬件在环连接。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w26.jpg

图8.1.24 硬件在环代码生成

      这里需要单击“Control Panel”图标,在弹出的“外部模式控制面板”对话框中点击“连接按钮”,如图8.1.25所示,此时会在“诊断查看器”中提示出错信息,如图8.1.26所示,不用管错误信息,继续图8.1.24中的“Build for Monitoring”操作。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w27.jpg

图8.1.25 “外部模式面板连接”操作

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w28.jpg

图8.1.26 点击“连接”提示错误信息

        稍等片刻后弹出如图8.1.27所示串口设置端口,根据读者自身电脑COM端口进行设置即可,其他参数可以保持默认,然后点击“Continue”。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w29.jpg

图8.1.27 电脑端口设置

         稍等片刻,会继续弹出STM32硬件在环串口设置窗口,如图8.1.28所示,笔者这里使用的是“USART2”,读者如果使用其它串口将其设置成其它串口即可,然后继续点击“Contiune”.

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w30.jpg

图8.1.28 STM32硬件串口设置

       然后经过漫长的代码生成等待,直至完成为止,生成好的Keil工程如图8.1.29所示,里面有一个“xxx_exMode.uvprojx”keil工程文件。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w31.jpg

图8.1.29 生成的硬件在环Keil工程代码

        双击打开“LED_Blinker_exMode.uvprojx”Keil工程并设置好,如图8.1.30,8.1.31所示,然后编译、下载到目标硬件板中,其中提示的警告不用管,不影响使用。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w32.jpg

图8.1.30 Keil工程编译器选择

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w33.jpg

图8.1.31 下载器下载完自动复位勾选

       程序下载到STM32单片机中后,回到simulink模型中,点击“HARDWARE->Monitor & Tune->Conect”按钮进行在环连接操作,如图8.1.32所示,成功连接后的硬件在环效果如图8.1.33所示。

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w34.jpg

图8.1.32 “Connect”硬件在环连接操作

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w35.jpg

图8.1.33 正常硬件在环效果
(7) 出错信息提示解决方案

错误1:提示Java环境问题,根据错误提示安装好所需的Java版本环境,这个一般都是CubeMx引起的

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w36.jpg

图8.1.24 提示Java环境错误

错误2:提示如图错误,执行“RTW.TargetRegistry.getInstance('reset');”设置,这种一般出现在初次安装使用情况

(补充版)STM32-MAT包在Matlab2021b上搭建硬件在环使用环境w37.jpg

图8.1.25 提示“ARM CMSIN COS”错误
RTW.TargetRegistry.getInstance('reset');??总 结

本节介绍了如何使用ST提供的MAT-Target库搭建硬件在环工程,搭建过程中有几点需要特别注意:1、CubeMx中的“SYS”时钟需设置为“TIM1”(其他定时器应该也可以,读者可以自行尝试),但是使用“Systick”时笔者不能成功;2、CubeMx中"Project Manager"中一定要将Application Structure”必须设置为“Base”模式;3、CubeMx中"Project Manager"中“Minimum Heap Size”需要设置为“0x3000”,就是要设置大一些,这是ST官方推荐的,如果只是使用simulink生成可执行代码,这里可以不用管,保持默认即可;4、Simulink中的关键部分是要在“代码生成->接口”里面的“外部模式勾选上”;5、“HARDWARE”栏中的这步关键操作很多人卡在这里,新工程一定要记得点击“Control Panel”中的连接;6、最后就是串口设置一定要正确,以上步骤如果按照流程操作,硬件在环功能是可以完整搭建的,另外Mat-Target包提供了很多完整的案例和说明文档,可以非常方便的使用。



该用户从未签到

发表于 14-3-2025 21:27:01 | 显示全部楼层
针对您关于STM32使用Matlab进行硬件在环仿真的问题,我作为汽车工程师给出以下专业回复:

关于系统环境和软件版本,建议使用Matlab 2021b版本以及STM32CubeMx 6.2版本进行搭建。针对您提到的官方硬件支持包使用不便的问题,推荐使用Mat-Target支持包来实现硬件在环功能。该支持包生成的Keil工程包含源码,对于开发者而言具有极高的参考价值和研究价值。在实际应用中,需要注意确保系统环境配置正确,严格按照软件使用说明进行操作。同时,针对I2C、SPI以及CAN总线通信的需求,开发者需要熟悉相关通信协议和接口配置,以确保硬件在环仿真的准确性和稳定性。希望以上信息对您有所帮助。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 18:03 , Processed in 0.411324 second(s), 37 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.