以STM32单片机为控制系统核心的数据记录装置设计

发布者:BlossomWhisper最新更新时间:2023-09-21 来源: elecfans关键字:STM32  单片机  数据记录装置 手机看文章 扫描二维码
随时随地手机看文章

引言

本文针对电动汽车研究的实际需求,设计一款数据记录装置,该数据记录装置是搭建在电池能量管理系统基础上的,通过与能量管理系统通信,记录电动汽车实际运行时电池的外部状态(如:电池电压、电流、温度等),一方面为了研究电池的工作特性,另一方面为了对能量管理系统的工作情况做验证,为电动汽车动力电池的理论研究提供数据支持。


1 系统总体设计

本数据记录装置的设计包括硬件设计与软件设计两方面,软件设计主要包括数据接收的编程以及数据存储的编程,而硬件设计主要有几个方面:主控芯片的选择、复位功能的实现、电源模块、实时时钟、通信模块以及SD卡连接等。主控芯片是控制系统的核心,它内部所集成的模块越多,就能省去更多的外部电路,使得电路的设计更加简捷方便。电源模块用来满足系统各部分对于不同电压的需求。实时时钟,用来准确记录系统时标。选用SD卡作为存储装置以适应系统海量数据存储。基于现在市场上的电动汽车主要是CAN接口,所以本装置用CAN进行通信。系统总体结构如图1所示。

以STM32单片机为控制系统核心的数据记录装置设计

根据其实际功能,本数据记录装置的硬件部分设计原理图如图2所示。

以STM32单片机为控制系统核心的数据记录装置设计

2硬件设计

2.1主控制芯片选择

选择STM32F103RBT6芯片作为系统总控制器,STM32F103RBT6是意法半导体有限公司的一款高性能、低成本、低功耗的处理器,它使用高性能的32位的RISC内核ARMCortex-M3,工作频率为72MHz.它的价格较低,零售价大约12元左右。


2.2复位功能

STM32F103RBT内置两个看门狗,两个看门狗设备(独立看门狗和窗171看门狗)可用来检测和解决由软件错误引起的故障,实现软件复位;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。STM32提供上电复位和掉电复位功能,给系统提供了更高的安全性、时间的精确性和使用的灵活性,使得程序运行更加高效,内置的复位功能可以满足系统复位要求。


2.3实时时钟

