mini2440驱动分析之PWM

发布者:EternalSunset最新更新时间:2022-10-12 来源: csdn关键字:mini2440  驱动分析  PWM 手机看文章 扫描二维码
随时随地手机看文章

1. pwm驱动也是作为杂项设备注册的,同样为了防止并发造成的竞态,有个信号量保护。模块的初始化函数

static int __init dev_init(void)

{

int ret;


init_MUTEX(&lock);

ret = misc_register(&misc);


printk (DEVICE_NAME"tinitializedn");

    return ret;

}

这个函数就是初始化了一个信号量,然后调用misc_register注册到杂项设备


2. 这个pwm驱动的基本功能体现在ioctl方法上

static int s3c24xx_pwm_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)

{

//printk("ioctl pwm: %x %lxn", cmd, arg);

switch (cmd) {

case PWM_IOCTL_SET_FREQ:

if (arg == 0)

return -EINVAL;

PWM_Set_Freq(arg);

break;



case PWM_IOCTL_STOP:

PWM_Stop();

break;

}

return 0;

}


可以看出,只提供两个选项,一个是设置频率(调用PWM_Set_Freq函数),一个是停止。其他的功能都没有,这充分体现驱动程序中 “提供机制而不是提供策略”的思想,驱动程序中只提供基本的功能实现,其他复杂的功能由应用程序提供。


3. PWM_Set_Freq(arg)函数分析

static void PWM_Set_Freq( unsigned long freq )

{

unsigned long tcon;

unsigned long tcnt;

unsigned long tcfg1;

unsigned long tcfg0;



struct clk *clk_p;

unsigned long pclk;



//set GPB0 as tout0, pwm output

s3c2410_gpio_cfgpin(S3C2410_GPB(0), S3C2410_GPB0_TOUT0);



tcon = __raw_readl(S3C2410_TCON);

tcfg1 = __raw_readl(S3C2410_TCFG1);

tcfg0 = __raw_readl(S3C2410_TCFG0);



//prescaler = 50

tcfg0 &= ~S3C2410_TCFG_PRESCALER0_MASK;

tcfg0 |= (50 - 1); 



//mux = 1/16

tcfg1 &= ~S3C2410_TCFG1_MUX0_MASK;

tcfg1 |= S3C2410_TCFG1_MUX0_DIV16;



__raw_writel(tcfg1, S3C2410_TCFG1);

__raw_writel(tcfg0, S3C2410_TCFG0);



clk_p = clk_get(NULL, "pclk");

pclk  = clk_get_rate(clk_p);

tcnt  = (pclk/50/16)/freq;

__raw_writel(tcnt, S3C2410_TCNTB(0));

__raw_writel(tcnt/2, S3C2410_TCMPB(0));

tcon &= ~0x1f;

tcon |= 0xb; //disable deadzone, auto-reload, inv-off, update TCNTB0&TCMPB0, start timer 0

__raw_writel(tcon, S3C2410_TCON);

tcon &= ~2; //clear manual update bit

__raw_writel(tcon, S3C2410_TCON);

}


主要是对操作pwm的寄存器进行设置,跟裸机的设置一样,但是可以看出,驱动程序中设置寄存器都是采用读修改写的方式进行的。 像S3C2410_TCON S3C2410_TCFG1_MUX0_MASK 都是在regs-timer.h中定义的,直接使用就可以了。

关键字:mini2440  驱动分析  PWM 引用地址:mini2440驱动分析之PWM

上一篇:mini2440驱动分析之ADC
下一篇:mini2440驱动分析之LED

推荐阅读最新更新时间:2024-11-19 19:59

