pwm控制蜂鸣器驱动移植及初步认识Kconfig

S3C2440PWM定时器概述:

PWM ( Pulse Width Modulation ) —— 脉宽调制,它是利用微控制器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量、通信、功率控制与变换等许多领域 。

S3C2440A 有5个16位定时器。其中定时器 0、1、2 和3具有脉宽调制(PWM)功能。定时器 4 是一个无输出引脚的内部定时器。定时器0还包含用于大电流驱动的死区发生器。定时器 0和 1共用一个8位预分频器,定时器2、3和 4 共用另外的8 位预分频器。每个定时器都有一个可以生成5 种不同分频信号(1/2,1/4,1/8,1/16 和TCLK)的时钟分频器。每个定时器模块从相应8 位预分频器得到时钟的时钟分频器中得到其自己的时钟信号。8 位预分频器是可编程的,并且按存储在 TCFG0 和 TCFG1寄存器中的加载值来分频PCLK。


S3c2440datesheet分布原理图如下:



由原理图可知, 知蜂鸣器接2440GPB0/TOUT0.即我们的蜂鸣器是通过GPB0 IO口使用PWM信号驱动工作的,而且GPB0口是一个复用的IO,要使用它得把他设置成TOUT0 PWM输出模式。s3c_gpio_setpull()函数和s3c_gpio_cfgpin()这两个控制GPIO口的函数在内核中,要进行修改。

[fanmaolin@Centeros linux-3.0]$ vim arch/arm/mach-s3c2440/mach-smdk2440.c
附上补丁:
--- mach-smdk2440.c     2017-04-22 06:01:27.706851435 +0800
+++ mach-smdk2440pwm.c  2017-04-22 05:59:53.525835733 +0800
@@ -31,6 +31,8 @@
 
 #include <linux/dm9000.h>  //添加DM9000网卡的头文件
 
+#include <linux/gpio.h> 
+
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
 #include <asm/mach/irq.h>
@@ -59,9 +61,32 @@
 #include <linux/i2c/at24.h>
 #include <linux/delay.h>
 
+#include <sound/s3c24xx_uda134x.h>
+#include <mach/gpio-nrs.h>
+
 #include <plat/common-smdk.h>
 
 /* add DM9000 ethernet drivers ,whitch is bodify by liuchengdeng */  
+
+static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = { 
+    .l3_clk = S3C2410_GPB(4),
+    .l3_data = S3C2410_GPB(3),
+    .l3_mode = S3C2410_GPB(2),
+    .model = UDA134X_UDA1341,
+}; 
+
+static struct platform_device s3c24xx_uda134x = { 
+    .name = "s3c24xx_uda134x",
+    .dev = { 
+        .platform_data = &s3c24xx_uda134x_data,
+    }
+};
+
+static struct platform_device uda1340_codec = {
+    .name = "uda134x-codec", 
+    .id = -1,
+};
+
 #define DM9000_BASE    (S3C2410_CS4 + 0x300)  
 static struct resource s3c_dm9000_resource[] = {  
      [0] = {  
@@ -97,6 +122,20 @@
     },  
 }; 
 
+/*beeper add by fanmaolin 2017.4.23*/
+static struct platform_device smdk2440_beeper_dev
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值