毕业设计(论文)-基于ARM的风力发电机智能充电器设计 - 图文 下载本文

西南交通大学硕士研究生学位论文 第36页 +16VTP5PWM0R10100R1522KR94.7KR11100KU4C200.1uR1247KC180.1uR13120KC19GND5R16100KGND5R8310nF21001u/25VGND5C178U3A1LM258R14100X10-83214GND5GND54+5V+16VTP215vVOUTTEMPTRIMGNDGND5FDC5612(B7Q)R170R191002178GND5R181KU5TP6VAREFE7C2210u/35V0.1uC211u/35VGND5VINNCNCNCREF026354GND5R201KGND5C23PWM1R22100R214.7KTP7R23100KU6C250.1uR2415KR25120K0.1u5U3B7LM258R26100X10-9R2722K6C2410nFGND5GND5321GND5FDC5612(B7Q)R28100KGND5GND5R290GND5+5VD1BAV990R39C20.1uQ1BC807TP8R31C_comp4.7KR3015K456R32220D2BAV99R3315KGND5Q2R354.7KBC807Q4BC817R3610K+5VR4220KR4315KR45100GND5E110u/25VV16_inD3BZX84-5V1(Z2W)123D4BZX84-5V1(Z2W)2R400GND5GND5C27100u/25VQ3BC817X10-4X10-5X10-6X10-7X10-8X10-9GND5C3+16V0.1uX1123456789101112HEAD12*3Head12*3C_HSDTP9R344.7K------> Board B : X30C26R44R464.7K10K100u/25VGND513+3.3VX10-431R48D5BAV99+3.3VAD3 VDCjcC280.1uX10-5D6BAV99R49330AD4 IDCC290.1u2330+3.3VX10-6D7BAV99R50330AD5 VDCtzC300.1u+3.3VX10-7D8BAV99R51330AD6 VacinC310.1u 西南交通大学硕士研究生学位论文 第37页 第四章 充电器软件设计

4.1 充电器软件设计平台

充电器软件采用基于ARM内核的嵌入式C语言编写,开发平台使用RealViewMDK4.0软件配合JLink仿真器。同时,直接应用意法半导体公司提供的STM32内核固件库进行开发,使开发工作更加标准规范,同时提高了开发效率。

4.1.1 MDK开发工具

RealView MDK开发工具如图4-1所示,它集成了业内最先进技术,包括RealView编译器与Vision3集成开发环境,它支持ARM7、9,和最新的CortexM3内核,能够自动配置启动代码,集成Flash烧写模块,具有强大的设备模拟,和性能分析功能。

图4-1 RealView MDK软件界面

4.1.2 STM32固件库

STM32的标准外设库如图4-2所示,它是一个固件函数包,由程序、数据结构和宏构成,它包括控制器所有外设的性能特征。该函数库包括每一个外设的驱动描述与应用实例,为设计人员访问底层的硬件提供了一个中间API,这样使用固件函数库,不需要深入的掌握底层硬件细节,就可以轻松应用每一个外设。所以使用函数库可极大地减少用户程序的编写时间,降低产品开发成本。

西南交通大学硕士研究生学位论文 第38页 ST公司2007年10月发布了V1.0版本的固件库,MDK ARM3.22之前的版本均支持该库,2008年9月推出的MDK ARM3.23版本,V3.0以后的版本相对之前的版本改动较大,本项目使用V3.4版本。

使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规范的使用每一个外设。

图4-2 STM32固件库

4.2 软件设计

4.2.1 主程序

控制板主程序流程图如图4-4所示,充电器开机后程序首先进行STM32控制器硬件初始化设置,系统时钟采用外部高速晶体振荡器(8MHZ),设置高速晶振打开,PLL(Phase Locked Loop)倍频系数设置为7,这样控制器工作频率为56 MHZ。使能门控时钟的AHB(Advanced High-performance Bus)外围设备,使能高速APB(Advanced Peripheral Bus)外围设备时钟,使能外围IO、ADC、I2C、UART等设备。充电器初始化配置函数在RealView MDK开发平台中的函数列表如图4-3所示。

充电器的模拟信号采集采用控制器内置8通道的ADC1,各通道轮流连续采集8路模拟信号值,通过DMA(Direct Memory Access,直接内存存取)传输到内存,这里采用DMA通道1。ADC配置为扫描并且连续转换的独立工作模式,使用ADC1的数据自

西南交通大学硕士研究生学位论文 第39页 校准模式,ADC的时钟配置为12MHZ,采样时间设置值55Cycles5。在每次转换结束后,由DMA循环将转换的数据传输到内存中。采用TIM2为ADC采集定时器。

PWM控制采用TIM4的通道3、4配置管脚PB8、PB9输出PWM1、PWM2两路脉冲,占空比分别设置值为10888、13792,对应PWM占空比为24.0%、30.4%。TIM4周期设置值45370,对应PWM频率为308HZ。

UART串行通信配置采用USART1,波特率9600,校验位无,数据位8,停止位1,中断接收,查询发送模式(细节请查阅3.3.6节)。

图4-3 在MDK中的初始化函数列表

开机硬件初始化配置完成后,进行了EEPROM的测试,该测试是对EEPROM内部的专用测试区地址的数据进行测试,这不影响系统参数,测试区与参数区是划分在不同的EEPROM区域。同时采用LED发光管以0.5秒的速度闪烁3次提示开机正常进行中。随后,控制器读取EEPROM的系统参数到指定内存中,进行参数初始化配置,也就是配置程序工作的默认值。

程序的初始化和环境配置到此完成,接下来就开始进入主程序的大循环结构。循环首先是进行8路ADC信号的采集和滤波处理。然后判断缓上电是否开启,开机时缓上电是关闭的,16V和3.3V都是异常,程序会经过短路复位检测直接进入交流电压检测与缓上电处理模块,如果输入交流电压正常,1秒钟的缓上电时间到了,缓上电完成后开关电源输出电压,16V和3.3V电压都进入正常,使能缓上电完成的状态标志。随后,程序循环结构才进入各路AD状态分析检测与报警模块,在这里反复分析系统的所有状态信息,设置相关状态标志,由这些状态标志控制其它功能模块的开启与关闭,注意,这里状态信息的分析是整个程序功能模块控制的核心,各种报警信息由这里产生,其它模块的工作都要受到这些状态标志的控制。