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控制技术在逆变电路中应用最广,应用 ...
随机推荐
- 去除inline-block元素间间距的N种方法-zhangxinxu
张鑫旭原文:点这里进入原文 另外附上大漠老师的如何解决inline-block元素的空白间距地址!!! 去除inline-block元素间间距的N种方法: 一.现象描述 真正意义上的inline-bl ...
- 转: Appium ---移动自动化测试
转自:http://www.cnblogs.com/nbkhic/p/3803830.html 什么是appium? 下面这段介绍来自于appium的官网. Appium is an open-sou ...
- cadence allegro pcb模块设计复用
cadence allegro pcb模块设计复用 转载▼ 标签: 复用 模块 原理图 元件 文件 杂谈 分类: PCB技术 在你遇到如上图所示的dsp阵列PCB时,如果你的layout软件支持模块复 ...
- ubuntu安装分区
♠ 文件系统 windows下常见的文件系统有FAT, FAT32, NTFS 在linux里可使用的文件系统: Ext2: 早期的格式,不支持日志. Ext3: 是ext2改良版,增加了日志功能, ...
- Sphinx(Coreseek)安装和使用指南
1.安装 1.1安装mmseg ./bootstrap # 必须执行,不然安装会失败 ./configure --prefix=/usr/local/mmseg- #指定安装目录 make make ...
- 利用socket.io实现消息实时推送
最近在写的项目中存在着社交模块,需要实现这样的一个功能:当发生了用户被点赞.评论.关注等操作时,需要由服务器向用户实时地推送一条消息.最终完成的项目地址为:socket-message-push,这里 ...
- js判断对象的属性是原型的还是实例的
一些情况下,我们需要知道对象的属性是原型的还是实例的,如果看代码的话比较繁琐,下面讲解下如何可以直接判断 1.hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的 ...
- java程序优化
程序代码优化要点: 字符串优化:分析String源码,了解String常用方法,使用StringBuffer.StringBuilder. List.Map.Set优化:分析常用ArrayList.L ...
- shell遍历文件目录,监听文件变化,拼接字符串
最近利用业余时间学习了shell 并做了个例子 实现的功能是 : 监听demo文件夹下的文件,只要新增了 .js的文件就把对应的文件名重组,拼接, 最后写入到demo.js里面. 文件结构如下 : ...
- Keepalived 集群在Linux下的搭建
[概述]:Keepalived 是一个免费开源的,用C编写.主要提供loadbalancing(负载均衡)和 high-availability(高可用)功能,负载均衡实现需要依赖Linux的虚拟服务 ...