- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
编写PWM驱动以及测试程序开发板的BEEP灯电路在Exynos4412中,一共有5个32位定时器,这些定时器课发送中断信号给ARM处理器,另外,定时器0、1、2、3包含了脉冲宽度调制(PWM),并可驱动其对应的I/O引脚。每个定时器都有一个独立的32位递减计数器,定时器启动后,计数缓冲寄存器(TCNTBn)将初始值加载到递减计数器,定时器时钟驱动递减计数器,当递减计数器达到零,自动产生计时器中断请求,同时相应TCNTBn的值自动重新加载,开始下一个循环。但是,如果定时器停止,如清除TCONn的定时器使能位,TCNTBn的值将不会重新加载到计数器中。每个定时器都有一个独立的32位比较缓冲寄存器(TCMPBn)。当递减计数器与定时器控制逻辑中比较寄存器的值相匹配时,PWM输出会产生由低到高的电平跳变,因此,比较寄存器决定PWM输出的开启时间或关闭时间。1、初始化定时器n对应的计数缓冲寄存器TCNTBn为159,定时器n对应的计数比较缓冲寄存器TCMPBn为109。2、启动定时器n:设置定时器n的启动位为1,并手动更新为为零。此时寄存器TCNTBn的值159自动加载到内部的递减寄存器中,并开始递减计数,同时输出引脚TOUTn输出低电平。3、当递减寄存器的值递减到109(TCMPBn的数值)时,定时器n对应的电平输出引脚TOUTn从低电平翻转到高电平。4、当递减寄存器的值递减到0时,计数缓冲寄存器TCNTBn的值159重新被加载到定时器的递减器,定时器n对应的电平输出引脚TOUTn重新输出低电平,这样流程重复进行,引脚TOUTn就输出占空比可控的PWM波。值得注意的是,修改计数缓冲寄存器TCNTBn或比较缓冲寄存器TCMPBn的值,只能在下一个PWM周期起作用,不影响当前周期PWM的占空比。PWM驱动源程序文件(pwm_dev.c)设计,关键步骤为:pwm_dev_open:主要实现对PWM的寄存器进行初始化工作,pwm_dev_release:主要实现停止PWM波形的输出,pwm_dev_ioctl:分别设置了四个命令实现PWM的启动,停止,设置分频系数以及设置频率。在驱动加载时,即pwm_dev_init函数中,将实例化的文件操作结构体pwm_ops与设备号关联并注册到内核中,同时生成对应的设备文件。#includelinux/module.h#includelinux/kernel.h#includelinux/init.h#includelinux/platform_device.h#includelinux/fb.h#includelinux/err.h#includelinux/slab.h#includelinux/delay.h#includelinux/gpio.h#includemach/gpio.h#includeplat/gpio-cfg.h?MODULE_LICENSE(GPLv2);?#defineDEVICE_NAME pwm//定义设备的名字为pwm#defineDEVICE_NUM 1staticintmajor=0;//主设备号,次设备号staticintminor=0;?structcdevpwm_dev_cdev;staticstructclass*pwm_class;pwm_dev.c?#defineNS_IN_1HZ 0x6400//100MHz/256/16?#defineBUZZER_PMW_GPIO EXYNOS4_GPD0(0)//蜂鸣器GPIO配置?#defineTIMER_BASE 0X139D0000void__iomem *timer_base;#defineTCFG0 (void__iomem *)(timer_base+0X00)#defineTCFG1 (void__iomem *)(timer_base+0X04)#defineTCON (void__iomem *)(timer_base+0X08)#defineTCNTB1 (void__iomem *)(timer_base+0X0C)#defineTCMPB1 (void__iomem *)(timer_base+0X10)?#definePWM_ON _IO(K,0)#definePWM_OFF _IO(K,1)#definePWM_SET_PRE _IOW(K,2,int)#definePWM_SET_FREQ _IOW(K,3,int)/
您可能关注的文档
- C语言程序设计活页式教程 课件 C语言-01创建C语言程序.pptx
- C语言程序设计活页式教程 课件 C语言-02存储不同类型的数据.pptx
- C语言程序设计活页式教程 课件 C语言-03控制程序流程.pptx
- C语言程序设计活页式教程 课件 C语言-04处理批量数据.pptx
- C语言程序设计活页式教程 课件 C语言-05 面向过程编程.pptx
- C语言程序设计活页式教程 课件 C语言-06使用指针处理数据.pptx
- 嵌入式系统设计与开发教程 教学大纲-嵌入式系统设计.docx
- 嵌入式系统设计与开发教程 嵌入式教学进度表.doc
- 嵌入式系统设计与开发教程 课件 第1章 嵌入式系统技术概述及项目分析.ppt
- 嵌入式系统设计与开发教程 课件 ubuntu操作系统介绍.pptx
最近下载
- 生物单元教学设计——被子植物的一生.docx VIP
- 新质生产力基本内涵、评价指标体系构建与发展路径.pdf VIP
- 一次函数(分段函数)PPT教学课件.ppt
- 新质生产力的评价体系、水平测度与实践路径——来自长三角主要城市发展数据分析.pdf
- 《三峡》三年中考真题(解析版)-2022年中考语文课内文言文知识点梳理+三年真题训练(部编版).pdf VIP
- 2021-2022学年北京市海淀区部编版五年级下册期末考试语文试卷(解析版).docx
- 演播室装修设计方案.pptx
- 相交线、平行线与平移 单元作业设计.pdf
- 校园超市商品品种和商品价格表.docx
- 新课标高中英语词汇3500词word版带音标+英语词组与习惯用语大全.doc
文档评论(0)