找回密码
 注册
关于网站域名变更的通知
查看: 557|回复: 3
打印 上一主题 下一主题

DSP28335时钟配置

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-11-11 14:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 grand 于 2021-11-11 14:14 编辑 ) A, P7 j  q7 `

4 p2 C( b8 y$ [* ~  W+ u
1 a4 v5 F# T) H. t
一、控制外设时钟的寄存器有以下几个:
5 }. I/ Q" S7 c# ~* i) O" J6 NPCLKCR0(外设时钟寄存器0):作用于上图标黄外设,所有时钟默认不开启
1 V/ E( ?1 w; \! P5 [: i" S注:这里需要注意TBCLKSYNC这个寄存器,他是让ePWM模块时钟同步,且当检测到TBCLK的上升沿时,同步开启。另一个需要注意的是,及时这个寄存器没有使能ePWM,如果PCLKCR1使能了一样有效。! O# `5 @6 |- a) e
对于使能ePWM推荐做法:
# j( H! S6 k, N8 V2 y• Enable ePWM module clocks in the PCLKCR1 register.- q+ E- t/ j1 V% s5 k1 b
• Set TBCLKSYNC to 0.
, S7 C1 }+ G. @: }8 z" S1 U/ B6 B• Configure prescaler values and ePWM modes.* H% Z1 W/ H/ `5 i% P8 l' P# J
• Set TBCLKSYNC to 1.  a' u0 I, V- G7 t: U7 t' E/ {5 l7 L) V
PCLKCR1(外设时钟寄存器1):作用于上图倒数第三个框的外设,所有时钟默认不开启
1 E9 x% E1 N& U, PPCLKCR3(外设时钟寄存器1):作用于GPIO,三个CPU定时器,DMA和XINTF。且三个CPU定时器和GPIO的时钟是默认使能的
7 G7 d( T% V6 V% c* ^! LHISPCP:对其作用的外设输入时钟进行分频
: C0 u- R0 ?- m* K) N" }2 j( PLOSPCP: 对其作用的外设输入时钟进行分频
* n; h1 `4 {8 u; n6 F二、CPU时钟
5 `9 Y* h5 m4 x

: R  E& U% C" ~4 v' O& Z
CPU时钟来源可以是内部的晶体振荡器也可以是外部的晶体振荡器或是外部直接输入时钟。
8 {- L# b3 X8 ]. n3 o如果选择外部晶体作为输入,则内部晶体可以断开。将晶体连接到芯片的X1和X2管脚上,并且XCLKIN接地。
9 T9 Q+ {+ y9 ^直接输入时钟信号,将时钟信号接到XCLKIN管脚上(允许3.3V时钟信号),X1接地,X2浮空;将时钟信号接到X1管脚上(允许1.8V时钟信号),XCLKIN接地,X2浮空。: i7 ]$ U2 D: C0 @! m2 u2 t
CPU时钟无法启振检测
2 L( }" {$ b; S+ G0 d0 m) L

7 k) M/ c: {, @0 L这里有两个计数器,一个7位,另一个13位。如果7位计数器溢出就会将13位计数器进行清零,所以在正常情况下13位的计数器不会溢出。如果OSCCLK信号突然没有了,那7位的计数器将不再计数,也就是7位计数器值不再增加无法溢出,但是PLL会输出一个“limp mode”频率,因此13位的计数器值会继续增加直至溢出。
**PLL设置**
: c7 K) |% y. p  D, y3 a1
, m- [. @$ z- I8 }; C4 ~. r' @) k, NPLLCR:设置PLL的倍频数,最大可倍频5倍! R5 l) P1 d5 ~. H+ h  `
PLLSTSLL状态寄存器% D: I& Y& L. T2 ~4 C) q2 y5 H. s
注:1、只有在PLLSTS[DIVSEL]为0时在可以对PLLCR进行写操作;
- h6 C* }1 j1 k- P+ \: e; d3 e, e1 `2、只有PLLSTS[PLLLOCKS]为1(就是PLL输出时钟稳定时)时才可以对PLLSTS[DIVSEL]进行操作
5 v1 W" `1 x/ g6 ^/ Z3、设备只有在PLLSTS[MCLKSTS]为0时才可以正常工作
& C) m! j; g/ P( U) f4、当/XRS或看门狗进行复位时,PLLCR和PLLSTS及寄存器所有其将会被恢复为默认值' Z, V! j; ]6 G3 P/ @: i
PLLCR操作流程图: Y2 R1 z% V' O& W$ i8 r3 s

; w* K4 W* U2 i例程:
/*
% m9 v# ]4 H3 }, Q * 输入晶振频率为30MHZ; i  @8 g/ o8 |8 ]
* 经PLL之后输出SYSClock=90MHZ
( L- j" H- b3 ? */
: \8 \% _7 G3 @void InitClock(void)# I8 ^, Y! t1 t4 I  H
{5 B  E" f, z8 Y2 }" A% s
    while(SysCtrlRegs.PLLSTS.bit.MCLKSTS == 0);
- B0 [; D% g7 k- ^- F- q    if(SysCtrlRegs.PLLSTS.bit.DIVSEL != 0)
" c% g+ U/ J, ]2 a3 ?) q0 h5 l. ~- o! l6 g    {2 E0 @1 X* i6 j
        SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;4 Z, i5 @; I2 o- |  \
    }
, ]4 x( z( ~% M5 r    SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1; //关闭晶振丢失逻辑
) `5 q( Q- R/ d7 e5 M7 K7 x    SysCtrlRegs.PLLCR.bit.DIV = 6; //0110; F3 n' Y( k, p+ H, N) [0 |
    while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS == 1); //检查时钟是否已经稳定震荡
$ u7 P# ?/ c7 `' T3 r" Y: `    SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0;+ I5 P/ J+ ^* m% {# V6 N
    SysCtrlRegs.PLLSTS.bit.DIVSEL = 2; //10b2 A5 D  e8 R: c- I4 w* i
}
! a/ o9 T' R5 w* o- Z' _2 b
4 p" n# q( P- `* Z6 R/ `- I

该用户从未签到

2#
发表于 2021-11-11 14:13 | 只看该作者
使能ePWM           Enable ePWM module clocks in the PCLKCR1 register.)

该用户从未签到

3#
发表于 2021-11-11 14:14 | 只看该作者
CPU时钟来源可以是内部的晶体振荡器也可以是外部的晶体振荡器或是外部直接输入时钟

该用户从未签到

4#
发表于 2021-11-11 14:15 | 只看该作者
TBCLKSYNC寄存器让ePWM模块时钟同步
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-12 17:28 , Processed in 0.171875 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表