蜂鸣器是开发板上的一个硬件设备,可通过向寄存器写入特定的值来控制蜂鸣器发出尖叫声。这一章我们对开发板上的蜂鸣器进行介绍。

蜂鸣器(PWM)驱动--蜂鸣器是开发板上自带的一个硬件。通过相应的寄存器控制蜂鸣器的打开和关闭,并且在实现蜂鸣器的驱动时,将打开和关闭蜂鸣器的函数放到了另外的C源代码中,通过多个*.o文件产生*.ko驱动文件。

蜂鸣器驱动的原理:蜂鸣器也称为PWM-脉冲宽度调制,基本原理是通过脉冲来控制蜂鸣器的打开和停止。PWM使用端口F的GPFCON寄存器进行控制。该寄存器在Linux内核中对应的宏是S3C64XX_GPFCON,表示GPFCON寄存器的虚拟地址,只用了高两位来控制PWM。当高两位为10时,打开PWM,为00时停止PWM,只需通过iowrite32()为GPFCON寄存器设置不同的值即可。

实现蜂鸣器驱动的方式为通过I/O命令可以打开和停止PWM。PWM驱动有3个文件,驱动主程序、头文件和包含打开和停止PWM的两个函数的文件。还有编译驱动的Makefile文件。

测试蜂鸣器驱动的步骤为,先进入/root/drivers/ioctl目录,执行build.sh脚本文件编译和上传ioctl文件。在测试PWM驱动前,先要编译和安装PWM驱动,然后进入开发板终端的/data/local目录,输入命令“# ./ioctl /dev/pwm_dev 1 0”打开PWM。输入命令“# ./ioctl /dev/pwm_dev 0 0”停止PWM。ioctl命令必须要求输入I/O命令的参数,但PWM驱动未使用I/O命令参数,所以ioctl最后一个命令行参数可任意输入。