启扬智能-ARM嵌入式开发平台与方案提供商

才智横溢 / 卓越品质

启扬IAC-IMX8MM-Kit开发板蜂鸣器测试与分析

发布日期:2021/07/20 05:52:51 发布者:admin

  IAC-IMX8MM-Kit开发板

  硬件分析

  IAC-IMX8MM-MB底板使用BZR_CTL引脚控制底板上的蜂鸣器,蜂鸣器位于开发板左下角,丝印BZ1,为有源蜂鸣器。

 

蜂鸣器原理图部分如下所示:

 

  继续在原理图中搜查该引脚可发现,BZR_CTL引脚位于核心板上B60引脚上,

 

  从硬件原理图中可以得知,只要我们能够控制BZR_CTL引脚的电平,那么我们就可以控制蜂鸣器的声响,所以我们需要将该引脚复用为GPIO引脚,这样我们就可以很方便的控制该引脚。

  查找i.MX8MM相关数据手册能够看到该引脚可以复用为GPIO4_IO27。

 

  软件配置

  启扬IAC-IMX8MM-Kit开发板支持Linux4.14,完全支持设备树的配置方式,所以对于蜂鸣器的修改完全可以修改其设备树,文件为fsl-imx8mm-qiyang.dts.

  在iomux的父节点下添加相关子节点,将蜂鸣器的控制引脚复用为普通GPIO引脚。这里的0x19所配置的便是GPIO引脚的相关属性设置,具体也可以到Datasheet中查找相关,并且做自定义化配置,这里就不再赘述了。

  为了跟内核中的蜂鸣器驱动相匹配,所以也需要在下面的节点中添加相关蜂鸣器的配置,大致如下:

  设备树相关配置完成,系统中蜂鸣器设备添加完成。

  接下来需要在驱动中书写相关驱动用于操控蜂鸣器。

  启扬相关驱动文件在内核源码driver下,蜂鸣器驱动文件在其中misc文件夹下的buzzer.c文件。

  在驱动中需要用到ioctl和probe两个函数,ioctl给用户空间提供相关接口,而probe函数则是在设备与驱动匹配完成后所做的一系列的动作,例如,申请GPIO,设置GPIO的方向等。

 

ioctl 函数

 

probe 函数

  至此我们已经完成蜂鸣器设备和驱动的创建,那么我们就能够在开发板中看到这个设备并且去操控它。

  启动并进入开发板中,开发板默认配制Linux4.14.内核,Qt5.10环境,输入相关命令便可以测试蜂鸣器,命令如下:

  cd /usr/test

  ./buzzer_test /dev/qiyang_buzzer 1

  ./buzzer_test /dev/qiyang_buzzer 0

  第一行命令进入我司测试目录,

  第二行命令执行测试应用程序buzzer_test,

  后面紧接着蜂鸣器的设备节点以及传入内核的值,

  1代表打开,0代表关闭,

  至此,测试完毕。

  这里主要是通过内核驱动暴露给用户空间的ioctl函数来操控GPIO的电平,实现相关控制,当驱动与设备匹配成功后就会在/dev下创建设备节点,也证明设备添加成功,驱动添加成功。上述条件成功后才可调用相关接口去处理。

相关产品

IAC-IMX8MM-Kit

    IAC-IMX8MM-Kit开发板