STM32F103RBT6中内置RTC实时时钟,实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。RTC模块和时钟配置系统(RCC-BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC的设置和时间维持不变。系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操作。

当主电源VDD掉电后,通过VBAT脚为实时时钟(RTC)和备份寄存器提供电源,使用电池或其他电源连接到VBAT脚上,当VDD断电时,可以保存备份寄存器的内容和维持RTC的功能。VBAT脚为RTC、LSE振荡器和PCI3至PCI5端13供电,可以保证当主电源被切断时RTC能继续工作。切换到VBAT供电的开关,由复位模块中的掉电复位功能控制。


2.4电源模块

电源模块为整个系统提供电源,STM32单片机要求2.0-3.6V的操作电压,RTC部分需要电池提供后备电源,在这里VBAT采用CRl220纽扣电池和VCC3.3V混合供电的方式,在有外部电源(VCC3.3V)时,CRl220不给VBAT供电。而在外部电源断开的时候,则有CRl220给VBAT供电。这样VBAT总是有电的,以保证RTC的走时以及后备寄存器的内容不丢失。单片机供电方面,采用5.OV电源通过AMS公司的AMSlll7电压转换芯片为单片机提供3 3V的工作电压。


2.5与通信接口

目前电动汽车能量管理系统主要应用的数据接口为CAN接口。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的31939协议,同时主控芯片STM32内置CAN控制器,只要外接CAN收发器就可以实现CAN通信。为了使系统具有尽可能的广泛性,数据记录装置设计了CAN通讯接口适应系统的需要。


2.6 SD卡模块SD卡允许在两种模式下工作,即SD模式和SPI模式。引脚定义如表1所示:

以STM32单片机为控制系统核心的数据记录装置设计

本装置采用SPI模式,与STM32的SPll口进行连接通信。

SD卡的SPI通信接口使其可以通过SPI通道进行数据读写。从应用的角度来看,采用SPI接口的好处在于,sTM32内部自带SPI控制器,不仅给开发上带来方便,同时也降低了开发成本。

SPI接口的选用是在上电初始时向其写入第一个命令时进行的。


3软件设计

软件调试采用KEIL公司RealView MDK4 12,它包括了ULVision4集成开发环境与ReilView编译器,自动配置启动代码。集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能。系统软件部分主要包括数据接收和数据存储。数据接收部分用于与能量管理系统的通信,以CAN中断接收的方式实现通信。在数据处理和存储部分程序中,数据处理是对数据进行处理转换为常用的单位和格式,数据存储部分负责将数据按一定结构打包存储。系统启动之时,SD卡的初始化是非常重要的,只有进行了正确的初始化,才能进行后面的各项操作。在初始化过程中,SPI的时钟不能太快,否则会造初始化失败。在初始化成功后,应尽量提高SPI的速率,在刚开始要先发送至少74个时钟信号。

中断接收流程图如图3所示。

以STM32单片机为控制系统核心的数据记录装置设计

数据存储流程图如图4所示。

以STM32单片机为控制系统核心的数据记录装置设计

4结束语

本设计提出了一种基于STM32的数据存储装置的设计方案,成功实现了电动汽车电池相关数据的存储,使用CAN通信保证了装置应用的广泛性,用SD卡作为存储介质,满足了数据存储容量以及速率上的要求,但同时仍有可以继续改进的地方,比如可以考虑增加_个USB口,使装置可以直接接到电脑上查看,存储和读取都将更方便,但由于STM32的USB与CAN共用部分SRAM,需要将USB与CAN的运行时间错开。


关键字:STM32  单片机  数据记录装置 引用地址:以STM32单片机为控制系统核心的数据记录装置设计

上一篇:使用STM32ADC看门狗测量出待测信号
下一篇:STM32独立看门狗和低功耗模式_RTC定时唤醒来喂狗

推荐阅读最新更新时间:2024-10-30 15:52

51 单片机实现温度计
通过温度感应元件 DS18B20 能感应周围的温度,然后再通过数码管显示当前的温度 它是这个样子的 当前我在室内,我开了取暖器,它显示温度是 下面是这个程序的源代码 /***************************************************************************** 程序功能:实时采集当前环境温度值,并显示于数码管上 *****************************************************************************/ #include reg52.h #define uchar unsigned c
[单片机]
51 <font color='red'>单片机</font>实现温度计
让你事半功倍学习单片机的8个方法
怎么学单片机?也常看到有人说学了好几个月可就是没有什么进展。当然,受限于每个人受到的教育水平不同和个人理解能力的差异,学习起来会有快慢之分,但我感觉最重的就是学习方法。一个好的学习方法,能让你事半功倍,这里说说我学习单片机的方法。 1、万事开头难、要勇敢迈出第一步。 开始的时候,不要老是给自己找借口,说KEIL不会建项目啦、没有实验板啦之类的。遇到困难要一件件攻克,不会建项目,就先学它,这方面网上教程很多,随便找找看一下,做几次就懂了。 然后可以参考别的人程序,抄过来也无所谓,写一个最简单的,让它运行起来,先培养一下自己的感觉,知道写程序是怎么一回事,无论写大程序还是小程序,要做的工序不会差多少,总得建个项目,再配置一下项
[单片机]
让你事半功倍学习<font color='red'>单片机</font>的8个方法
DS18B20的51单片机驱动源代码
#include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit duan=P0^0; sbit wei=P0^1; //#define DQ RC1 //#define DQ_HIGH() TRISC1=1 //#define DQ_LOW() TRISC1=0;DQ=0 //__CONFIG(0x3B31); sbit DQ=P1^3; //const uchar table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, // 0x07,0x7f,0
[单片机]
基于STM32应用的FreeRTOS中断设置
一、FreeRTOS中断设置介绍 FreeRTOSConfig.h中定义了两个宏,分别是: configKERNEL_INTERRUPT_PRIORITY configMAX_SYSCALL_INTERRUPT_PRIORITY ​configKERNEL_INTERRUPT_PRIORITY用来设置RTOS内核自己的中断优先级。因为RTOS内核中断不允许抢占用户使用的中断,因此这个宏一般定义为硬件最低优先级。 configMAX_SYSCALL_INTERRUPT_PRIORITY用来设置可以在中断服务程序中安全调用FreeRTOS API函数的最高中断优先级。优先级小于等于这个宏所代表的优先级时,程序可以在
[单片机]
基于<font color='red'>STM32</font>应用的FreeRTOS中断设置
STM32开发笔记33:解决USB CDC “该设备无法启动”问题
单片机型号:STM32F401 调试STM32的USB CDC设备已经有好多次了,可以看一下前面写的日志,针对不同的STM32 MCU都进行了调试。原本以为STM32F4会很简单,可处处是坑,已经调到半夜才解决问题,把问题重新梳理。 我现在使用的芯片时STM32F401,在STM32CubeMX中,按照以下步骤设置。 1、设置为全速从设备,不做USB电源检测。 2、使能CDC,其它采用默认设置。 按照上述设置生成的程序,下载到芯片后,接入计算机,默认是这样的 仔细查看细节问题是这样的 找了好久不能解决问题,网上有一种说法是,是更改usbd_conf.h
[单片机]
<font color='red'>STM32</font>开发笔记33:解决USB CDC “该设备无法启动”问题
基于Atmel单片机的水文测验系统
  早期的中小河道水文测验一般是采用人工操作的,操作时间长、劳动强度大、主观误差大。为此我们对原有的人工测验系统进行了改造,采用单片机控制替代人工进行自动水文测验。本文介绍了基于ATMEL89单片机的水文缆道自动测验系统,系统的设计是构建在原有设施基础上,而且尽量不改变系统结构并能兼容手动操作方法,自动地完成流量的测验计算和打印,适用于中小河道的悬索和悬杆两种类型的水文缆道。   根据水利部颁发的《水文缆道测验规范》及人工控制水文缆道的结构和测验要求,单片机控制系统的主要功能有:自动进行河道断面的面积、平均流速、流量测验和计算打印;河道断面任一垂线上水深、水面偏角、河底偏角、垂线平均流速的自动测验;干绳、湿绳和位移修正;测验期间
[单片机]
基于Atmel<font color='red'>单片机</font>的水文测验系统
基于AT89C52单片机的SD卡的读写设计
   前言   长期以来,以Flash Memory为存储体的SD卡因具备体积小、功耗低、可擦写以及非易失性等特点而被广泛应用于消费类电子产品中。特别是近年来,随着价格不断下降且存储容量不断提高,它的应用范围日益增广。当数据采集系统需要长时间地采集、记录海量数据时,选择SD卡作为存储媒质是开发者们一个很好的选择。在电能监测以及无功补偿系统中,要连续记录大量的电压、电流、有功功率、无功功率以及时间等参数,当单片机采集到这些数据时可以利用SD作为存储媒质。本文主要介绍了SD卡在电能监测及无功补偿数据采集系统中的应用方案。    设计方案   应用AT89C52读写SD卡有两点需要注意。首先,需要寻找一个实现AT89C52单片机与
[安防电子]
基于AT89C52<font color='red'>单片机</font>的SD卡的读写设计
STM32 ucos 下添加CAN模块
1.CAN IO RX TX 的设定和重映射 GPIO_PinRemapConfig(GPIO_Remap2_CAN, ENABLE); //端口重映射到PD0,PD1 2.clock CAN IO CLOCK 的开启 、*-------gpio for can------------*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO, ENABLE); CAN 自身CLOCK 的开启、 /* CAN Periph clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved