dsp2812 pwm配置
肚子疼了好几天,今天稍微好点,简单写点东西。
好几个月前做的项目,有些地方已经记不清楚了,但是突然客户又来问关于代码配置的情况,重新查看了代码,把相关的知识也整理一下。
dsp2812中有好几个时钟相关的配置。首先是系统时钟SYSCLKOUT=15MHZ*PLL(PLL可以在代码中进行修改)。
我的代码中将PLL设置成7,所以SYSCLKOUT=105MHZ
还有两个时钟是外设时钟,分别是高速外设时钟和低速外设时钟,它们分别由HISPCP和LOSPCP这两个寄存器来控制。
高速外设时钟用于事件管理模块(EVA、EVB)和ADC。
低速外设时钟用于串口(SCIA、SCIB)、spi和McBSP。
当前代码是基于dsp2812官方库开发的,在函数InitPeripheralClocks中定义了下面的内容:
SysCtrlRegs.HISPCP.all = 0x0007; //高速外设
SysCtrlRegs.LOSPCP.all = 0x0002; //低速外设
根据HISPCP寄存器的说明,当HISPCP最低三位为0时,高速外设时钟频率=SYSCLKOUT。
当HISPCP最低三位为其他值时,高速外设时钟频率=SYSCLKOUT/(2*HISPCP[2:0])
所以当前配置下的高速外设时钟频率= 105MHZ/(2*7)=105/14 MHZ
LOSPCP寄存器定义和HISPCP寄存器定义很类似,详细可以查看:http://bbs.dzsc.com/space/viewspacepost.aspx?postid=28614
其实当前代码的配置很有意思的,高速外设配置的频率反而比低速外设的频率要小很多。
代码中有一部分功能是用于产生PWM信号(默认是200KHZ),其代码初始配置如下:
EvbRegs.EXTCONB.bit.INDCOE = ; //单独使能比较输出模式
EvbRegs.GPTCONB.all = 0x0024; //GP定时器4比较输出低有效
EvbRegs.T4PR = 0x0025; //定时周期为0.13us*(T1PR+1)
EvbRegs.T4CMPR = 0x0013;//GP定时器的比较寄存器,调整该值可调节占空比
EvbRegs.T4CNT = 0x0000; //定时器初值
EvbRegs.T4CON.all = 0x1042 //连续增计数,不分频,使能比较,打开定时器
关于pwm定时器的计算可以参考文章http://blog.sina.com.cn/s/blog_8680cd7d0100wmwa.html
由于T4CON=0x1042,所以其对应TCLKS(按最低位为1开始计算,TCLKS对应T4CON的4、5位)=0,故TCLK=HSPCLK
本代码PWM频率与EvbRegs.T4PR有关,由于使用了连续增计数,所以其频率=TCLK/(T4PR+1)=105MHZ/(14*(0x25+1))=105MHZ/(532)
=197KHZ,大致上等于200KHZ.
dsp2812 pwm配置的更多相关文章
- wiringPi库的pwm配置及使用说明
本文介绍树莓派(raspberry pi)在linux c 环境下的硬件pwm配置及使用方法. 1. 下载安装wiringPi 此步骤建议参考官网指南,wiringPi提供了对树莓派的硬件IO访问,包 ...
- STM32F0xx_TIM输出PWM配置详细过程
前言 前面我说过STM32的定时器功能很强大,今天就来总结一下它的另外一个“强大”功能:TIM的比较输出功能,输出可调PWM波形.直接调用函数接口“TIM2_CH1_PWM(uint32_t Freq ...
- STM32基础问题分析——PWM配置
STM32基础问题分析--PWM配置 在使用STM32F103产生固定频率.固定占空比的PWM波时,虽然有官方以及众多开发板提供的例程,但是关于有点问题并没有说的很清晰,并且<STM32F10X ...
- STM32基础分析——PWM配置
在使用STM32F103产生固定频率.固定占空比的PWM波时,虽然有官方以及众多开发板提供的例程,但是关于有点问题并没有说的很清晰,并且<STM32F10X参考手册>的中文翻译可能容易造成 ...
- 不同频率下的pwm配置
200k //PWM1 PWMPERDL1=0xb3; PWMPERDH1= 0x00; PWMCCNTL1=0x6B; PWMCCNTH1= ; PWMDBDY1=0x2B; //死区延时计时器 / ...
- [ZigBee] 13、ZigBee基础阶段性回顾与加深理解——用定时器1产生PWM来控制LED亮度(七色灯)
引言:PWM对于很多软件工程师可能又熟悉又陌生,以PWM调节LED亮度为例,其本质是在每个周期都偷工减料一些,整体表现出LED欠压亮度不同的效果.像大家看到的七色彩灯其原理也类似,只是用3路PWM分别 ...
- 嵌入式davinci电路元素基础和PWM模块
1,DAC_OUT和DAC_OUTB是AD9912输出的差分信号. 2,电容器储存电荷的能力,常用的单位是F.uF.nF.pFUF大了好还是UF小了好,要根据电路自身需要而设计, 要看电路滤波是在高频 ...
- Linux系统PWM驱动【转】
本文转载自:https://blog.csdn.net/BorntoX/article/details/51879786 硬件平台:IMX6 内核版本:kernel3.0.35 在linux内核中有一 ...
- STM32 PWM的输出与Keil软件仿真
导读:PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值). PWM控制技术在逆变电路中应用最广,应用 ...
随机推荐
- delphi的字节对齐
如果不改编译选项Delphi的Record默认也是4字节对齐的. 可以用编译开关指定 {$A4+}就是4字节对齐.同理{$A2+}.{$A1+}等.{$A1+}等同于Packed Record 主要容 ...
- svn解决冲突和commit
当使用svn出现 svn: E155015: 提交失败(细节如下):svn: E155015: 提交终止: “/home/test.file” 处于冲突状态 解决办法: svn resolved /h ...
- NYOJ 492 King (状态压缩)
做题感悟:做完这题发现状态压缩有很多须要优化的地方. 解题思路:状态压缩 開始自己用的一般的思路,就和炮兵阵地,郑厂长等题类似的方法做的,開始超时,然后把数组开到了最小的极限就险过.然后看了别人的代码 ...
- Oracle PL/SQL 高级编程
1. 复合数据类型--记录类型 Ø 语法格式 type 类型名 is record ( 字段1 字段1类型 [not null]:=表达式1; 字段2 字段2类型 [not n ...
- Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别
Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别 在工作中遇到一个问题,就是你需要去判断某个字符串是不是对象的某个成员属性名,然后根据判断结果 ...
- php 如何把中文写入json中 当json文件中还显示的是中文
/*** * 更新版本 */ function showupversionsub(){ #接受post 过来的数据 $app_type=$_POST['aap_type']; if($app_type ...
- com.netflix.hystrix.contrib.javanica.exception.FallbackDefinitionException: fallback method wasn't found: serviceError([class java.lang.String]) 异常
在使用spring cloud 的 Hystrix 后可能会遇到 如下截图错误: 后台代码如下: 找了好一会经过分析参数方法和原方法参数步一致造成: 修改后代码如下:
- [学英语]vocabulary.com你都可以怎么用
vocabulary.com你都可以怎么用? 核心就是背单词. 1.利用纯英文环境熟悉单词,看看他们是如何解释单词的. 2.对于大段的文章,可以提炼出你需要背的单词. 3.以游戏的方式来背单词,app ...
- x^a=b(mod c)求解x在[0,c-1]上解的个数模板+原根求法
/************************************* 求解x^a=b(mod c) x在[0,c-1]上解的个数模板 输入:1e9>=a,b>=1,1e9>= ...
- 让intellij挂在异常处,特别是出现null pointer的地方
1 在Intellij中设置java exception breakpoint 在调试模式下,run->view breakpoints 在java exception breakpoints- ...