LPC1788单沿pwm原理和配置

发布者:blq0681最新更新时间:2017-12-01 来源: eefocus关键字:LPC1788  单沿pwm 手机看文章 扫描二维码
随时随地手机看文章

        pwm的基本功能:以一定的周期频率,输出不同占空比可调的方波。

        Lpc1788中的pwm的时钟(频率)来源于APB总线的时钟(频率),首先要进行分频,或者说预分频,不然直接由APB频率也太大了,肯定是需要通过分频才能达到我们需求的pwm周期频率。
        寄存器PWMPR 和PWMPC两个寄存器提供了APB频率分频到PWM中的频率,手册上讲的预分频,也是有道理的,因为到了pwm之后还要进行一次分频,第二次分频才是真正pwm的周期频率。我们把第一次分频得到频率暂且命名为prepwmclk。
        第二次分频是通过PWMMR0进行的,通过对prepwmclk的分频,这样得到了我们要的pwm的周期。
        还要去配置占空比,这个又是怎么做到的?
        Lpc1788出现了PWMMR1- PWMMR6,依照第二次分频的原理。
       比如PWMMR0配置为100,得到周期,那PWMMR1设置为50,得到1/2的占空比。当然

       PWMMR1- PWMMR6对应的是6个不同的输出管脚,以此类推。


给个简单的例子:

PINSEL_ConfigPin (1, 18, 2);     //p1[18] as pwm1_1

    rPCONP |= 0x1<<6;     //使能PWM1外设  

    rPWM1IR = 0x73F;    //初始化PWM相关控制寄存器 

    rPWM1TCR = 0; 

    rPWM1CTCR = 0; 

    rPWM1MCR = 0; 

    rPWM1CCR = 0; 

    rPWM1PCR = 0; 

    rPWM1LER = 0; 

     

   // CLKPWR_GetCLK(CLKPWR_CLKTYPE_PER) / ((uint32_t)38000);

   /*实际频率计算方法:

       rPWM1PR = CLKPWR_GetCLK(CLKPWR_CLKTYPE_PER) / ((uint32_t)38*1000*rPWM1MR0)

    */

rPWM1PR = CLKPWR_GetCLK(CLKPWR_CLKTYPE_PER) / ((uint32_t)3800000); 

  //每CLKPWR_GetCLK(CLKPWR_CLKTYPE_PER) / ((uint32_t)38000);个PLCK上升沿,TC递增

 

rPWM1MR0 = 100;    //频率即100个rPWM1PR配置得到的频率为一周期所以如果需要38Khz的频率

rPWM1PR = CLKPWR_GetCLK(CLKPWR_CLKTYPE_PER) / ((uint32_t)38*1000*rPWM1MR0)

    rPWM1LER |= 0x1; 

   

    rPWM1MR1 = 50;    //占空比即50个rPWM1PR配置得到的频率为一周期中的高电平

    rPWM1LER |= 0x1<<1; 

 

    rPWM1MCR = 0;  

  

     

    rPWM1TCR |= 0x1<<1;   //复位TC和PC  

    rPWM1TCR &= ~(0x1<<1); 

     

    rPWM1TCR |= 0x1;    //PC和TC计数使能

    rPWM1PCR |= 0x1<<9; //PWM1-1使能输出

    rPWM1TCR |= 0x1<<3; //PWM模式使能


关键字:LPC1788  单沿pwm 引用地址:LPC1788单沿pwm原理和配置

上一篇:Fedora8上交叉编译qtopia4移植成功到s3c2410开发板
下一篇:关于lpc1112深睡眠(低功耗)的调试报告

推荐阅读最新更新时间:2024-03-16 15:47

Cortex-M3 (NXP LPC1788)之开发环境搭建
一,开发环境介绍 最近有幸从NXP的代理商获得一块开发板OM13001,该开发板使用NXP LPC1788的处理器,主要特性如下: Data Memory: 32 MB SDRAM + 96 KB internal Ethernet: 100/10M Ethernet interface based on SMSC LAN8720 Ethernet PHY Clock Crystals: 12.000 MHz crystal for CPU , 32.768 kHz crystal for RTC Connectors: 200 pos expansion connector (SODIMM standard),
[单片机]
Cortex-M3 (NXP <font color='red'>LPC1788</font>)之开发环境搭建
LPC1788 IAP的实现及遇见的问题
参考网上的资料先学习了IAP实现的基本原理,结合自己板子的实际硬件资源,把芯片自带的512K内部Flash分为两部分,一部分为BootLoader实现IAP和应用程序的加载(跳转),另一部分是应用程序,升级的固件文件存放在外置的NandFlash系统中。为了把BootLoader做的更通用和漂亮一些,启用了RTX操作系统和Emwin,代码量大概在130K左右,因此,BootLoader放在了0~0x30000,应用放在了0x30000~0x80000。 芯片启动时首先运行BootLoader,BootLoader启动NandFlash文件系统,检查是否需要更新固件,NandFlash中放置了一个needup.bin文件,
[单片机]
<font color='red'>LPC1788</font> IAP的实现及遇见的问题
LPC1788在外部RAM调试总结
调试工具:MDK 4.72  JLink8 一、MDK设置 1、Target                   图1 2.Asm                  图2   1处必须预定义NO_CRP,因为在LPC1788启动文件startup_LPC177x_8x.s中有如下代码                  图3   117-120这段代码是NXP公司的LPC1700系列的MCU特有的一段代码,其他公司的Cortex-M3 MCU的启动程序是没有这段代码的。这段代码是指定LPC1700的CRP加密级别的代码段,芯片上电后会自动读取0x02FC这一地址的值以确定加密方式,其中
[单片机]
<font color='red'>LPC1788</font>在外部RAM调试总结
LPC1788升级程序调试备忘
1、程序运行地址跳转 __asm void JMP_Boot( uint32_t address ) { LDR SP, ;Load new stack pointer address LDR PC, ;Load new program counter address } 2、中断向量表重新映射目标地址 DestAddr #define DestAddr 0x00000000 SCB- VTOR = DestAddr & 0x1FFFFF80; 3、flash地址跳转校验 uint8_t app_checksum_is_correct(void) { int i; uint32_t c
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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