2 项目硬件设计

2.1 单片机
2.1.1 ARM Cortex-M4内核
ARM Cortex-M4内核处理器是由ARM公司开发的嵌入式处理器,用于满足数字信号控制市场的需求。该内核提供了高能效的数字信号控制,将32位控制与领先的数字信号处理技术集成来满足需要很高能效级别的市场[8]。
与Cortex-M3内核相比,Cortex-M4在数字信号处理方面具有更大的优势。所有DSP指令集都可以在一个周期内完成,Cortex-M3需要多个指令和周期才能完成等效功能。同时Cortex-M4具有专用于浮点任务的单元——FPU单元以及debug调试,可以使用JTAG或ST-Link这类简单、标准化的外部连接器进行调试。在功耗方面,Cortex-M4的性能也比Cortex-M3更好,具体如表2.1所示:
表2.1 Cortex-M4与Cortex-M3的功耗比较
Cortex-M3 Cortex-M4
流 程 台积电90nmG 65nm低功率工艺
优化类型 Speed优化 面积进行优化 Speed优化 面积进行优化
标准单元库 ARM的SC9 ARM的SC9 ARM的SC12 ARM的SC9
整体性能(总 DMIPS) 344 63 375 188
频率/MHz 275 50 300 150
电源效率/(DMIPS/MW) TBD 12.15 24 38
面积/mm2 0.083 0,047 0.21 0.11
FPU面积/mm2 不适用 不适用 0.08 0.06

2.1.2 STM32F407ZGT6芯片
为了满足汽车仪表的功能,本设计的主控芯片需要具有强大的数据处理功能的CPU,足够大的内存来存储图形界面图像以及较高的内部时钟来进行中断,定时器等功能,同时该芯片支持移植FreeRTOS操作系统。
因此本设计采用STM32F407ZGT6单片机作为主控芯片。它不单具有ARM Cortex-M4内核并且延展了其他的外围设备。该主控芯片所拥有的168MHZ时钟、定时器功能、FLASH大小以及SRAM符合了本设计所需求的图像储存空间以及中断功能。同时,该芯片还拥有丰富的通信接口,包含了在本次设计中需求的串口通信以及CAN接口通信。它还支持FreeRTOS操作系统,满足了本次设计的需求。STM32F407具有144个引脚供用户使用,引脚描述如图2.1所示:
在这里插入图片描述

图2.1 STM32F407引脚图

3 软件设计

3.1 主程序设计
本课题设计的主程序流程如图3.1所示,开机后会初始化液晶显示屏,内部时钟以及I/O口。在FreeRTOS里建立两个任务,分别为主程序任务以及显示任务(主程序任务优先级大于显示任务)。主程序任务会根据内部时钟,不停地循环。当STM32收到信息或按键按下,会判断是否有效。如若无效,不执行任何操作,继续循环。如若有效,会切换到显示任务中,根据逻辑,输出对应的信号,更新LCD液晶显示屏上的信息或蜂鸣器鸣响。
在这里插入图片描述

图3.1 程序主流程图

4 项目调试

4.1 软件调试
本课题设计的汽车仪表系统采用Keil5开发环境,该环境的编译器以及调试工具可以和STM32很好的匹配。本次设计的的虚拟仪表能够实时显示当前车速、当前油量、水箱温度等信息。该平台使得人机交互系统更加的实用、美观、操作简单[18]。
本设计基于STM32F407控制,利用CAN分析仪在PC端发送指定CAN报文给STM32单片机,根据程序逻辑来驱动LCD液晶显示模块。主要在Keil5环境下,基于C语言开发。在Keil5中,新建一个FreeRTOS的新项目,选择STM32F407ZGT6芯片,再将从官网下载的FreeRTOS以及emWin的源码移植进去,修改相关的配置文件,可以进行本项目的代码设计。在本项目中采用ST-LINK调试工具,配置好相关设计后,当编写完程序编译通过后,可以直接通过ST-Link工具下载到STM32芯片中,不必通过串口烧录HEX文件的形式。同时,可以调用Keil5中的debug窗口,可以实时查看程序的运行状态,在需要调试的地方加入“断点”,可以排查出现问题的代码。如图4.1所示:
在这里插入图片描述

图4.1 Keil5环境debug调试模式

4.1 重点问题及解决
在实物的调试过程中,主要包含以下几个重点问题:
(1)CAN通信不成功;
(2)图形界面冲突,会出现一个图形被另一个覆盖的情况;
(3)仪表指针异常,无法指向CAN报文发来的数据位置;
(4)编译不通过,STM32没有足够的空间存储图片信息;
经过多次调试排查,第一种情况需要先检查CAN总线的波特率是否保持一致,可以应用EmbededConfig(分析仪配置软件),配置波特率保持一致,检查CAN_H和CAN_L信号是否接反。同时在上位机界面中,需要将报文配置为标准帧,标准帧的ID长度不同于扩展帧,容易造成信息不匹配。针对图形界面冲突的问题,原因是由于在实现一个图像的时候,需要先将该图像所在的坐标“清除”出来,以便显示图像。解决办法是在代码中将突出的图像放在一个循环中,以免出现覆盖的现象。仪表指针异常,经过使用Keil5调试诊断,发现是由于CAN报文发送的是16进制的数据,而在指针算法中采用的是十进制的算法,数据不匹配造成的。可以采用位操作的技巧,取出正确的数值。最后一个问题,是由于STM32的存储空间有限,较大的图像信息过多的占用内存,可以应用Photoshop软件改变图片的像素大小,优化内存占用,可以解决上述问题。最后实物图像如图4.3所示:
在这里插入图片描述

图4.3 项目实物图

文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