TMS320VC5502开发的第一步设置PLL。

[复制链接]
3509|2
 楼主| dcx257 发表于 2007-4-18 15:35 | 显示全部楼层 |阅读模式
从论坛上得到过不少有价值的资料,今天将自己在学习DSP的过程中的一点小收获给大家分享一下。<br />1、在进行vc5502倍频操作时,遇到的第一个问题是,不知道如何访问PLL的控制寄存器。首先PLL的控制寄存器是被分配在I/O&nbsp;space,对I/O&nbsp;space的寄存器访问不像对cpu寄存器,可以直接进行声明和访问,对I/O&nbsp;space的寄存器需要用到关键词ioport来声明。格式举例如下:<br />#define&nbsp;PLLCSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((volatile&nbsp;ioport&nbsp;int&nbsp;&nbsp;*)0X1C80)<br />该语句是把0x1c80定义为一个I/O空间的指针量并用PLLCSR来替换。在对I/O空间的寄存器0x1c80进行访问时与对一个指针变量的操作相同。格式如下<br />&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;PLLCSR=....或….=&nbsp;*PLLCSR<br />2、在正确的访问寄存器的基础上,设置dsp的PLL要满足一定的规则(该部分内容可以参见vc5502的datasheet)&nbsp;:<br />The&nbsp;following&nbsp;procedure&nbsp;must&nbsp;be&nbsp;followed&nbsp;to&nbsp;change&nbsp;or&nbsp;to&nbsp;set&nbsp;the&nbsp;PLL&nbsp;to&nbsp;a&nbsp;specific&nbsp;value:<br />1.&nbsp;Switch&nbsp;to&nbsp;bypass&nbsp;mode&nbsp;by&nbsp;setting&nbsp;the&nbsp;PLLEN&nbsp;bit&nbsp;to&nbsp;0.<br />2.&nbsp;Set&nbsp;the&nbsp;PLL&nbsp;to&nbsp;its&nbsp;reset&nbsp;state&nbsp;by&nbsp;setting&nbsp;the&nbsp;PLLRST&nbsp;bit&nbsp;to&nbsp;1.<br />3.&nbsp;Change&nbsp;the&nbsp;PLL&nbsp;setting&nbsp;through&nbsp;the&nbsp;PLLM&nbsp;and&nbsp;PLLDIV0&nbsp;bits.<br />4.&nbsp;Wait&nbsp;for&nbsp;1&nbsp;μs.<br />5.&nbsp;Release&nbsp;the&nbsp;PLL&nbsp;from&nbsp;its&nbsp;reset&nbsp;state&nbsp;by&nbsp;setting&nbsp;PLLRST&nbsp;to&nbsp;0.<br />6.&nbsp;Wait&nbsp;for&nbsp;the&nbsp;PLL&nbsp;to&nbsp;relock&nbsp;by&nbsp;polling&nbsp;the&nbsp;LOCK&nbsp;bit&nbsp;or&nbsp;by&nbsp;setting&nbsp;up&nbsp;a&nbsp;LOCK&nbsp;interrupt.<br />7.&nbsp;Switch&nbsp;back&nbsp;to&nbsp;PLL&nbsp;mode&nbsp;by&nbsp;setting&nbsp;the&nbsp;PLLEN&nbsp;bit&nbsp;to&nbsp;1.<br />Note:The&nbsp;frequency&nbsp;of&nbsp;the&nbsp;C55x&nbsp;Subsystem&nbsp;Clock&nbsp;Group&nbsp;can&nbsp;be&nbsp;up&nbsp;to&nbsp;300&nbsp;MHz&nbsp;for&nbsp;the&nbsp;TMS320VC5502-300&nbsp;and&nbsp;up&nbsp;to&nbsp;200&nbsp;MHz&nbsp;for&nbsp;the&nbsp;TMS320VC5502-200.<br /><br />Program&nbsp;example<br /><br />void&nbsp;init_fuc()&nbsp;<br />{&nbsp;&nbsp;&nbsp;&nbsp;u16&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;*PLLCSR=0X0048;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PLLEN=0,PLLRST=1(PLL&nbsp;asserted)<br />&nbsp;&nbsp;&nbsp;&nbsp;*PLLM=0x0003;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//phrequency&nbsp;2&nbsp;TIMES<br />&nbsp;&nbsp;&nbsp;&nbsp;*PLLDIV0=0x8000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//enable&nbsp;PLLDIV0&nbsp;and&nbsp;divided&nbsp;by&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt500;i++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//waiting&gt&nbsp;1us<br />&nbsp;&nbsp;&nbsp;&nbsp;*PLLCSR=0X0040;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PLLRST=0(PLL&nbsp;released)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while((*PLLCSR&nbsp;&&nbsp;0x0020)==0);//polling&nbsp;the&nbsp;lock&nbsp;bit&nbsp;until&nbsp;it&nbsp;is&nbsp;changed&nbsp;to&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;*PLLCSR=0X0041;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PLLare&nbsp;not&nbsp;bypassed&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;&nbsp;<br />
刘迪铭 发表于 2007-4-20 08:49 | 显示全部楼层

谢谢

谢谢……
yinjun 发表于 2007-6-20 08:17 | 显示全部楼层

怎么不用CSL?

在csl中,一个PLL_config(....)就OK了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部