STM32基于CubeMX与Simulink的模块开发——PIL和HIL实现

HIL和PIL的概念

PIL:处理器在环测试

HIL:硬件在环测试

参考资料:

MIL、SIL、PIL 、HIL区别 - 知乎

MIL、SIL、PIL、HIL是个啥,你搞懂了吗?_pil hil-优快云博客

PIL和HIL实现

参考资料:

验证 - MATLAB & Simulink - MathWorks 中国

用于监控&调谐和PIL的串行配置,适用于基于STM32处理器的板 - MATLAB & Simulink - MathWorks 中国

STM32F407VG+CubeMX+Simulink硬件在环(HIL)使用 - 知乎

网盘资料:通过网盘分享的文件:HIL_STM32.zip
链接: https://pan.baidu.com/s/1CgUcDhXNOjqEv564Wkk7yQ?pwd=is69 提取码: is69
–来自百度网盘超级会员v7的分享

1.选择硬件版,这里以STM32F4XXBased为例子

image-20241022203441860

2.在硬件实现的 Target Hardware Resources (目标硬件资源)

2.1选择通信接口:Serial | TCP/IP | CAN 三种,在这里我们使用常见的Serial

2.2指定 Logging buffer size (日志记录缓冲区大小) (以字节为单位)。确保 如果您要记录更多数量的信号或记录,则记录缓冲区大小足够大 以更快的速度。

2.3启用 Use a dedicated timer to improve time stamp (使用专用计时器改进时间戳) accuracy 参数(如果要使用专用计时器实时记录数据) 时间。如果未选择此参数,则使用仿真时间记录数据

注意:如果在模型里使用Display and Scope,请确保 Use a dedicated timer to improve time stamp accuracy 参数已禁用

image-20241022205419991

3.CubeMX配置

3.1我使用的野火霸天虎F409的板子有一个USB转TTL(CH340),所以我直接使用开发板上的接口

image-20241022211506189

3.2参考原理图:连接芯片引脚PA9,PA10

image-20241022211557671

3.3基本配置,参考新建工程那一节,在第一节的基础上我们需要配置好串口功能

image-20241022213355415

image-20241022213337268

image-20241022213311187

image-20241023000525941

image-20241022213245805

3.4 找到需要配置的串口1

image-20241022212139481

3.5 配置串口

  • 将 USART/UART 模式设置为 Asynchronous
  • 指定所需的波特率(以位/秒为单位)常用:9600 115200

image-20241022212354182

3.6使能DMA的串口功能

不懂DMA原理可以去学习一下:DMA原理,步骤超细详解,一文看懂DMA-优快云博客

image-20241022212810098

3.7保存项目

image-20241022213646085

4.确定Serial port : 打开设备管理器

image-20241022213745662

5.在Simulink的硬件设置中选择Connectivity并选择USART/UART(具体的串口号与端口号通过CubeMX与设备管理器可知) USART1和COM4

image-20241022213946550

6.选择Cubemx文件(请参考新建项目章节)

image-20241022214250195

7.测试:准备设计一个闪烁LED

7.1配置LED的GPIO口(开发板原理图)

image-20241022214747199

7.2搭建Simulink模块,产生的方波周期为2s,占空比为50%(脉宽为1s),也就是每一秒变化一次

image-20241022223429978

7.3 下载到板子上完全没问题

image-20241022215213771

7.4 在线测试看看波形输出的波形 (完美)

注意:要把这里关掉(上文有提到):

image-20241023003218406

image-20241023002053676

注意!!!

在这上面花了好多时间,一开始连不上,不知道为什么,可以编译通过也可以下载运行,但是就是连不上,报错如下:

image-20241023002345052

一开始以为是版本的问题,因为我的软件Cube最新版本的,然后又卸载重新装了软件,让版本都匹配上了。还是不可以,最后发现是不能通过CH340芯片,只能直连。之前我玩DSP开发板的时候也是这样。

但是我到现在也不知道为什么!!!!!!

image-20241023002658301

搞得我现在不敢用高版本了,怕又被这种问题恶心到了

大家以后一定要注意!!!!!

<think>好的,用户之前问了关于STM32中断处理时间的问题,现在又转向询问Simulink仿真是什么,这说明他们可能在进行嵌入式系统开发,或者在学习相关领域的知识。需要确认用户的知识背景,可能对Simulink不太熟悉,需要从基础讲起。 首先,用户想知道Simulink仿真的定义,可能需要了解其基本功能应用场景。SimulinkMATLAB的一个工具,主要用于模型化设计、动态系统仿真,所以在回答时应该强调它的图形化编程特点,以及如何帮助用户进行系统设计。 接下来,用户可能想知道Simulink仿真的核心组成,比如模块库、信号流、求解器等,这些是构成仿真模型的基础。需要解释每个部分的作用,例如模块库里的各种预置模块,信号流的连接方式,以及求解器如何解算模型。 然后,工作流程也是关键部分。用户可能需要了解从建模到结果分析的整个流程,这样他们能更好地理解如何使用Simulink。需要分步骤说明,比如创建模型、设置参数、运行仿真分析结果。 应用场景部分,用户可能关心Simulink在哪些领域有实际应用,比如汽车、航空航天、机器人等,这能帮助他们判断是否适合他们的项目。同时,提到自动代码生成可能对嵌入式开发有帮助,因为用户之前的问题涉及STM32,说明可能有硬件开发的需求。 优势方面,需要突出图形化界面、多领域协同、MATLAB集成等特点,让用户明白为什么选择Simulink而不是其他工具。同时,硬件支持可能对嵌入式用户特别重要,比如生成C代码部署到STM32。 最后,学习建议部分,用户可能需要入门资源,比如官方文档示例,以及如何从简单模型开始逐步深入。要确保回答结构清晰,逐步引导用户理解Simulink的基本概念应用,同时关联到他们可能的实际项目需求,比如结合之前的STM32开发,说明Simulink在自动生成代码方面的优势。</think>**Simulink仿真**是MATLAB平台下的**可视化动态系统建模仿真工具**,其核心是通过图形化编程实现复杂系统的设计分析。以下从**6个关键维度**深入解析其原理应用: --- ### **1. 核心概念** - **模型化设计**:用图形模块代替传统代码,直观展现系统结构 - **动态系统仿真**:模拟随时间变化的系统行为(如电路响应、机械运动) - **多域物理系统联合仿真**:支持电气、机械、液压等混合系统耦合 --- ### **2. 核心组成** ```mermaid graph TD A[Simulink架构] --> B(模块库) A --> C(信号线) A --> D(求解器) A --> E(Scope显示) B --> F1(输入源: Sine Wave,Step) B --> F2(运算模块: Add,Integrator) B --> F3(专业库: Simscape, DSP) D --> G1(变步长: ode45) D --> G2(定步长: discrete) ``` --- ### **3. 工作流程** 1. **模型搭建**:拖拽模块+连线(如搭建PID控制系统) 2. **参数配置**: ```matlab % 模块参数示例 set_param('model/Integrator','InitialCondition','0'); ``` 3. **仿真设置**: - 仿真时间:`0:0.01:10`(10秒仿真,步长0.01s) - 求解器选择:根据系统刚性选择合适算法 4. **结果分析**: - 使用Scope查看波形 - 导出数据到MATLAB工作区进行FFT分析 --- ### **4. 典型应用场景** | 领域 | 应用案例 | 仿真精度要求 | |---------------|-----------------------------|------------------| | 汽车电子 | 整车能量管理仿真 | 0.1%误差 | | 电力系统 | 智能电网故障模拟 | 微秒级时间分辨率 | | 飞行控制 | 无人机姿态控制算法验证 | 六自由度模型 | | 通信系统 | 5G信道编解码性能测试 | BER<1e-6 | --- ### **5. 关键技术优势** - **硬件在环(HIL)支持**:通过Simulink Coder生成代码直接部署到STM32 - **自动代码生成**:将控制算法转为C/C++代码(符合MISRA-C标准) - **模型验证工具**: - Design Verifier:自动检测模型缺陷 - Code Prover:验证生成代码的可靠性 - **协同仿真接口**: - ANSYS联合进行机电热多物理场仿真 - 通过OPC UA协议连接工业PLC --- ### **6. 学习建议** 1. **入门路径**: - 先掌握基础模块搭建(推荐《Simulink仿真及代码生成技术》) - 再学习Stateflow状态机设计 - 最终掌握自动代码生成部署到嵌入式平台 2. **典型错误规避**: ```matlab % 错误:代数环问题 % 正确做法:插入Memory模块打破代数环 ``` 3. **高效调试技巧**: - 使用`Simulation Stepper`逐步执行 - 通过`Signal Logging`记录关键节点数据 **实践案例**:基于STM32的电机控制系统开发流程: 1. Simulink设计FOC算法 2. 使用PIL(Processor-in-the-Loop)测试 3. 生成优化后的C代码 4. 通过STM32CubeMX集成到工程 5. 实测电机转速误差<0.5% 通过Simulink仿真,可将产品开发周期缩短40%以上,是工业4.0时代**数字化双胞胎(Digital Twin)** 技术的核心支撑工具。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值