单相PWM整流器的高品质输入电流实现
给出了一种基于Matlab/Simulink来建立双闭环单相PWM整流器仿真模型的实现方法,提出了一种可以有效改善PWM整流器输入电流波形的设计方法。仿真结果表明, 该方法对输入电流中的三次谐波分量能够起到明显的抑制作用, 可以得到高质量的输入电流波形。    0 引言   单相PWM整流器相对于三相PWM整流器来说, 所需要的功率开关器件少, 造价低廉, 适合在中小功率场合使用。为此, 本文从单相PWM整流电路出发, 通过控制方法的改进及控制算法的优化, 同时利用电压外环PI控制器的自动调节能力, 提出了一种简单有效的改善输入电流波形,以滤除三次谐波的设计方法, 同时给出了基于Matlab/Simulink建立的仿真模型。仿真
[电源管理]
单相<font color='red'>PWM</font>整流器的高品质输入电流实现
Supertex发布了宽泛输入电压范围的PWM风扇速度控制器IC
Supertex公司发布了其新款集成驱动器和脉宽调制(PWM)风扇速度控制器。这种HV7100型控制器IC的输入电压范围达到16V到90V,从而特别适用于效率更高的服务器和电信领域的24V和48V系统。 这种IC具有一个4位PWM控制输入,与微控制器直接接口来控制风扇速度。通过将热敏电路连接至线性控制引脚,该产品即可用作独立的风扇控制器。HV7100器件还具有高压端驱动器,因而可用于具有接地标准测速信号的风扇。利用一个简单的LC滤波器可将PWM输出转换为DC电压,从而用于需要DC驱动的风扇产品。
[新品]
飞思卡尔单片机DZ60---边沿对齐PWM
#include hidef.h /* for EnableInterrupts macro */ #include derivative.h /* include peripheral declarations */ /*************************************************************/ /* 初始化总线时钟PEE模式 */ /* 外部晶振频率为4MHz,总线频率16MHz */ /*************************************************************/ void
[单片机]
PIC单片机之PWM原理分析
  1、什么是PWM   什么是PWM,专业点说脉宽调制,通俗点说 就是不断的输出高低电平。 比如 单片机 40ms的时间 输出高电平然后60ms的时间 输出低电平接着一直不断周期性的交替输出高低电平 这就是典型的PWM波。高电平输出的时间40ms就是传说中的脉宽,40ms+60ms=100ms 便是PWM的周期。假定我们把周期定为100ms.我们可以根据我们的需要 把高电平的时间加大或者减小,比如 高电平输出时间加大为80ms.那么低电平的时间就变为20ms. 也可以 高电平输出时间减小为20ms.那么低电平的时间就变为80ms.这即是脉宽调制 调的便是这高电平的时间。 而高电平(脉宽)在周期中,所占用的时间比例 就被称为占空比
[单片机]
PIC单片机之<font color='red'>PWM</font>原理<font color='red'>分析</font>
51定时器配置PWM的技巧
定时器计数频率 * 周期时长(需要产生频率的分之一) = 计数值,看下面这段关键程序! void ConfigPWM(u16 fr, u8 dc)//具体用的时候最好再估算一下是否真的可以产生! { u32 tmp, high, low; tmp = 11059200/12/fr; high = (tmp * dc)/100; low = tmp - high; high = 65536 - high; low = 65536 - low; HighRH = (u8)(high 8); HighRL = (u8)high; LowRH = (u8)(low 8); LowRL = (
[单片机]
降压型PWM控制器APl510原理及应用
 引言   随着信息技术与集成电路的高速发展,电子产品逐渐向智能化、小型化、低功耗方面发展,同时电源必须做到小体积、高效率、低功耗,以适应电子产品的高速发展。因此,高度集成的PWM控制器在电子产品中得到了广泛应用。   易亨(AnachiD)电子公司推出的降压型PWM控制器APl510可以广泛应用于电子产品的电源中。由于APl510芯片内包含基准电压源、振荡电路、误差放大器、内部PMOS开关管等电路,所以只须外加电感、电容、二极管等少量元器件,便可组成小体积、高效率的降压型开关稳压电源。   l APl5lO的工作原理   APl510的原理框图如图l所示。      1.1 引脚功能及描述   脚1 (FB
[工业控制]
降压型<font color='red'>PWM</font>控制器APl510原理及应用
STM8与汇编语言(16)--PWM
在单片机应用系统中,也常常会用到PWM信号输出,例如电机转速的控制。现在很多高档的单片机也都集成了PWM功能模块,方便用户的应用。 对于PWM信号,主要涉及到两个概念,一个就是PWM信号的周期或频率,另一个就是PWM信号的占空比。例如一个频率为1KHZ,占空比为30%,有效信号为1的PWM信号,在用示波器测量时,就是高电平的时间为300uS,低电平的时间为700uS的周期波形。 在单片机中实现PWM信号的功能模块,实际上就是带比较器的计数器模块。首先该计数器循环计数,例如从0到N,那么这个N就决定了PWM的周期,PWM周期=(N+1)*计数器时钟的周期。在计数器模块中一定还有一个比较器,比较器有2个输入,一个就是计数器的当
[单片机]
Linear推出具12 位分辨率的48 通道PWM发生器
动态控制 LED 或提供 48 个 DAC 输出 加利福尼亚州米尔皮塔斯 (MILPITAS, CA) – 2011 年 8 月 2 日 – 凌力尔特公司 (Linear Technology Corporation) 推出具 48 个独立通道的脉冲宽度调制 (PWM) 发生器 LT8500。每个通道都有一个单独的可调 12 位 (4096 个步进) PWM 寄存器和一个 6 位 (64 个步进) ±50% 的校正寄存器。所有控制都可以通过一个简单的 TTL / CMOS 50MHz 串行数据接口编程。LT8500 可用在诸如 LED 控制以及工业和机器人应用等多种 PWM 密集型应用。例如,LT8500 可与 3 个 LT35
[电源管理]
Linear推出具12 位分辨率的48 通道<font color='red'>PWM</font>发生器
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved