肚子疼了好几天,今天稍微好点,简单写点东西。

好几个月前做的项目,有些地方已经记不清楚了,但是突然客户又来问关于代码配置的情况,重新查看了代码,把相关的知识也整理一下。

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.

最新文章

  1. 改变bootstrap-wysiwyg样式(如hide()show()等),上传图片失效
  2. 使用AOP+Annotation实现操作日志记录
  3. SDK
  4. C++ 代码头注释模板
  5. 到程序集里取DLL
  6. Linux进程启动过程简析
  7. Java-认识字符集-转载
  8. Android 的上下文菜单: Context Menu,registerForContextMenu(getListView())
  9. Models
  10. Java比较两个日期的大小
  11. 验证合法的url
  12. SQLServer在多个表中都增加一个字段的方法
  13. java aes encrypt
  14. appium常用方法
  15. mysql查询字段时实现左右补零
  16. Graph (floyd)
  17. Shift Register(Using Submodule)
  18. C++基础题
  19. ANSI编码——代码页
  20. js函数调用与声明 (for时注意)

热门文章

  1. 阿里巴巴 DevOps 转型后的运维平台建设
  2. 类中的internal成员可能是一种坏味道
  3. Linux 下安装PHPunit
  4. iOS scrollView中嵌套多个tableView处理方案
  5. [译]GLUT教程 - 整合代码1
  6. [译]GLUT教程 - 键盘高级特性
  7. PHP插入法排序
  8. ios 10 sticker pack application
  9. jquery 通过属性选择器获取input不为disabled的对象
  10. 软件测试人员需要精通的开发语言(1)--- VBScript