自学内容网 自学内容网

I.MX6U 裸机开发9.BEEP蜂鸣器实验

一、原理图分析

1. 底板原理图

在 MINI 开发底板上,BEEP电路是这样的:

在这里插入图片描述

当BEEP为低的时候,三级管导通,蜂鸣器会叫。
当BEEP为高的时候,三级管截止,蜂鸣器不叫。

开发板上的蜂鸣器是有源蜂鸣器,内部有振荡源,通电即可发声。

2. 核心板引脚原理图

在这里插入图片描述
这里可以看到 , BEEP 接的引脚是SNVS_TAMPER1 引脚,该引脚通常用于安全非易失性存储器(SNVS)模块中的防篡改检测功能,本实验将其设置复用为GPIO口。

3. 程序实现步骤

  1. 初始化 SNVS_TAMPER1 引脚复用为GPIO
  2. 设置 SNVS_TAMPE1 的电气属性
  3. 初始化 GPIO 方向
  4. 控制 GPIO 输出

二、开发过程

1. 复制工程

从前一章08_ledc_bsp的基础上开发,复制前一章所有文件到新文件夹: 09_beep

2. 编写 beep 操作文件

beep.h

//
// Created by Xundh on 2024/11/14.
//

#ifndef LEARN_I_MX6U_BEEP_H
#define LEARN_I_MX6U_BEEP_H

#include "../../board/imx6u/inc/fsl_common.h"
#include "../../board/imx6u/inc/fsl_iomuxc.h"
#include "../../board/imx6u/inc/MCIMX6Y2.h"

void beep_init(void);
void beep_on(void);
void beep_off(void);

#endif //LEARN_I_MX6U_BEEP_H

beep.c

首先从参考手册找到 SNVS_TAMPER1 引脚复用信息:
在这里插入图片描述
可以看到 SNVS_TAMPER1 可以复用为GPIO5_IO01。

到 fsl_iomuxc.h 里找到寄存器的定义:
在这里插入图片描述
编写 GPIO 设置代码如下:

    // 设置 SNVS_TAMPER1 复用为GPIO5_IO01
    IOMUXC_SetPinMux(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01, 0);
    // 设置电气属性
    IOMUXC_SetPinConfig(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01, 0x10b0);

设置GPIO 输出 :
在这里插入图片描述
代码如下:

    // GPIO 初始化
    GPIO5->GDIR |= (1 << 1); // 设置为输出
    GPIO5->DR |= ~(1 << 1);  // 关闭

Makefile

修改Makefile将其中的ledc改成beep。

Main文件

#include "inc/main.h"
#include "bsp_clk.h"
#include "bsp_delay.h"
#include "led.h"
#include "beep.h"

int main(void)
{
    clk_enable();   /* 使能外设时钟 */
    led_init();     /* 初始化LED */
    beep_init();    /* 初始化蜂鸣器 */
    /* 初始化LED */
    
    /* 设置LED闪烁 */
    while(1) {
        led_on();
        beep_on();
        delay(1000);

        led_off();
        beep_off();
        delay(1000);
    }
    return 0;
}

编译烧写程序运行即可。
本文代码开源在:
https://gitee.com/xundh/learn_i.mx6u/tree/master/09_beep


原文地址:https://blog.csdn.net/xundh/article/details/143768661

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!