基于STM32的多路电压测量设计方案
压成线性关系,其增益控制端输入电压范围为±500mv,增益调节范围为40dB,当步进 5dB时,控制端电压需增大:
ADC匹配电路的电路图如图2所示。
3.3 LCD控制电路
本设计所使用的LCD为2.4寸,320&TImes;240分辨率。LCD模块使用STM32的FSMC接口控制。
FSMC(Flexible StaTIc Memory Controller)即可变静态存储控制器,是STM32系列中内部集成256KB以上Flash,后缀为xC、xD和xE的高存储密度微控制器特有的存储控制机制。通过对特殊功能寄存器的设置,FSMC能够根据不同的外部存储器类型,发出相应的数据/地址/控制信号类型以匹配信号的速度,从而使得 STM32系列微控制器不仅能够应用各种不同类型、不同速度的外部静态存储器,而且能够在不增加外部器件的情况下同时扩展多种不同类型的静态存储器,满足系统设计对存储容量、产品体积以及成本的综合要求。
在STM32内部,FSMC的一端通过内部高速总线AHB连接到内核Cortex-M3,另一端则是面向扩展存储器的外部总线。内核对外部存储器的访问信号发送到AHB总线后,经过FSMC转换为符合外部存储器通信规约的信号,送到外部存储器的相应引脚,实现内核与外部存储器之间的数据交互。F S M C起到桥梁作用,既能够进行信号类型的转换,又能够进行信号宽度和时序的调整,屏蔽掉不同存储类型的差异,使之对内核而言没有区别。
FSMC可以连接NOR/PSRAM/NAND/PC卡等设备,并且拥有FSMC_A[25:0] 共26条地址总线,FSMC[15:0]共16条数据总线。另外,FSMC扩展的存储空间被分成8个块。通过地址线选择操作的块。这样,LCD将被看作一个拥有一块地址空间的存储器进行操作。
3.4 SD卡驱动电路
本设计中使用的SD卡为MicroSD,也称TF卡。MicroSD卡是一种极细小的快闪存储器卡,主要应用于移动电话,但因它的体积微小和储存容量的不断提升,现在已经使用于GPS设备、便携式音乐播放器、数码相机和一些快闪存储器盘中。 MicroSD卡引脚图如图9所示。
MicroSD卡与SD卡一样,有SPI和SDIO两种操作时总线。SPI总线相对于SDIO总线接口简单,但速度较慢。我们使用SDIO模式。
MicroSD卡在SDIO模式时有4条数据线。
其实,MicroSD在SDIO模式时有1线模式和4线模式,也就是分别使用1根或4根数据线。当然,4线模式的速度要快于1线模式,但操作却较复杂。本设计中使用的是SDIO的4线模式。MicroSD卡的硬件连接图如图3所示。
3.5 触摸屏电路
本设计在测量的通道和显示设置上,除了使用按键设置,还使用触摸屏进行设置。
触摸屏使用芯片TSC2046控制,其硬件连接图如图4所示。
在图4中,TSC2046可以采集触摸屏的点坐标,从而确定触摸的位置,进行人机交互。
STM32单片机通过SPI总线与TSC2046通信,可以得到触摸信息。本设计使用触摸屏进行测量通道数的设置和测量速度的设置。
4.系统软件设计
4.1 软件流程
系统软件部分使用C语言编程,同时使用STM32官方提供的固件库,使用的版本为3.5版。 STM32固件库也称固件函数库或标准外设库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。简单的说,使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规范的使用每一个外设。
软件部分为了方便存储数据的查看和读取,在MicroSD卡部分使用了fatfs文件系统。
FAFFS是面向小型嵌入式系统的一种通用的FAT文件系统。FATFS完全是由AISI C语言编写并且完全独立于底层的I/O介质。因此它可以很容易地不加修改地移植到其他的处理器当中,如8051、PIC、AVR、SH、Z80、H8、ARM等。
FATFS支持FAT12、FAT16、FAT32等格式,所以我们利用前面写好的SDIO驱动,把FATFS文件系统代码移植到工程之中,就可以利用文件系统的各种函数,对已格式化的SD卡进行读写文件了。
以上是系统软件设计的两个主要部分,其他还有LCD驱动程序,ADC和DMA驱动程序,按键中断程序等。
4.2 软件文件结构
文件main.c是整个程序的入口文件,也是主要文件。global.c和global.h主要是共用的函数和全局性的宏定义。LCD_Disp.c和LCD_Disp.h是基于STM32固件
- 直流工作电压测量法(07-10)
- 工程师经验谈:如何测量高精度直流电压?(04-03)
- 一个发光二极管引发测量细节的思考(02-04)
- 盘点STM32-NUCLEO开发与仿真平台(03-28)
- 一种基于ZigBee和STM32的室内智能照明系统的设计(05-13)
- 大联大友尚集团推出ST STM32马达控制Nucleo开发工具包,可直接开始运转无刷直流马达(05-27)