1、嵌入式综合实验周嵌入式系统原理及应用综合实验报告专业班级:姓名: 学 号:_时 间:_指导教师:_2017年 9 月 17 日嵌入式系统原理及应用综合实验报告摘要:信盈达电子产品信盈达智能穿戴开发平台,广泛应用于嵌入式生产实训教学中。该文通过分析STM32F40xxx系列微控制器的架构和操作原理,通过使用信盈达智能穿戴开发平台,给出了相关的编程设计方法和注意事项关键词:嵌入式 STM32 智能穿戴。1 引言IEEE(Institute of Electrical and Electronics Engineers,美国电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和
2、设备的装置”。原文为:Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)。嵌入式系统,通常指一种专用的计算机设备,或作为装置和设备的一部分,亦或是指单纯的一块控制电路板。事实上带有数字接口的设备都使用了嵌入式系统。从应用对象上加以定义,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。国普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。本次实训采用了信盈达智能穿戴
3、开发平台,通过为期一周的学习,快速掌握了STM32F40XXX系列微控制器的基础使用方法,并通过编程实现了相关的功能。2 总体设计方案2.1 设计思路2.1.1设计一个智能穿戴系统,实现下列功能:显示小组、班级、学号;显示实时温度、湿度;测量并显示心率;测量并显示血压;返回初始界面。2.2 设计方框图3 系统硬件设计3.1 微控制器电路的设计图1 STM32F11微控制器电路3.2 按键电路的设计图2 按键电路3.3温湿度检测电路图3 SHT20温湿度检测电路SHT20是新一代sensirion湿度和温度传感器,采用数字输出方案,带有I2C接口,具有优异的长期稳定性,本电路采用I2C方案进行通
4、讯。3.4 OLED显示电路图4 OLED显示电路平台搭载了一款13264大小的OLED屏幕。OLED是有机发光二极管的缩写,又称有机电激光显示、有机发光半导体。其具有自发光、广视角、超高对比度、低耗电的优良性能,为一种高端的显示设备。4 系统软件设计图5 系统流程图相关程序编写:main函数所需头文件:#include stm32f4xx.h#include key.h#include led.h#include exti.h#include uart.h#include delay.h#include timer.h#include oled.h#include spi.h#include
5、 bmp.h#include iic.h#include sht20.h按键程序:在main函数中,按键程序采用switch语句,按下后累计按下次数,以此选择软件功能模块。switch(page) case 1: OLED_clear(); name_page(); break; case 2: OLED_clear(); clock_page(); break; case 3: OLED_clear(); pulse_page(); break; case 4: OLED_clear(); bp_page(); break; case 5: OLED_clear(); kal_km_page
6、(); break; default: break; SPI程序:SPI 是一种全双工串行接口,英文全称: Serial Peripheral Interface,可处理多个连接到指定总线上的主机和从机。在数据传输过程中,总线上只能有一个主机和一个从机通信。在数据传输中,主机总是会向从机发送一帧 8到 16 个位的数据,而从机也总会向主机发送一帧字节数据。“全双工”意义为:主机、从机同时给对方发送数据。 SPI,是一种高速的,全双工, 同步的通信总线(“同步” 的意思是数据传输需要时钟线),并且在芯片的管脚上只占用四根线,“信盈达智能穿戴设备开发平台”上的 OLED 屏使用的是 SPI 接口。
7、SPI 控制器的初始化步骤有以下几步:(1) 使能 SPI 复用功能所映射的 GPIO 口时钟。(2) SPI 控制器时钟使能。(3) 配置 GPIO 为复用功能。( MOSI/MISO/CLK)(4) GPIO 复用功能为第几复用功能( AFx)。(5) 配置 GPIO 输出速率为 50MHz。(6) 配置 SPIx-CR1 寄存器。 相关代码如下所示:void Spi1_init(void) RCC-AHB1ENR |= 1APB2ENR |= 1MODER &= (0X3F MODER |= 0X2A AFR0 &= (0XFFF AFR0 |= 0X555 OSPEEDR &= (0X
8、3F OSPEEDR |= 0X2A CR1 = 0; SPI1-CR1 |= 3 CR1 |= 1 CR1 |= 4 CR1 |= 1 SR & (1DR = val; while (SPI1-SR & (1DR); SHT20芯片程序: #include iic.h #include delay.h#include sht20.h#define SHT20ADDR 0x80 /SHT20写地址#define ACK 0 /应答信号#define NACK 1 /非应答信号#define FAIL 1 /读取温湿度失败的返回值。#define READ_TEMP_COMD 0xf3 /读取温
9、度命令#define READ_HUMI_COMD 0xf5 /读取湿度命令TempHumiValue_t temp_humi_Value;static void SHT20_setResolution(void);static void SHT20_setResolution(void);void SHT20_softReset(void);static u8 SHT20_writeOneByte(u8 dataToWrite) u8 ack; ack = IIC_WriteByte(dataToWrite); /发送字节 return ack;void SHT20_softReset(vo
10、id) IIC_Start(); /start I2C SHT20_writeOneByte(SHT20ADDR&0xfe); /I2C address + write SHT20_writeOneByte(0xfe); /soft reset IIC_Stop(); /stop I2C void SHT20_Init(void) SHT20_softReset();static u8 SHT20_readOneByte(u8 ack) u8 temp; temp=IIC_ReadByte(ack); return temp;static void SHT20_setResolution(vo
11、id) IIC_Start(); /Start I2C if(SHT20_writeOneByte(SHT20ADDR&0xfe)=ACK) /I2C address + write + ACK if(SHT20_writeOneByte(0xe6)=ACK) /写用户寄存器 if(SHT20_writeOneByte(0x83)=ACK); /设置分辨率 11bit RH% 测量时间:12ms(typ.) & 11bit T 测量时间:9ms(typ.) IIC_Stop(); /Stop I2C float SHT20_readTemOrHum(u8 commod) float temp;
12、 /温度 u8 ack=1; u8 MSB,LSB; /温度、相对湿度的寄存器数据 float Humidity,Temperature; /温湿度的转换结果 SHT20_setResolution(); /设置帧率8bit,9bit,10 bit,11bit ,12bit,13bit,14bit IIC_Start(); /iic开始信号 ack = SHT20_writeOneByte(SHT20ADDR&0xfe); if( ack = ACK ) /写地址,并等待ACK if(SHT20_writeOneByte(commod)=ACK) /写命令 do delay_ms(6); /延
13、时 IIC_Start(); /发送开始信号 while(SHT20_writeOneByte(SHT20ADDR|0x01)=NACK); /无应答则整形,还在测量中,如果有应答,则结束当前循环 MSB = SHT20_readOneByte(ACK); /读Data(MSB),给应答ACK LSB = SHT20_readOneByte(ACK); /读Data(LSB),给应答ACK SHT20_readOneByte(NACK); /读Checksum ,不给应答NACK IIC_Stop(); /Stop I2C LSB &= 0xfc; /Data (LSB) 的后两位在进行物理计算前前须置0 temp = MSB*256 + LSB; /十六进制转成十进制 i
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1