11724|19

1282

帖子

10

TA的资源

五彩晶圆(初级)

楼主
 

对LM3S8962 系统时钟控制比较详细的理解 [复制链接]

       做为一个LM3S8962初学者,需要学很多的东西,现在我就把我这几天的关于系统时钟的一些看法写了出来,下面就说说我对系统时钟设置的一些理解,难免有错误之处,欢迎大家拍砖!!

 

 

 系统时钟树:

 

群星(stellaris)微控制器包含主振荡器和内部振荡器两个时钟源。这两个时钟源虽然都可以驱动系统时钟,但是器件不能从内部振荡器启动,当启动后在对内部时钟进行分频来对外部器件进行计时。

 

由软件对PLL 进行设置决定是否使用PLL 当使用PLL时其总是输出200MHz的时钟信号并与系统分频器(sysdiv)共同产生系统时钟,由于Cortex-M3内核最高运行频率为50MHz,因此如果要使用PLL,则至少要进行4以上的分频(硬件会自动阻止错误的软件配置)。

 

由于启用PLL时会消耗较大的功率,因此在启用PLL之前,要求必须先将LDO电压设置在2.75V,否则可能造成芯片工作不稳定。

内部12MHz30KHz振荡器有±30%的误差,对时钟精度有要求严格的场合不适宜采用。采用内部30KHz和外部32.768KHz振荡器,能够明显节省功耗

 

 对于不同是 外设器件 选择不同 的时钟频率,通过对驱动库内的函数(void SysCtlClockSet(unsigned long ulConfig) )调用对系统时钟进行设置,调节出我们需要的时钟频率。

   ulConfig 参数是几个不同值的逻辑或,这些值中的某些值组合成组,其中只有一组值能 被选用。

   系统时钟分频器用下面的一个值来选择:SYSCTL_SYSDIV_1……64

PLL 的使用由 SYSCTL_USE_PLL SYSCTL_USE_OSC 来选择

SYSCTL_XTAL_1MHZ……,一般情况选用6M8Mhz

 

接下贴 

 

在此也非常抱歉,学的比较慢,与高手有很大的差距。在此献丑了!

                                                   

                                                      ——fxw451

 

 

 

 

最新回复

本帖最后由 会飞的狼 于 2015-1-26 19:07 编辑 Cortex-M3内核最高运行频率貌似为80M啊???我查了LM3S9B96的最高运行频率是80MHZ。  详情 回复 发表于 2015-1-26 13:54
 
点赞 关注(1)

回复
举报

1282

帖子

10

TA的资源

五彩晶圆(初级)

沙发
 

SYSCTL_OSC_MAIN (主时钟) SYSCTL_OSC_INT SYSCTL_OSC_INT4SYSCTL_OSC_INT30 SYSCTL_OSC_EXT32

内部振荡器和主振荡器分别用 SYSCTL_INT_OSC_DIS SYSCTL_MAIN_OSC_DIS 志来禁止。为了使用外部时钟源,外部振荡器必须被使能。

使用 SYSCTL_USE_OSC| SYSCTL_OSC_MAIN 来选择由外部源(例如一个外部晶体振 荡器)提供系统时钟。使用 SYSCTL_USE_OSC | SYSCTL_OSC_MAIN 来选择由主振荡器 使 PLL 使 SYSCTL_USE_PLL | SYSCTL_OSC_MAIN,并根据 SYSCTL_XTAL_xxx 值选择合适的晶体。

 

 

 

 
 

回复

1282

帖子

10

TA的资源

五彩晶圆(初级)

板凳
 

例如 对时钟控制的几种设置:

 

采用6MHz晶振作为系统时钟

SysCtlClockSet(SYSCTL_USE_OSC |

                   SYSCTL_OSC_MAIN |

                   SYSCTL_XTAL_6MHZ |

                   SYSCTL_SYSDIV_1);

  采用16MHz晶振4分频作为系统时钟

SysCtlClockSet(SYSCTL_USE_OSC |

                   SYSCTL_OSC_MAIN |

                   SYSCTL_XTAL_16MHZ |

                   SYSCTL_SYSDIV_4);

 采用内部12MHz振荡器作为系统时钟

SysCtlClockSet(SYSCTL_USE_OSC | SYSCTL_OSC_INT | SYSCTL_SYSDIV_1);

 采用内部12MHz振荡器4分频作为系统时钟

SysCtlClockSet(SYSCTL_USE_OSC | SYSCTL_OSC_INT4 | SYSCTL_SYSDIV_1);

 采用内部30KHz振荡器作为系统时钟

