码迷,mamicode.com
首页 > 其他好文 > 详细

stm32之外设控制

时间:2017-10-12 20:21:06      阅读:336      评论:0      收藏:0      [点我收藏+]

标签:增加   通信   自带   初始化   基本   nsis   显示器   images   实现   

本文将提到以下内容:

  • 蜂鸣器
  • 按键控制
  • 电容触摸
  • 温度传感器
  • 红外
  • TFTLCD触摸屏
  • MPU6050传感器
  • SDIO_SD卡

 

一、蜂鸣器

  蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,主要分为以下两种:

  • 有源:电磁式
  • 无源:压电式

  这里的有源,不是指电源的意思,而是指蜂鸣器内部是否含有振荡电路,有源蜂鸣器内部自带振荡电路,

只需提供电源即可。无源蜂鸣器需要提供1.5-5KHz之间的频率脉冲才能发声。

  我们可以通过以下两个方面来让蜂鸣器发出美妙的音乐:

  • 频率:控制音调
  • 占空比:控制声音大小

 

二、按键控制

  按键是一种电子开关,通常的按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号

如下图所示:

技术分享

  可以看出,机械开关唯一要注意的点就是按键抖动,一般抖动时间为5ms到10ms,我们可以通过两种方

式进行消抖:

硬件消抖:较复杂,一般不太推荐。

软件消抖:按键按下后,延时10ms,再次读取按键状态,比较简单,推荐。

 

三、电容触摸

  电容触摸按键,原理是通过检测电容充放电时间,即可判断是否有触摸,如下图所示,A未触摸,B触摸,

B的充放电时间明显长于A,即可判断B触摸。触摸时,手指和TOUCH之间形成电容,会影响充放电时间。

技术分享

 

 

四、温度传感器

  stm32芯片内部带有温度传感器,但是内部的温度传感器受芯片内部温度影响较大,所以一般不采用内部

的温度传感器。

  我们一般采用DS18B20,其是单总线器件,一般单总线器件都要求采用严格的信号时序,以保证数据的完

整性。一般有以下几个信号的时序:

  • 初始化时序
  • 写时序
  • 读时序

 

五、红外

  比红光波长还长的光叫做红外线,红外线遥控就是利用波长为0.76~1.5um之间的近红外线来传送控制信号

的,抗干扰能力强,信息传输可靠。

  由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以,在设计红外线遥控时,不

必要像无线电遥控那样,每套(发射器和接收器)要有不同的遥控频率或编码(否则,就会隔墙控制或者干扰),所

以同类产品的红外线遥控器,可以有相同的遥控频率或编码,而不会出现串门的情况。

  主要分为两部分:

  (1)红外发射设备

  红外发射电路的主要元器件是红外发光二极管。红外遥控器常用载波的方式传送二进制编码,常用的载波频率

为38KHz,二进制脉冲码的形式有很多种,红外遥控器最常使用的是NEC协议(PWM码脉冲宽度调制),NEC码位

的定义时序图如下图所示,其中0.56ms是连续载波脉冲:

技术分享

  NEC遥控指令的数据格式为:引导码、地址码、地址反码、控制码、控制反码。其中反码是为了增加传输的可靠

性(可用于校验)。数据格式如下图所示:

技术分享

  NEC码还规定了连发码(由9ms低电平+2.5ms高电平+0.56ms低电平+97.94ms高电平组成),如果在一帧数据传

送完毕之后,按键仍没有放开,则发射连发码。

  一般红外遥控器按键出产的时候就已经底层编码了,不过我们可以通过修改遥控器配置文件来修改按键编码。

  (2)红外接收设备

  根据载波频率和编码方式,即可定制一体化红外设备。红外遥控接收设备由红外接收电路、红外解码等组成,主要

作用是将发射来的红外光信号转换为电信号,再放大、限幅、检波、整形,形成指令脉冲,输出值遥控微处理器。

  红外没接收到信号时为高电平,收到脉冲时为低电平,通过外部中断的下降沿触发中断,在中断处理函数内计算高

电平时间来判断接收到的数据是0还是1,或者判断是否是引导信号。其中计算高电平时间可以采用延时函数delay。

 

六、TFTLCD触摸屏

  TFT-LCD是薄膜管液晶显示器(thin film transistor-liquid crystal display),每个像素都设有一个薄膜晶体管,

每个像素都可以通过点脉冲直接控制,且相互独立。常用的通信模式主要有6800模式和8080模式,TFT彩屏一般都使用

8080并口模式。数据线的数量主要看液晶屏使用的是几位模式,有8根、9根、16根、18根四种类型,功能如下图所示,

其中有5根控制线和多根数据线。

技术分享

  接下来看一下8080接口模式的时序图:

技术分享

  实现TFT液晶显示的步骤如下:

  • IO口与TFTLCD模块相连接
  • 初始化TFTLCD模块
  • 写入内容

  以前,我们使用51单片机就是通过单片机的IO口模拟8080时序进行TFT彩屏控制,但是stm32F4自带了FSMC接口,

FSMC的NOR/PSRAM存储器控制器的接口信号与TFT彩屏类似,所以可以将TFTLCD当做SRAM设备使用。因为TFTLCD

的读写速度相差较大,一般是将读写时序分开。

  触摸屏分为电阻式和电容式,电阻式触摸屏是通过压力感应原理来实现的,电容式触摸屏是利用人体感应进行触点

检测控制。TFTLCD屏上除了FSMC控制的信号线之外,还带有触摸屏的控制线,可以单独进行控制。

 

七、MPU6050传感器

  MPU6050是一款6轴运动处理组件,整合了3轴陀螺仪和3轴加速度传感器,其内部结构框图如下图所示:

技术分享

  使用步骤如下:

  • 初始化I2C接口
  • 复位MPU6050
  • 设置角速度传感器(陀螺仪)和加速度传感器的满量程范围
  • 设置其他参数
  • 配置系统时钟并使能
  • 利用DMP进行姿态解算

  从上述步骤中,我们看到MPU6050中自带数字运动处理器DMP,DMP能够将我们得到的原始数据直接转换成四元数

输出,而得到四元数之后,就可以很方便的计算出欧拉角,从而得到航向角、横滚角和俯仰角,即得到了我们想要的姿态

(其中四元数是q30格式)。要使用DMP,需要将InvenSense提供的MPU6050运动驱动库移植过来。

 

八、SDIO_SD卡

  stm32F4的SDIO提供了APB2外设总线与多媒体卡(MMC)、SD卡、SDIO卡以及CE-ATA设备之间的接口。总线的

通信是基于命令和数据的传输,多媒体卡/SD/SDIO总线上的基本事务是命令/响应事务。SDIO由两部分组成:APB2接口

和SDIO适配器,其结构框图如下:

技术分享

技术分享

  操作步骤如下:

  • 初始化SD卡
  • SD卡读写块函数
  • 编写主函数

 

stm32之外设控制

标签:增加   通信   自带   初始化   基本   nsis   显示器   images   实现   

原文地址:http://www.cnblogs.com/steed/p/7650965.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!