1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-300792-1-1.html 3)对正点原子Linux感兴趣的同学可以加群讨论:935446741 4)关注正点原子公众号,获取最新资料更新
前几章试验中的驱动LED灯亮灭属于GPIO的输出控制,本章再巩固一下I.MX6U的GPIO输出控制,在I.MX6U-ALPHA开发板上有一个有源蜂鸣器,通过IO输出高低电平即可控制蜂鸣器的开关,本质上也属于GPIO的输出控制。 14.2有源蜂鸣器简介 蜂鸣器常用于计算机、打印机、报警器、电子玩具等电子产品中,常用的蜂鸣器有两种:有源蜂鸣器和无源蜂鸣器,这里的有“源”不是电源,而是震荡源,有源蜂鸣器内部带有震荡源,所以有源蜂鸣器只要通电就会叫。无源蜂鸣器内部不带震荡源,直接用直流电是驱动不起来的,需要2K-5K的方波去驱动。I.MX6U-ALPHA开发板使用的是有源蜂鸣器,因此只要给其供电就会工作,I.MX6U-ALPHA开发板所使用的有源蜂鸣器如图14.2.1所示:
图14.2.1有源蜂鸣器 有源蜂鸣器只要通电就会叫,所以我们可以做一个供电电路,这个供电电路可以由一个IO来控制其通断,一般使用三极管来搭建这个电路。为什么我们不能像控制LED灯一样,直接将GPIO接到蜂鸣器的负极,通过IO输出高低来控制蜂鸣器的通断。因为蜂鸣器工作的电流比LED灯要大,直接将蜂鸣器接到I.MX6U的GPIO上有可能会烧毁IO,所以我们需要通过一个三极管来间接的控制蜂鸣器的通断,相当于加了一层隔离。本章我们就驱动I.MX6U-ALPHA开发板上的有源蜂鸣器,使其周期性的“滴、滴、滴……”鸣叫。 14.3硬件原理分析 蜂鸣器的硬件原理图如图14.3.1所示:
图14.3.1蜂鸣器原理图 图14.3.1中通过一个PNP型的三极管8550来驱动蜂鸣器,通过SNVS_TAMPER1这个IO来控制三极管Q1的导通,当SNVS_TAMPER1输出低电平的时候Q1导通,相当于蜂鸣器的正极连接到DCDC_3V3,蜂鸣器形成一个通路,因此蜂鸣器会鸣叫。同理,当SNVS_TAMPER1输出高电平的时候Q2不导通,那么蜂鸣器就没有形成一个通路,因此蜂鸣器也就不会鸣叫。 14.3试验程序编写 本实验对应的例程路径为:开发板光盘-> 1、裸机例程->6_beep。 新建文件夹“6_beep”,然后将上一章试验中的所有内容拷贝到刚刚新建的“6_beep”里面,拷贝完成以后的工程如图13.3.1所示:
图13.3.1工程文件夹 新建VSCode工程,工程创建完成以后在bsp文件夹下新建名为“beep”的文件夹,蜂鸣器驱动文件都放到“beep”文件夹里面。 新建beep.h文件,保存到bsp/beep文件夹里面,在beep.h里面输入如下内容:
示例代码13.3.1 beep.h文件代码
1 #ifndef __BSP_BEEP_H
2 #define __BSP_BEEP_H
3
4 #include "imx6ul.h"
5
6/* 函数声明 */
7void beep_init(void);
8void beep_switch(int status);
9 #endif
beep.h很简单,就是函数声明。新建文件beep.c,然后在beep.c里面输入如下内容:
示例代码13.3.2 beep.c文件代码
1 #include "bsp_beep.h"
2
3/*
4 * @description : 初始化蜂鸣器对应的IO
5 * @param : 无
6 * @return : 无
7 */
8void beep_init(void)
9{
10 /* 1、初始化IO复用,复用为GPIO5_IO01 */
11 IOMUXC_SetPinMux(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01,0);
12
13 /* 2、、配置GPIO1_IO03的IO属性 */
14 IOMUXC_SetPinConfig(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01,0X10B0);
15
16 /* 3、初始化GPIO,GPIO5_IO01设置为输出 */
17 GPIO5->GDIR |=(1
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?