一.什么是pwm?
PWM一般指脉冲宽度调制。
PWM是Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方式。
其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此学习PWM具有十分重要的现实意义。
二.pwm驱动蜂鸣器的原理
蜂鸣器的发声原理由振动装置和谐振装置组成,而蜂鸣器又分为无源他激型与有源自激型,蜂鸣器的发声原理为:
1、无源他激型蜂鸣器的工作发声原理是:方波信号输入谐振装置转换为声音信号输出。
2、有源自激型蜂鸣器的工作发声原理是:直流电源输入经过振荡系统的放大取样电路在谐振装置作用下产生声音信号。
有源蜂鸣器和无源蜂鸣器的主要差别是:二者对输入信号的要求不一样,有源蜂鸣器工作的理想信号是直流电,一般标示为VDD、VDC等。因为蜂鸣器内部有一个简单的振荡电路,可以把恒定的直流电转变成一定频率的脉冲信号,从而产生磁场交变,带动钼片振动发出声音。
电路图原理:
1、该BUZZER是无源蜂鸣器,如果要想发出声音,需要正负极产生电流变化,我们通过生成方波,从而实现图中三极管1->2周期性导通和关闭来让BUZZER俩边电压产生变化,从而实现电流变化;
2、三极管的基极连接的是SOC的GPD0_0引脚;
3、产生方波我们借助的是PWM,标号为MOTOR_PWM。
pwm内部结构:
工作的步骤:
1、当时钟PCLK被使能后,定时器计数缓冲寄存器(TCNTBn)把计数器初始值下载到递减计数器中。
2、定时器比较缓冲寄存器(TCMPBn)把其初始值下载到比较寄存器中,并将该值与递减计数器的值进行比较。当递减计数器和比较寄存器值相同时,输出电平翻转。
3、递减计数器减至0后,输出电平再次翻转,完成一个输出周期。这种基于TCNTBn和TCMPBn的双缓冲特性使定时器在频率和占空比变化时能产生稳定的输出。
4、每个定时器都有一个专用的由定时器时钟驱动的16位递减计数器。当递减计数器的计数值达到0时,就会产生定时器中断请求来通知CPU定时器操作完成。当定时器递减计数器达到0的时候,如果设置了Auto-Reload 功能,相应的TCNTBn的值会自动重载到递减计数器中以继续下次操作。
5、然而,如果定时器停止了,比如在定时器运行时清除TCON中定时器使能位,TCNTBn的值不会被重载到递减计数器中。
6、TCMPBn 的值用于脉冲宽度调制。当定时器的递减计数器的值和比较寄存器的值相匹配的时候,定时器控制逻辑将改变输出电平。因此,比较寄存器决定了PWM 输出的开关时间。
三.pwm驱动蜂鸣器的具体实现步骤
1.plat_fom介绍:
从Linux2.6开始Linux加入了一套驱动管理和注册机制—platform总线驱动模型。platform总线是一条虚拟总线(只有一条),这类总线没有对应的硬件结构。platform_device为相应的设备,platform_driver为相应的驱动。与传统的bus/device/driver机制相比,platform由内核统一进行管理,提高了代码的可移植性和安全性。优点:
1.可以通过platform总线,可以遍历所有的platform总线设备;platform本质其实也是kset、 kobject,具有kobject的特性;
2.实现设备与驱动的分离,通过platform总线,设备与驱动是分开注册的,通过platform总线的 probe来随时检测与设备匹配的驱动,如匹配上即进行这个设备的驱动注册;
3.一个驱动可以供同类的几个设备使用;
2.设备树介绍:
设备树是一种描述硬件得数据结构,在操作系统引导阶段进行设备初始化得时候,数据结构中得硬件信息被检测并传递给操作系统。Liunx内核从3.x开始引入

本文深入解析了PWM脉宽调制的基本原理,探讨了如何利用PWM驱动无源蜂鸣器,详细介绍了Linux平台驱动架构下的蜂鸣器控制流程,包括设备树、platform总线驱动和字符设备驱动的实践步骤。通过实例代码演示了从编译到应用的全过程。

最低0.47元/天 解锁文章
807

被折叠的 条评论
为什么被折叠?



