基于STM32的温度测量系统Word下载.docx
- 文档编号:17050599
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:13
- 大小:31.62KB
基于STM32的温度测量系统Word下载.docx
《基于STM32的温度测量系统Word下载.docx》由会员分享,可在线阅读,更多相关《基于STM32的温度测量系统Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
MDK完成软件部分的设计,它包括RealView编译器、Keil
μVision3开发环境,可以使用Cortex-M3核处理器,代码实现自动配置、自动启动,配有Flash烧写模块,Simulation设备模拟功能极其强大,可以针对软件实现仿真。
在仿真过程中,能够对和硬件有关的寄存器进行查看,通过观察这些寄存器,就能很容易的检查代码的功能是否符合设计要求,出现错误时也方便找出原因。
通过Jlink连接处理器后,还能进行在线调试,就能实时跟踪程序在硬件上的执行状况,可以进行复位、执行到断点处、挂起、执行进去、执行过去、执行出去等丰富的操作,例如,单步执行程序,就可以看到每一行代码在硬件的所起的效果,这样更直观,更方便对程序进行改进。
这个功能在软件设计的过程中给予我极大的帮助,STM32的寄存器比较繁杂,使用时很容易遗漏某些部分,而在线调试就容易找出问题所在,从而进行纠正。
最后的成品较好的完成了预定的设计要求,能准确的显示温度数据,能与移动终端实现异步双工通信,达到传输温度和远程控制的目的。
通过本次设计,更加深入的理解了stm32的相关寄存器,并掌握其工作原理。
更加深入的学习和应用一些工具软件,如Altium
Designer、RealView
MDK,通过对这些软件的使用,也加深了对相关知识的理解。
本次的毕业设计题目相关的知识包括:
电路原理、数电、模电、单片机原理、c语言、通信原理等,有效的培养分析和解决实际问题的综合能力,得到更加全面的培养和锻炼,是对大学期间所学知识的一次综合性应用。
2
系统分析
本系统是基于STM32
微控制器所设计的温度测量系统,通过温度芯片传感器DS18B20测量温度,微控制器驱动液晶模块显示当前测得的温度,然后由蓝牙将温度信息发送至手机终端,同时接收终端反馈的控制信息。
整个系统模块分为四个模块:
主芯片模块、DS18B20温度模块、液晶显示、蓝牙模块。
MCU
是STM32
主芯片的最小板,上面有芯片工作需要的最少资源:
时钟控制电路、JTAG
接口、复位电路以及与外围电路相连的接口。
DS18B20和液晶分别是温度测量、控制显示部分。
而蓝牙模块负责完成与移动终端的异步双工通信。
2.1STM32芯片
作为一种ARM
Cortex-M3内核,STM32系列是以嵌入式应用为设计基础,具有功耗低、成本低、性能高的特点和优势。
根据性能的不同,STM32分为STM32F103“增强型”、STM32F101“基本型”两个主要的系列。
前者使用频率为72MHz的时钟,在同类产品中,该产品具有最高的性能;
后者使用频率为36MHz的时钟,其价格与16位的产品相近,而其性能要比16位产品高的多,如果用户选择16位产品,此款产品是不二之选。
在两个系列中配备的闪存大小由32-128K,只是在外设结构、SRAM最大容量方面存在不同的组合。
对于频率为72MHz的时钟,代码均在闪存中执行,市场上32位的产品系列中,STM32具有最低的功耗,低至36mA,即0.5mA/MHz。
在STM32中,其内核Cortex-M3的性能非常高,为1.25DMips/MHz;
其外设也是非常先进的:
ADC(双12位、1us)、SPI(18兆位/秒)、较快的I/O翻转速度(18MHZ)、UART(4兆位/秒);
工作在72MHz的时钟之下,其电流为36mA,待机时低至2uA。
内核:
Cortex-M3
CPU(32位的ARM),工作频率最高可达72MHz、1.25DMIPS/MHz,支持硬件除法、单周期乘法。
存储器:
集成的Flash存储器大小由32-512KB,SRAM存储器大小由6-64KB。
电源、复位、时钟管理:
电源、接口驱动电压范围由2.0-3.6V;
可编程PVD(电压探测器)、PDR、POR;
晶振为4-16MHz;
内置校正过的RC振荡电路,频率为8MHz;
其内部RC振荡电路频率为40KHz;
PLL(提供CPU所用的时钟);
用于RTC的晶振,频率为32kHz,带校准功能。
低功耗:
主要包括待机、停止、休眠等低功耗模式,VBAT用于备用寄存器、RTC的电源需要。
调试模式:
JTAG接口、串行调试(SWD)。
DMA:
DMA控制器共有通道12个,支持USART、DAC、ADC、IIC、定时器等诸多外设。
2个16通道的A/D转换器,均为us级,位数为12位,A/D可测量范围是0-3.6
V,具有保持、双采样的功能,同时还配置了温度传感器(1个)。
只有STM32F103xC/D/E才拥有2通道的A/D转换器,位数为12位,快速I/O端口的数量最高为112个,按照不同的型号,I/O端口主要可分为26、37、51、80、112几种,任何一个端口映射到的外部中断向量共有16个,除模拟输入外,还支持低于5V的输入。
定时器的数量最多可以配置11个,其中16位定时器共有4个,一个定时器拥有的脉冲计数器、PWM/OC/IC共有4个;
6通道高级控制定时器共有2个,位数为16位,用于PWM输出的通道不能超过6个;
看门狗定时器共有2个,分别是窗口、独立型;
Systick定时器是一种倒计数器,位数是24位;
对DAC进行驱动的基本定时器共有2个,位数是16位。
通信接口最多不能超过13个,IIC接口共有两个,分别是PMBus、SMBus;
USART接口共有5个,分别是调试控制、IrDA兼容、ISO7816接口、LIN;
SPI接口共有3个,速度为18
Mbit/s,其中与IIS复用的共有两个;
2.0B的CAN、SDIO和USB
2.0全速接口。
STM32F103xx系列微控制器所使用的封装形式是ECOPACK封装。
ARM
Cortex-M3内核集成了SRAM、Flash存储器。
不同于8/16位设备,ARM
Cortex-M3使用的RISC处理器是32位的,处理代码的效率更高。
STM32F103xx微控制器配置相应的嵌入式ARM核,为此,对于一切ARM工具、软件都可以实现兼容。
内置的嵌入式Flash大小最高为512KB,可以对数据、程序进行存储,SRAM存储器大小最高至63KB,在实施读写操作时可以按照CPU的时钟速度。
STM32F103xC/D/E中都嵌入了FSMC,实现的片选共有4个,支持NAND、PSRAM、NOR、RAM、Flash模式。
通过OR后,3个FSMC中断线可以和NVIC相连。
它不具有FIFO的读写功能,只有PCCARD是在内部执行,其余代码的执行都是依靠外部存储器,并且不支持Boot功能,目标频率可以高达SYSCLK/2,为此,如果系统使用72MHz时钟,那么读写时的频率为36MHz。
配备矢量中断控制器(NVIC),除Cortex-M3中16根中断线外,可以对其余最多43个可屏蔽中断通道进行处理,在实施中断处理时具有更小的延迟,将中断入口向量表地址直接传送至内核,它所提供的内核结构可以实现中断提前处理,对于后到的中断,优先处理优先级更高的,可以实现尾链,对处理时的具体状态进行自动保存,在退出中断后,可以自动恢复中断入口,而无需任何指令。
它的外部中断/事件控制器主要组成部分是边沿探测器线,主要产生中断/事件请求,共计19条。
对于每一条线,可以对其实施单独屏蔽,在下降沿、上升沿等触发事件的选择方面可以实现单独配置。
为了使中断请求的状态得到维护,可以使用挂起的寄存器,相比内部APB2所对应的时钟周期,如果外部线上的脉冲周期更长,那么这种情况可以通过EXTI进行探测,GPIO的数量最多112个,和外部中断线(共计16个)相连。
启动时需要选择系统时钟,在执行复位操作时,CPU时钟使用内部晶振,频率为8MHz。
通过监视4-16MHz的外部时钟判断成功与否,此过程中,在禁止控制器后,接着禁止软件中断管理。
如果间接利用晶振未能获得成功,那么可以使用PLL时钟具有的中断管理。
在对低速和高速APB,即APB1、PB2等AHB频率进行配置时可以借助多个预比较器,前者的频率最高不能超过36MHz,后者的频率最高可以达到72MHz。
启动时可以借助Boot引脚选择3种Boot选项中的任意一种,可以通过系统存储器、SRAM、用户Flash实现导入。
Boot将相应的程序导入到系统的存储器内,借助USART1,重新编程Flash存储器。
所使用的VDD范围是2.0V-3.6V,借助VDD引脚为其提供相应的外部电源,主要用在内部调压器、IO接口。
对应的VDDA、VSSA电压范围是2.0-3.6V,可以通过外部输入相应的模拟电压,主要用在PLL、RC、复位和ADC等模块,限制ADC的电压为2.4V,VDDA、VSSA处在VDD范围时需要和VDD、VSS相连接。
VBAT具有的电压范围是1.8-3.6V,在VDD无效时变为RTC,借助电源的切换对备份寄存器、32KHz晶振供电。
在此设备上具有较为完整的上电、掉电复位电路,即POR、PDR,此电路时钟有效,保证电压2V的情况下可以正常启动,在电压降至2V时进行相应的操作。
如果VDD比下限VPOR/PDR要低,那么该设备可以工作在复位模式,而无需外部复位。
在设备中有可编程电压探测器(PVD),它可以对VDD进行检测,相比于VPVD,如果VDD高或者低,那么便会产生中断。
中断服务程序可以把MCU处于安全状态,或者产生相应的警告信息,PVD主要使软件处于使能状态。
它配有低功耗(LPR)、主(MR)、掉电三种模式的调压器,传统调节模式使用MR,而停止模式使用LPR、待机模式使用掉电,掉电模式下,调压器高阻输出,核心电路发生掉电,在保证SRAM、寄存器内容未丢失的前提下消耗为零。
STM32F103xx支持3种模式的低功耗,非常好的平衡了唤醒源、短启动时间、低功耗的问题。
CPU处于停止状态,外设正常运行,此模式即休眠模式,在发生中断/事件时CPU被唤醒;
在寄存器、SRAM内容保持的过程中,使用最小功耗,即停止模式,停止1.8V区域内的时钟,同时禁用HSERC、HSI、PLL,调压器处于低功耗或者正常状态。
利用外部中断线可以将设备由停止模式成功唤醒,外部中断源可利用外部中断线产生TRC警告,实现PVD输出。
待机模式的功耗最小,会关闭内部的调压器,而切断1.8V区域的供电,同时关闭HSERC、HSI、PLL。
如果处于待机模式,寄存器、SRAM、待机电路、备份寄存器都会丢失各自的内容。
如果出现IWDG、外部复位,或者WKUP引脚发生TRC警告、出现上升沿,那么设备便由待机模式退出,当处在待机或者停止模式时,并不会停止IWDG、TRC、时钟源。
选型片的原则是:
看功耗,本次设计的温度系统需要在外场长时间工作,必须保证较低的功耗;
如果性能满足要求,那么必须保证较低的成本。
就此方面看,在当前32位市场上,STM32系列产品具有最低的功耗,低至36mA,相当0.5mA/MHz,具有36MHz的时钟,花费16位产品的价格,所得到的产品性能要比16位产品高的多,基于上述几点考虑,本次的mcu选定为STM32RBT6。
2.2DS18B20
DALLAS半导体公司制作、推出了DS18B20,这是一款温度传感器,接口为“一线总线”。
这不同于其他的测温元件,比如热敏电阻等,此温度传感器是数字化的,具有非常简单的微处理器接口、较宽的适用电压、较小的体积。
“一线总线”经济而简洁,用户可以利用此接口对传感器网络进行组建,将全新概念引入到构建测量系统的过程中。
利用“一线总线”的数字方式可以直接传输现场温度,使系统的抗干扰性得到极大的提升,能将被测温度直接读取出来,在读数时,结合现实情况,通过编程方式将数字值设定为9-12位,工作的电压范围是3-5.5V,封装方式有多种,更方便、灵活的设计系统,在EEPROM中存储用户预先设定的报警温度、分辨率,即使出现掉电,依然保存相关内容。
针对外设、单片机,在传输数据时,主要利用SCI、SPI、I2C等串行总线,在通信时,I2C总线使用的是同步串行二线模式,具有数据线、时钟线各一条;
SPI总线使用的是同步串行三线模式,输出线、输入线、时钟线各一条;
SCI总线使用的是异步模式,数据输入、输出线各一条。
就DS18B20配有的单总线而言,它的信号线是单条的,可以对时钟、数据进行传输,可以实现双向的数据传输,同时拥有简单的线路、较少的硬件开销、廉价的成本,易于维护和扩展的总线。
出厂前已经在ROM中光记了它独有的64位序列号,即DS18B20对应的地址序列码,每个DS18B20具有完全不同的64位序列号。
64位ROM按照以下方式进行排列,产品家族码用前8位表示,DS18B20的序列号用之后的48位表示,而前56位的循环冗余校验码用最后8位进行表示,即CRC=X8+X5
+X4
+1。
对于DS18B20而言,ROM使其各不相同,如此便可以将多个挂接在一根总线上。
DS18B20具有较宽的电压范围,即3.0~5.5V,如果处于寄生电源模式下,供电由数据线完成,无需使用外围元件即可使用,在集成电路中集成了转换电路、传感元件。
通过编程可以使其具有9-12位的分辨率,测试精度较高,温度分辨率为0.0625、0.125、0.25、0.5度。
2.3
TFTLCD
薄膜晶体管液晶显示器,即TFT-LCD,液晶成功解决了发光的问题,可以分解发光显示器,主要是光源及其控制。
液晶作为光源获得较大发展,在寿命、全彩色、发光效率方面取得了较大的进步,而且还处在不断提高的过程中。
自发明LCD后,背光源进步明显,以往是单色、较厚、侧置荧光灯式的,而现在发展为彩色、较薄、平板荧光灯式的,发光光源发展较为迅速,新成果不断出现,LCD由此获得了较多的新背光源,光源科技不断发展,LCD会使用更好、更新的光源。
在控制光源时,移植了半导体大规模集成电路领域的相关工艺、技术,并且成功研制出薄膜晶体管(TFT)的工艺,控制液晶光阀所对应的矩阵寻址,使液晶显示器更好的配合使用控制器、光阀,充分体现出了液晶显示的优势。
无源TN-LCD、STN-LCD、TFT-LCD具有不同的矩阵,针对液晶显示屏上的所有点,都专门设置了相应的薄膜晶体管(TFT),做到一对一,解决了在非选通状态时存在的串扰问题,使扫描线数不会影响到液晶屏所具有的静态特性,进而使图像质量得到极大提升,TFT-LCD即真彩液晶显示器。
TFT所指的是薄膜晶体管,可以控制屏幕上的所有像素,组成显示屏的像素可以发生任意颜色,为了达到目的,只需要对像素点所显示的颜色进行控制。
TFT
LCD使用了背光技术,在像素后需安装开关,此开关类似百叶窗,能够对像素显示的亮度、颜色进行精确的控制,在打开此开关时,光线便可以透进来,而关上开关,光线无法透过。
实现过程中使用了液晶的特性,上、下层都有相应的沟槽,分别是纵向、横向排列,如果没有电压,液晶呈现自然状态,只要结构恰当,通过上层透过的光线会产生90度扭曲,而下层的光线可以顺利通过,加电压后变成产生相应的电场,液晶变成垂直排列,此时光线便无法再通过。
2.4ATK-HC05蓝牙串口
作为蓝牙串口模块,ATK-HC05模块是主从一体的,而且性能较高,可以与PDA、手机、电脑等具有蓝牙功能的设备实现配对,该模块所支持的波特率范围非常大,为4800~1382400,而且该模块和3.3V或5V的单片机系统相兼容,极其方便、灵活。
在建立微微网前,一切设备都是就绪状态,在此状态中,每1.28s未连接的设备便会对一次消息进行监听,唤醒设备后,在监听信息时可以预设32个调频频率,主设备初始化后实现连接进程。
倘若已知设备的地址,通过页信息实现连接;
倘若地址是未知的,那么通过页信息的查询信息实现连接。
微微网中,如果设备未进行数据传输,那么它便进入节能状态。
主设备设置从设备为保持方式,此过程中处于工作状态的只有内部定时器;
从设备亦可以进入到保持方式。
设备一旦转出保持方式便可以开始数据传输。
在和几个微微网相连,或者对低功耗器件进行管理时,常用保持方式。
低功耗的另外两种工作方式是休眠、监听方式。
鉴于蓝牙基带技术,其支持面向连接方式、无连接方式,前者传输语音,后者传输分组数据,温度数据就通过无连接方式传输。
蓝牙采用的是跳频和时分多址技术。
为了使频谱扩展,需要利用伪随机码序列实现频移键控,此载波频率发生跳变,即为跳频。
传统通信系统中使用定频方式,在发射机中,主振荡器具有固定的振荡频率,为了实现载波频率的跳变,得到跳频信号,按照控制指令改变主振荡器的频率。
能够得到跳频信号的装置被称作跳频器,它主要包括跳频指令发生器、频率合成器。
如果将跳频器等同于主振荡器,那么和传统的发信机没有任何不同。
可以对模拟、数字形式的信号进行传送,之后利用调制器实现调制,进而得到固定频率的已调波信号,接着和频率合成器的主载波频率信号实现混频,此时输出载波频率符合射频通带要求的已调波信号,在经过高通滤波器反馈后,利用天线将信号发射出去,此过程即为发送定频信号的过程。
时分多址是分割时间为不重叠的帧,再分割帧为不重叠的信道,和用户一一对应,主要利用信道对地质不同的信号进行区分,实现多址连接。
3硬件设计
3.1
MCU
MCU选用的STM32RBT6,64引脚。
对于PORTA、PORTB,利用排阻P1、P3引出相应的IO口,还可以利用P2引出PORTC口,按照相应的顺序排列PORTA、PORTB。
P2连接了DS18B20的数据口以及红外传感器的数据线,它们分别对应着PA0和PA1,只需要通过跳线帽将P2和P3连接起来就可以使用了。
这里不直接连在一起的原因有二:
1,防止红外传感器和DS18B20对这两个IO口作为其他功能使用的时候的影响;
2,DS18B20和红外传感器还可以用来给其他板子提供输入。
P4口与PL2303的串口输出相连接,和STM32的串口1相对应,使用时通过跳线帽将这两处连接起来。
这样设计使得PA9和PA10用作其他用途使用的时候,不受到PL2303的影响。
P5口是另外一个IO引出排阵,将PORTC和PORTD等的剩余IO口从这里引出。
3.2JTAG设计
作为国际标准测试协议,JTAG可以对芯片进行内部测试,标准的JTAG接口包括模式选择、时钟,以及数据的输入、输出线,即TMS、TCK、TDI、TDO。
3.3TFTLCD电路设计
TFTLCD采用34引脚,部分对应关系为:
LCD_LED对应PC10;
LCD_CS对应PC9;
LCD_RS对应PC8;
LCD_WR对应PC7;
LCD_RD对应PC6;
LCD_D[17:
1];
对应PB[15:
0]。
4软件设计
软件设计部分,包括两大部分:
初始化和功能性设计。
4.1.1
时钟的初始化
对MCU而言,时钟是其驱动源,为了对STM32的系统时钟进行驱动,主要的时钟源有三种,即HSI和HSE振荡器时钟、PLL时钟。
内部RC振荡器的频率为8MHz,产生HSI时钟信号,在其进行2分频后,可以用作PLL,HSE用户外部时钟、HSE外部陶瓷/晶体谐振器产生高速外部时钟信号,即HSE。
此设计中使用的是PLL时钟,利用可配置分频器的PLL2时钟对HSE、HSI/2时钟进行倍频,之后将其输出。
利用可配置的分频器,可以由HSE得到PLL2、PLL3。
在完成倍频、预分频系数、时钟源的配置后对每个PLL进行使能,只有输入时钟源达到稳定后方能使用。
PLL一旦被使能便不能再更改其参数。
如果将PLL的输入时钟源更改,要关闭当前的时钟源,必须先通过对寄存器(RCC_CFGR)的PLLSRC位进行配置后选择新时钟源。
PLL在就绪时时钟中断寄存器(RCC_CIR)会产生中断,代码如下:
//系统时钟初始化函数
//pll:
选择的倍频数,从2开始,最大值为16
void
Stm32_Clock_Init(u8
PLL)
{
unsigned
char
temp=0;
MYRCC_DeInit();
//复位并配置向量表
RCC->
CR|=0x00010000;
//外部高速时钟使能HSEON
while(!
(RCC->
CR>
>
17));
//等待外部时钟就绪
CFGR=0X00000400;
//APB1/2=DIV2;
AHB=DIV1;
PLL-=2;
//抵消2个单位
CFGR|=PLL<
<
18;
//设置PLL值2-16
CFGR|=1<
16;
//PLLSRC
ON
FLASH->
ACR|=0x32;
//FLASH
2个延时周期
CR|=0x01000000;
//PLLON
25));
//等待PLL锁定
CFGR|=0x00000002;
//PLL作为系统时钟
while(temp!
=0x02)
//等待PLL作为系统时钟设置成功
{
temp=RCC->
CFGR>
2;
temp&
=0x03;
}
}
Stm32_Clock_Init函数中的变量只有一个,即PLL,主要用于时钟倍频数的配置,使用8MHz的晶振,将PLL值设定成9,此时STM32便以72M的速度运行。
唯一变量PLL是用来配置时钟的倍频数的,当前所用的晶振为8Mhz,PLL的值设为9,那么将运行在72M的速度下。
另外,延时函数是经常使用的,为了实现延时,主要使用CM3内核处理器中的SysTick定时器,它是倒计数定时器,为24位,如果记到0,通过RELOAD寄存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 温度 测量 系统