0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于STM32H750实现电机控制节点维护设备设计方案

基于STM32H750实现电机控制节点维护设备设计方案

来源:
2023-12-22
类别:工业控制
eye 12
文章创建人 拍明芯城

在详述实现过程之前,我们先看一下 ST 专家点评。

ST专家点评

从这个评测贴中我们可以看到这位同学给我们展示了如何使用STM32H750+TouchGFX开发平台快速开发一个使用STM32H7对电机进行控制的应用。从UI设计的角度来看:UI的设计非常好,这位工程师对UI设计方面也是非常有心得的,由于UI设计的非常好,再加上TouchGFX Designer的布局和交互,设计出来的界面非常美观。在UI设计方面,使用很多TouchGFX Designer自带的控件进行UI设计,基础控件:如图片/文本/进度条控件进行基础布局,使用滑动容器控件和静态图表控件用与实现子页面滑动/图表等功能;并通过TouchGFX 模拟器进行仿真测试,很方便的开发出一款界面美观交互友好的嵌入式GUI产品。

从数据处理的角度看:UI设计好后,通过MVP机制对UI和后端数据处理进行分离对电机进行控制,前后端分离,方便未来增加和扩展更多功能。

从整体设计来看:设计的UI非常美观,接近智能手机/手表的用户体验,功能实现比较完整. 是一个很好的的UI设计作品。

1.png

一、项目介绍

参加STM32论坛的STM32H750B-DK评测活动,利用提供的开发板做一个前期验证项目。验证项目是做一个手持的电机运动节点维护设备,方便携带到现场对电机进行维护,这里暂且称为PAD。(实物演示视频见本文上方作品展示)PAD通过UART与电机控制节点连接通讯(如下图所示),当检测到设备接入,PAD获取其设备信息状态,包括固件版本、PCB版本、运行日志等。通过PAD还可以控制电机做一些简单的运动测试,配置电机的运动参数,如加速度、速度、电流等。由于时间有限,目前仅实现上述功能。


image.png


二、开发板STM32H750B-DK

开发板资源丰富,本项目比较关注的资源情况:

Arm® Cortex®-M7 内核(带双精度浮点单元),400MHz主频

4.3英寸RGB LCD,电容屏

外扩2 x 512Mbit Flash

扩128 Mbit SDRAM

UART接口

持Chrom-ART图形加速

三、设计工具

STM32CubeMX

STM32CubeIDE 1.9.0

TouchGFX Designer V4.20

项目中用到的TouchGFX资源

(1)控件(Widget)

Box

Button

Image

Slider

Static Graph

Swipe Container

Text Area

Texture Mapper

(2)实现UI动效使用到的TouchGFX内置的交互动作(Interactions Action)

Call new virtual function

Change screen

Move Widget

Fade Widget

Wait for

四、界面设计

不会UI设计的电子工程师不是好厨师,所以这一次亲自操刀设计,整体设计风格采用我喜欢的“毛玻璃效果”。TouchGFX Designer的模拟器非常实用,大大提高了调试效率,以下图片均来自模拟器的截图。实际上,模拟器的显示效果与直接目视比较接近,视频拍出来的效果比实际差了不少,屏幕颜色不对,还有条纹。。。截图只能看静态效果,动态效果请大家观看文章上方视频演示。目前实现了5个界面:开机、连接、功能选择、信息显示、电机控制。

4.1 开机动画

4.2 连接界面

4.3 功能选择界面

4.4信息显示界面

4.5电机控制界面

五、硬件交互

使用TouchGFX的MVP框架实现GUI与硬件的双向交互。MVP的全称为Model-View-Presenter,Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理。在本项目中主要是检测用户在触摸屏上的操作,转换成相应的UART命令发送至外部电机控制板;当外部电机控制板的状态发生变化时,也会主动发送数据到开发板,此时GUI负责刷新界面显示的相关内容。MVP框架应该是TouchGFX中不易掌握的部分,UI怎么和硬件交互?这个是根本,每个项目都会涉及到。这里以本项目中的UART为例说明一下,如何通过操作屏幕上的按钮来控制UART发送数据。