SysCtlClockSet(SYSCTL_USE_OSC | SYSCTL_OSC_INT30 | SYSCTL_SYSDIV_1);

 外接6MHz晶体,采用PLL作为系统时钟,分频结果为20MHz

SysCtlLDOSet(SYSCTL_LDO_2_75V);

SysCtlClockSet(SYSCTL_USE_PLL |

                   SYSCTL_OSC_MAIN |

                   SYSCTL_XTAL_6MHZ |

                   SYSCTL_SYSDIV_10);

 

以下是我写内容的pdf版和RCC的详解,有需要的朋友,请支持我的帖子,有错误的地方还请大家指出,批评指正!!

 

RCC全部.pdf (110.25 KB, 下载次数: 172)

Sysctl.pdf (101.67 KB, 下载次数: 192)

 
 
 

回复

1282

帖子

10

TA的资源

五彩晶圆(初级)

4
 
不是我愿意发这么多模块,是有限制,只能2k个字,弄的我分了三部分。大家可以下载pdf的,感觉好的就支持下,有问题的欢迎大家拍砖!
 
 
 

回复

2万

帖子

74

TA的资源

管理员

5
 

回复 4楼 fxw451 的帖子

好像是2万字的约束啊 太长就会视觉疲劳了

你的文章是不是直接从WORD复制过来的?WORD本身就带有很多格式代码,所以也许很短的一段文字,就会有超过2万的字符,下次可以在记事本去下格式,就可以了。

如有问题,欢迎随时联系。
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

545

帖子

0

TA的资源

一粒金砂(高级)

6
 
写的很好,支持一下
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 6楼 beyondvv 的帖子

写得不错!加油喽
 
个人签名机遇总是给有准备的人呢
 
 

回复

1282

帖子

10

TA的资源

五彩晶圆(初级)

8
 

回复 5楼 soso 的帖子

我是从word里直接复制过来的,下次注意,没有这方面的经验!!
 
 
 

回复

17

帖子

0

TA的资源

纯净的硅(初级)

9
 
支持,楼主加油
 
 
 

回复

978

帖子

0

TA的资源

一粒金砂(高级)

10
 

原帖由 fxw451 于 2010-11-14 20:29 发表         这两个时钟源虽然都可以驱动系统时钟,但是器件不能从内部振荡器启动,当启动后在对内部时钟进行分频来对外部器件进行计时。

你这里说的可能有问题,芯片上电后先依靠内部振荡器工作,如果软件设置了使用外部晶振才会切换到外部晶振上,所以是不是应该是器件不能从外部振荡器启动???还有,请问你这张截图是从哪里截来的,出处是在哪里???

 
 
 

回复

1万

帖子

16

TA的资源

版主

11
 

写的不错,顶一下

 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

1282

帖子

10

TA的资源

五彩晶圆(初级)

12
 

原帖由 drjloveyou 于 2010-11-15 17:01 发表 你这里说的可能有问题,芯片上电后先依靠内部振荡器工作,如果软件设置了使用外部晶振才会切换到外部晶振上,所以是不是应该是器件不能从外部振荡器启动???还有,请问你这张截图是从哪里截来的,出处是在哪里? ...

 

 

内部系统时钟可以由主振荡器或内部振荡器中的任一个来驱动。

时钟来源是主振荡器(MOSC)或内部振荡器(IOSC),最终产生的系统时钟(System Clock)用于Cortex-M3处理器内核以及大多数片内外设

 

这张图来自周立功翻译的文档。你可以上网上找找

 

 

 

3_系统控制(SysCtl).pdf (413.29 KB, 下载次数: 101)

这个是lm3s615的系统时钟设置,lm3s8962里叙述的不是很详细,我不知道这样理解对不?有什么问题欢迎讨论!!

 
 
 

回复

918

帖子

0

TA的资源

纯净的硅(中级)

13
 

回复 楼主 fxw451 的帖子

内部到底有几个振荡源,它们到底都是多大的值,误差到底是多大,刚启动的时候,刚启用的时候并没有使用外部的8M晶振,那么这个时候应该是通过内部振荡源来启动的,此时频率是多大呢?
 
 
 

回复

1282

帖子

10

TA的资源

五彩晶圆(初级)

14
 

原帖由 academic 于 2010-11-17 08:55 发表 内部到底有几个振荡源……?

器件有4个时钟源可供使用:

内部振荡器(IOSC):内部振荡器是片内时钟源。 它不需要使用任何外部元件。 内部振荡器的
频率是12 MHz ± 30%。 不依赖精确时钟源的应用可以使用这个时钟源来降低系统成本。 内部振
荡器是器件在POR过程中和POR之后使用的时钟源 如果需要主振荡器,软件必须在复位后使能
主振荡器,并在改变时钟基准前使主振荡器稳定下来。
■ 主振荡器:主振荡器用下面的其中一种方法来提供一个频率精确的时钟源:OSC0输入管脚连接
一个外部单端时钟源或在OSC0输入和OSC1输出管脚之间连接一个外部晶体。 允许的晶体值取决
于主振荡器是否用作PLL的时钟参考源。 如果主振荡器用作PLL的时钟参考源,那么支持的晶体
频率范围为3.579545 MHz~8.192 MHz (3.579545 MHz和8.192 MHz包含在内)。 如果没有使
用PLL,则支持的晶体频率在1 MHz和8.192 MHz之间。 单端时钟源的范围从DC到器件的指定速
率之间。 支持的晶体在RCC寄存器的XTAL位中列出(见71页)。
■ 内部30kHz的振荡器:内部30kHz振荡器与内部振荡器类似,它提供30 kHz ± 30%的工作频率。
它主要用在深度睡眠的节电模式中。 这个节电模式从减少的内部切换中获益,它还允许主振荡
器掉电。
■ 外部实时振荡器: 外部实时振荡器提供一个低频率、精确的时钟基准。 它的目的是给系统提供
一个实时时钟源。 实时振荡器是休眠模块的一部分(“休眠模块” 在 112页) ,它也提供了一个精
确的深度睡眠或休眠模式节电源。
内部系统时钟(sysclk)来自 4个时钟源以及内部PLL输出和4分频的内部振荡器 (3 MHz ± 30%)。
PLL时钟基准的频率必须在3.579545 MHz 到 8.192 MHz 的范围之内(3.579545MHz、8.192MHz
和 16.384MHz 包括在内)。
运行模式时钟配置(RCC)和运行模式时钟配置2(RCC2)寄存器提供了系统时钟的控制。 RCC2
寄存器用来扩充域,提供了RCC寄存器包含之外的 其它编码。 使用时,RCC2寄存器中域的值被
RCC寄存器相应域的逻辑使用。 特别地, RCC2提供了更多分类的时钟配置选项。

这里有详细的说明:

系统控制.pdf (139.37 KB, 下载次数: 84)

 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

15
 

呵呵,很难得,花这么多时间来写,很感谢你这种精神,学习了。

 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

16
 
顶起!!
 
 
 

回复

422

帖子

0

TA的资源

纯净的硅(高级)

17
 

回复 板凳 fxw451 的帖子

提个问:这是周立功的LM3S系列系统控制(SysCtl).pdf中的“在所有型号中,不论PLL输出是200MHz还是400MHz,只要分频数相同,则对PLL的分频结果都是一样的,统一按照200MHz进行计算。。例如,LM3S615芯片的PLL是200MHz输出,LM3S1138芯片的PLL是400MHz输出,但执行以下函数调用后,最终的系统时钟都是20MHz:
SysCtlClockSet(SYSCTL_USE_PLL|
SYSCTL_OSC_MAIN|
SYSCTL_XTAL_6MHZ |
SYSCTL_SYSDIV_10);”

怎么理解啊,200除以10等于20,400除以10也等于20吗?
 
 
 

回复

1282

帖子

10

TA的资源

五彩晶圆(初级)

18
 

回复 17楼 longxtianya 的帖子

非常感谢你提出这么精彩的问题。
回答如下:
    不同型号PLL输出为200MHz或400MHz,但分频时都按200MHz进行计算,这保持了软件上的兼容性。由于Cortex-M3内核最高工作频率为50MHz,因此启用PLL时必须进行4以上的分频(硬件会自动阻止错误的软件配置)。

其实这个你不能按照200MHz或400MHZ来理解分频,当然这是常规的理解,关键是LM3S比较特殊,也是为了编程方便。只要记住几分频就可以知道工作频率。

特殊情况特殊对待,虽然不符合我们的一般思路。
 
 
 

回复

33

帖子

0

TA的资源

一粒金砂(中级)

19
 
学习了   谢谢
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

20
 
本帖最后由 会飞的狼 于 2015-1-26 19:07 编辑

Cortex-M3内核最高运行频率貌似为80M啊???我查了LM3S9B96的最高运行频率是80MHZ。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表