前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个好的驱动是多么的重要

一个好的驱动是多么的重要

作者头像
用户1605515
发布2018-04-10 14:18:39
6560
发布2018-04-10 14:18:39
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿

最近遇到一个问题,我们假设一个嵌入式系统板件,使用10M晶振,并且倍频后运行于40M时钟。我们以Microchip的8位单片机PIC18f46k22为例子来说明。我们知道时钟是整个系统的基础,所有的外设配置都与时钟有关系,我们以PWM模块为例来介绍。

在PWM初始化中我们要来配置PWM的周期,用于PWM的定时器,占空比等。那么PWM的定时器是与系统时钟有关系的,如下图所示:

根据上面的公式我们可以计算PRx的值,进行PWM配置

在46k22的手册中有详细的模块介绍,我们知道用于PWM的定时器2/4/6是8位定时器,用于PWM的话有三种预分频1/4/16,所以PRx最大只能取0Xff. 预分频取16算出来的PWM周期最大,频率也就最小,带入公式可得

PWM最大周期为:

PWM周期=(255+1)*4*(1/40000000)*16 = 0.0004096s. 则频率为2.441kHz. 即在40M系统时钟下最小只能提供2.4k频率的PWM。如果这时候客户需要的是1k频率的PWM,那么怎么办呢,从公式入手,则可以调整系统时钟,首先可以关掉PLL,使用板载10M晶振,则带入公式可以计算出

PRx为156

PWM周期 = 【(PRx)+1】*4*TOSC*(TMRx预分频值)

1000 = 【(PRx)+1】*4*(1/10)*16

则PRx = ((1000*10)/4)/16 = 156 < 255, 满足要求,也可以考虑使用内部晶振,如果你的系统时钟模块设计不好的话,这时候改起来就比较麻烦,所以最初我们就要考虑时钟模块的可配置性,可以参考许多官方的SDK,尽量是你的驱动模块化,我们曾经介绍在公众号介绍过PWM的驱动设计,今天在来让你认识下时钟模块驱动可配置性的重要性,使你在驱动设计时候尽量的考虑全面周到。建议初学者一定要好好学习驱动的设计。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档