以上述界面截图中的STOP按钮为例。在TouchGFX Designer中,我们给Screen1添加STOP按钮,命名为con_stop(很多资料中介绍了这些基本操作,这里不再累述),我们要实现通过电击此按钮向UART发送数据。在界面右侧的Interactions中添加con_stop按钮的点击事件。如图上所示,触发条件为按钮点击(序号1);触发源选择为con_stop按钮(序号2);触发执行的动作为调用一个虚函数,虚函数的名称我们设定为con_stop_clicked(序号3)。然后按下F4执行Generate Code生成代码。TouchGFX Designer会自动生成这个函数的定义,在STM32cubeIDE中查看Screen1VeiwBase.hpp文件,可以看到此虚函数的声明:

virtual void con_stop_clicked() { }

(1)手动在Screen1View.hpp文件中给Screen1View类添加此虚函数:

virtual void con_stop_clicked();

手动在Screen1View.cpp中添加此虚函数的实现部分:

voidScreen1lView::con_stop_clicked()

{

presenter->con_stop_clicked();

}

上面这个函数调用了presenter中的con_stop_clicked()函数(函数名可以自己定),实际上这个函数我们还没有实现,接下来给presenter添加这个函数。

(2)手动在Screen1Persenter.hpp中,给Screen1Persenter类中添加函数con_stop_clicked:

virtual void con_stop_clicked();

手动在Screen1Persenter.cpp中添加这个函的实现:

voidScreen1Presenter::con_stop_clicked()

{

model->con_stop_clicked();

}

(3)上面这个函数调用了model中的函数con_stop_clicked(这个函数名也可以自己定),好吧实际上这个函数我们也还没实现,接下来继续。

手动在model.hpp文件中给Model类添加这个函数:

void con_stop_clicked();

手动在model.cpp中添加上面函数的实现部分。

voidModel::con_stop_clicked()

{

uart_send_cmd_stop();

}

uart_send_cmd_stop()函数上就是发送UART数据的部分了,通常情况下是在uart.c中实现的,内容类似下面这个。

HAL_UART_Transmit( huart1, (const uint8_t*) str, len, 1000);

在model.cpp中我们把uart_send_cmd_stop()这个函数作为外部函数引入:

extern"C"

{

externvoiduart_send_cmd_stop();

}

#endif

实际上这里偷懒了。项目中使用了FreeRTOS,有一个Uart_Task任务,负责UART的数据收发处理。在多任务的情况下,多个任务涉及同一个硬件应该确保互斥访问。所以这里应该使用信号量,改变信号量的状态来通知Uart_Task任务实际发送数据到UART。

一波操作下来, View ---> Presenter ---> Model ---> UART,千山万水有点麻烦,不过MVP的优点还是很多的,想要了解更多大家可以问问百度。

六、总结

之前一直用LVGL,做过一些项目,也算是比较熟悉了。最近半年才开始使用 TouchGFX。一番体验下来不得不说,在 STM32上做 GUI 应用 TouchGFX 确实很有优势,毕竟是 ST 亲儿子,先天优势,生态全、控件多,实现各种炫酷效果不在话下。最方便的是几乎不需要怎么优化,不用操心什么 DMA2D、LDTC……,底层ST都帮你搞好了,跑起来效果就已经非常流畅。ST 新出的 NeoChrom GPU 看介绍更牛X,有机会到要试试到底有多牛。

TM32H750超值系列微控制器包含Arm® Cortex®-M7内核(具有双精度浮点单元),工作频率高达480 MHz。内嵌的128 KB闪存使意法半导体能够为开发人员提供一种经济划算的解决方案。

性能

在480 MHz的CPU频率下,从Flash执行程序时,STM32H742系列能够提供2424 CoreMark /1027 DMIPS的性能,利用其L1缓存并实现了零等待执行。

内嵌的128 KB闪存,面向用户可信根服务、关键实时程序执行和外部存储器的简单配置

L1缓存(16 KB的I-缓存 +16 KB的D-缓存)提高外部存储器的执行性能。

安全性

STM32H750集成了:

加密/哈希硬件加速

STM32H757还支持安全固件安装(SFI)嵌入式安全服务,可在执行初始程序时执行安全验证并保护软件IP。

