TM4C123GXL_时钟配置

under 单片机  tag     Published on February 5th , 2020 at 01:00 am

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TM4C123GXL_时钟配置</title>

    <link rel="stylesheet" href="https://stackedit.io/style.css">

<div class="stackedit__html">
<h1>TM4C的时钟源有四个</h1>

Clock 介绍
Precision Internal Oscillator (PIOSC) 这是TM4C内部的一个内部振荡器,其频率为16MHz,精度为1%,可以用来驱动PLL。PIOSC可配置为ADC时钟源以及UART和SSI的波特率时钟
Main Oscillator (MOSC) 这是TM4C的主振荡器,需要把外部的晶振接到OSC引脚上。晶振频率需要为4MHz和25MHz之间的任意的频率。MOSC也可以用来驱动PLL,但此时的频率需要在5MHz-25MHz之间的支持的频率。同时MOSC也是USB PLL的时钟来源。
Low-Frequency Internal Oscillator (LFIOSC) 这是TM4C内部的低频振荡器,低频内部振荡器适用于深度睡眠省电模式,它的频率是会改变的,范围在10KHz-90KHz之间,标准值30KHz。
Hibernation Module Clock Source 这是休眠模块时钟源,由连接到XOSC引脚的32.768KHz的晶振提供,休眠模块时钟源旨在为系统提供实时时钟源。

下面来看一下TM4C的时钟树

从时钟树上可以得到我们上面介绍的时候的一些信息,它的时钟源有四个,MOSC和PIOSC可以用来驱动PLL,PLL的输出为400MHz,然后可以进行分频作为系统时钟,每个时钟源都可以作为哪部分的时钟,以及如何分频,相关的寄存器都在时钟树上有标注,可以根据需要查询。

​ 下面讲一讲固件库对时钟的配置,先看一个示例

<span class="token comment">/ 时钟配置,2.5分频,80Mhz,系统时钟使用PLL,使用外部主时钟源,外部晶振为16MHz /</span>
<span class="token function">SysCtlClockSet</span><span class="token punctuation">(</span><span class="token constant">SYSCTL_SYSDIV_2_5</span> <span class="token operator">|</span> <span class="token constant">SYSCTL_USE_PLL</span> <span class="token operator">|</span> <span class="token constant">SYSCTL_OSC_MAIN</span> <span class="token operator">|</span> <span class="token constant">SYSCTL_XTAL_16MHZ</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

​ 这里有一点要注意TM4C123G的最大主频为80MHz,因此配置时钟的时候,若使用的PLL,最小分频数只能是2.5分频。

​ 固件库中配置适中需要用到这个函数

<span class="token keyword">void</span> <span class="token function">SysCtlClockSet</span><span class="token punctuation">(</span>uint32_t ui32Config<span class="token punctuation">)</span><span class="token punctuation">;</span>

​ 它包含在driverlib/sysctl.h中,这个函数的输入参数有四个部分,需要与在一起作为参数。四个部分分别是分频值,系统时钟来源是PLL还是OSC,使用的时钟源是什么,以及外部晶振的频率是什么。下面简单列举一下各部分的参数都是什么,然后详细的可以自己查看固件库的sysctl.h文件。

时钟分频

<span class="token constant">SYSCTL_SYSDIV_1</span>     <span class="token comment">// Processor clock is osc/pll /1</span>
<span class="token constant">SYSCTL_SYSDIV_2</span>     <span class="token comment">// Processor clock is osc/pll /2</span>
<span class="token constant">SYSCTL_SYSDIV_3</span>     <span class="token comment">// Processor clock is osc/pll /3</span>
<span class="token operator">...</span><span class="token operator">...</span><span class="token operator">...</span><span class="token punctuation">.</span>
<span class="token constant">SYSCTL_SYSDIV_64</span>    <span class="token comment">// Processor clock is osc/pll /64</span>
<span class="token constant">SYSCTL_SYSDIV_2_5</span>   <span class="token comment">// Processor clock is pll / 2.5</span>
<span class="token constant">SYSCTL_SYSDIV_3_5</span>   <span class="token comment">// Processor clock is pll / 3.5</span>
<span class="token operator">...</span><span class="token operator">...</span><span class="token operator">...</span><span class="token punctuation">.</span>
<span class="token constant">SYSCTL_SYSDIV_63_5</span>  <span class="token comment">// Processor clock is pll / 63.5</span>

2_5就是2.5分频的意思

系统时钟来源

<span class="token constant">SYSCTL_USE_PLL</span>  <span class="token comment">// System clock is the PLL clock</span>
<span class="token constant">SYSCTL_USE_OSC</span>  <span class="token comment">// System clock is the osc clock</span>

时钟源选择

<span class="token constant">SYSCTL_OSC_MAIN</span>  <span class="token comment">// Osc source is main osc</span>
<span class="token constant">SYSCTL_OSC_INT</span>   <span class="token comment">// Osc source is int. osc</span>
<span class="token constant">SYSCTL_OSC_INT4</span>  <span class="token comment">// Osc source is int. osc /4</span>
<span class="token constant">SYSCTL_OSC_INT30</span> <span class="token comment">// Osc source is int. 30 KHz</span>
<span class="token constant">SYSCTL_OSC_EXT32</span> <span class="token comment">// Osc source is ext. 32 KHz</span>

外部晶振大小选择

<span class="token constant">SYSCTL_XTAL_1MHZ</span>        <span class="token comment">// External crystal is 1MHz</span>
<span class="token constant">SYSCTL_XTAL_1_84MHZ</span>     <span class="token comment">// External crystal is 1.8432MHz</span>
<span class="token constant">SYSCTL_XTAL_2MHZ</span>        <span class="token comment">// External crystal is 2MHz</span>
<span class="token constant">SYSCTL_XTAL_2_45MHZ</span>     <span class="token comment">// External crystal is 2.4576MHz</span>
<span class="token constant">SYSCTL_XTAL_3_57MHZ</span>     <span class="token comment">// External crystal is 3.579545MHz</span>

​ 除了以上的这些参数,还有一些别的参数可作选择,可以查看手册根据需要选择,这里只给出常用的一些。

</div>


本文由simyng创作, 采用知识共享署名4.0 国际许可协议进行许可,转载前请务必署名
  文章最后更新时间为:February 4th , 2020 at 05:00 pm