安全启动和安全固件升级(SBSFU)

高能效

多电源域架构可实现将不同的电源域配置为低功耗模式,进而优化功耗效率。

USB调节器提供嵌入式物理接口层(PHY)。

在内核运行模式(关闭外设)下,功耗典型值为275 µA/MHz @VDD = 3.3 V和25 °C

图形

LCD-TFT控制器接口支持双层图形

Chrom-ART Accelerator™提高了图形内容创建速度,并为其他应用节省了MCU内核处理带宽

JPEG硬件加速器,可进行快速JPEG编码和解码,从而减轻CPU编解码负荷。

片内外设

多达35个通信接口包括FD-CAN、USB 2.0高速/全速、以太网MAC、摄像头接口。

可利用带有32位并行接口(支持SRAM、PSRAM、NOR、NAND和SDRAM存储器)或双模Quad-SPI串行闪存接口的灵活存储控制器轻松扩展外部存储器。

模拟外设:12位DAC,快速16位ADC

16位高精度定时器上的多个16位和32位定时器运行频率高达480 MHz。

STM32H750超值系列提供128 KB的Flash存储器,具有以下结构的1 MB SRAM:192 KB的TCM RAM(包括64 KB的ITCM RAM和128 KB的DTCM RAM,用于时间关键型程序和数据),高达512 KB的用户SRAM,以及备份域中4 KB的SRAM,可将数据保持在最低功耗模式,提供LQFP100、LQFP144、LQFP176、UFBGA176和TFBGA240封装。

ST意法半导体公司的STM32H750微控制器是他们现有的STM32H7产品的价值线。通过限制产品中嵌入式Flash的数量,这条价值线提供了一个突破性的价格水平,在STM32H7系列中没有提供到目前为止。STM32H7值线仍然提供了足够的嵌入式Flash来安全地存储引导代码或实时代码和数据。

STM32H750设备基于高性能Arm Cortex-M7 32位RISC核心,工作频率高达400 MHz。Cortex-M7核心具有一个浮点单元(FPU),支持Arm双精度和单精度数据处理指令和数据类型。STM32H750设备支持全套DSP指令和内存保护单元(MPU),以提高应用程序的安全性。

所有的设备提供三个adc,两个dac,两个超低功耗比较器,一个低功耗RTC,一个高分辨率定时器,12个通用16位定时器,两个用于电机控制的PWM定时器,五个低功耗定时器,一个真正的随机数发生器(RNG),和一个密码加速单元。该器件支持外部sigma-delta调制器(DFSDM)的四个数字滤波器。它们还具有标准和先进的通信接口。

STM32H750xB器件工作在-40°C至+85°C的温度范围内,电源为1.62 V至3.6 V。通过使用外部电源管理器并将PDR_ON引脚连接到VSS,供电电压可以降至1.62 V。否则,电源电压必须保持在1.71 V以上,嵌入式电源电压检测器启用。除了LQFP100以外,所有包上都有USB专用电源输入,以允许更大的电源选择。一套全面的节能模式允许低功耗应用程序的设计。

STM32H750xB器件提供三种封装,范围从100针到240针/球。外设集包括所选设备的更改。

STM32H750特性

32位Arm Cortex-M7内核

128千字节的闪存

安全

ROP, PC-ROP,主动篡改,安全固件升级支持,安全访问模式

通用输入/输出

多达168个I/O端口具有中断能力

复位和电源管理

低功率消耗

时钟管理

互连矩阵

4个DMA控制器卸载CPU

多达35个通信外设

11模拟外设

图形

LCD-TFT控制器高达XGA分辨率

Chrom-ART图形硬件加速器(DMA2D),以减少CPU负载

硬件JPEG编解码器

多达22个计时器和看门狗

加密加速

调试模式

96位的惟一ID

所有包都是ECOPACK2兼容的

STM32H750应用领域

电机驱动和应用控制

医疗设备

工业应用

报警系统,视频对讲机,暖通空调

家用音响设备

移动应用、物联网

PLC)

逆变器

断路器

打印机和扫描仪

可穿戴设备:smartwatches

来源:STM32论坛网友moticsoft 版权归原作者所有

直接转载来源:STM32公众号


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