AT91SAM9260的Power Management Controller(PMC)寄存器
- 1.寄存器映射:
- 2.寄存器的详细介绍
- 2.1 PMC_SCER (系统时钟启用寄存器)
- 2.2 PMC_SCDR(系统时钟禁用寄存器)
- 2.3 PMC_SCSR(系统时钟状态寄存器)
- 2.4 PMC_PCER(外设时钟使能寄存器)
- 2.5 PMC_PCDR(外设时钟禁用寄存器)
- 2.6 PMC_PCSR(外设时钟状态寄存器)
- 2.7 CKGR_MOR(时钟发生器主振荡器寄存器)
- 2.8 CKGR_MCFR(时钟发生器主时钟频率寄存器)
- 2.9 CKGR_PLLAR(时钟发生器_锁相环A寄存器)
- 2.10 CKGR_PLLBR(时钟发生器_锁相环B寄存器)
- 2.11 PMC_MCKR(主时钟寄存器)
- 2.12 PMC_PCKx(可编程时钟寄存器)
- 2.13 PMC_IER(中断使能寄存器)
- 2.14 PMC_IDR(中断禁用寄存器)
- 2.15 PMC_SR(状态寄存器)
- 2.16 PMC_IMR(中断屏蔽寄存器)
- 2.17 PMC_PLLICPR (PLL Charge Pump Current Register)
本文章参考ATMEL官方的《AT91SAM9260数据手册》
1.寄存器映射:
地址 | 名字 | 寄存器 | 可进行操作 | 复位后的值 |
---|---|---|---|---|
0x0000 | PMC_SCER | 系统时钟使能寄存器 | 只写 | — |
0x0004 | PMC_SCDR | 系统时钟禁用寄存器 | 只写 | — |
0x0008 | PMC _SCSR | 系统时钟状态寄存器 | 只读 | 0x03 |
0x000C | 保留 | — | — | — |
0x0010 | PMC _PCER | 外设时钟使能寄存器 | 只写 | — |
0x0014 | PMC_PCDR | 外设时钟禁用寄存器 | 只写 | — |
0x0018 | PMC_PCSR | 外设时钟状态寄存器 | 只读 | 0x00 |
0x001C | 保留 | — | — | — |
0x0020 | CKGR_MOR | 主振荡器寄存器 | 读写 | 0x00 |
0x0024 | CKGR_MCFR | 主时钟频率寄存器 | 只读 | 0x00 |
0x0028 | CKGR_PLLAR | 锁相环A寄存器 | 读写 | 0x3F00 |
0x002C | CKGR_PLLBR | 锁相环B寄存器 | 读写 | 0x3F00 |
0x0030 | PMC_MCKR | 主时钟寄存器 | 读写 | 0x00 |
0x0038 | 保留 | — | — | — |
0x003C | 保留 | — | — | — |
0x0040 | PMC_PCK0 | 可编程时钟0寄存器 | 读写 | 0x00 |
0x0044 | PMC_PCK1 | 可编程时钟1寄存器 | 读写 | 0x00 |
… | … | … | … | … |
0x0060 | PMC_IER | 中断使能寄存器 | 只写 | — |
0x0064 | PMC_IDR | 中断禁用寄存器 | 只写 | — |
0x0068 | PMC_SR | 状态寄存器 | 只读 | 0x08 |
0x006C | PMC_IMR | 中断屏蔽寄存器 | 只读 | 0x00 |
0x0070-0x007C | 保留 | — | — | — |
0x0080 | PMC_PLLICPR | PLL Charge Pump Current Register | 读写 | — |
0x0084-0x00FC | 保留 | — | — | — |
上表中:PLL Charge Pump Current Register 我不太确定怎么翻译更好一点,所以使用了英文原文。如果你有更好的翻译欢迎在评论区指出。
2.寄存器的详细介绍
2.1 PMC_SCER (系统时钟启用寄存器)
UHP[6]:USB主机端口时钟使能
0:无效。
1:启用USB主机端口的12和48 MHz时钟。
•UDP[7]:USB设备端口时钟使能
0:无效。
1:启用USB设备端口的48 MHz时钟。
•PCKx:可编程时钟x输出启用
0:无效。
1:启用相应的可编程时钟输出。
其中:PCK1:[9] PCK0:[8]
2.2 PMC_SCDR(系统时钟禁用寄存器)
•PCK[0]:处理器时钟禁用
0:无效。
1:禁用处理器时钟。这用于在空闲模式下进入处理器。
•UHP[6]:USB主机端口时钟禁用
0:无效。
1:禁用USB主机端口的12和48 MHz时钟。
•UDP[7]:USB设备端口时钟禁用
0:无效。
1:禁用USB设备端口的48 MHz时钟。
•PCKx:可编程时钟x输出禁用
0:无效。
1:禁用相应的可编程时钟输出。
其中:PCK1:[9] PCK0:[8]
2.3 PMC_SCSR(系统时钟状态寄存器)
•PCK[0]:处理器时钟状态
0:处理器时钟已禁用。
1:处理器时钟已启用。
•UHP[6]:USB主机端口时钟状态
0:USB主机端口的12和48 MHz时钟(UHPCK)已禁用。
1:USB主机端口的12和48 MHz时钟(UHPCK)已启用。
•UDP[7]:USB设备端口时钟状态
0:USB设备端口的48 MHz时钟(UDPCK)已禁用。
1:USB设备端口的48 MHz时钟(UDPCK)已启用。
•PCKx:可编程时钟x输出状态
0:相应的可编程时钟输出被禁用。
1:启用相应的可编程时钟输出。
其中:PCK1:[9] PCK0:[8]。
2.4 PMC_PCER(外设时钟使能寄存器)
•PIDx:外设x时钟启用
0:无效。
1:启用相应的外围时钟。
具体的外设ID的对应请参考:AT91SAM9260的外设ID
2.5 PMC_PCDR(外设时钟禁用寄存器)
•PIDx:外设x时钟禁用
0:无效。
1:启用相应的外围时钟。
具体的外设ID的对应请参考:AT91SAM9260的外设ID
2.6 PMC_PCSR(外设时钟状态寄存器)
•PIDx:外设x时钟状态
0:相应的外围时钟已禁用。
1:相应的外围时钟已启用。
具体的外设ID的对应请参考:AT91SAM9260的外设ID
2.7 CKGR_MOR(时钟发生器主振荡器寄存器)
•MOSCEN[0]:主振荡器使能
(XIN和XOUT之间必须连接一个晶体)
0:主振荡器被禁用。
1:主振荡器已启用。此时必须将OSCBYPASS设置为0。
当设置MOSCEN时,一旦达到主振荡器启动时间,就会设置MOSCS标志。
• OSCBYPASS[1]:振荡器旁路
0:无影响。
1:主振荡器被旁路。MOSCEN必须设置为0。XIN上必须连接外部时钟。
当设置OSCPAYPASS时,PMC_SR中的MOSCS标志将自动设置。
清除MOSCEN和OSCCBYPASS位允许重置MOSCS标志。
•OSCOUNT[8-15]:主振荡器启动时间
指定主振荡器启动时间的慢时钟周期数乘以8。
2.8 CKGR_MCFR(时钟发生器主时钟频率寄存器)
•MAINF[0-15]:主时钟频率
给出16个慢时钟周期内的主时钟周期数。
•MAINRDY[16]:主时钟就绪
0:MAINF值无效或主振荡器被禁用。
1:主振荡器先前已启用,且MAINTF值可用。
2.9 CKGR_PLLAR(时钟发生器_锁相环A寄存器)
在使用PMC之前,应检查PLL A输入频率和倍增系数的可能限制。
警告:编程CKGR_PLLAR时,位29必须始终设置为1。
• DIVA[0-7]:分频器 A
0:分频器输出为0 。
1:不使用分频器。
2–255:分频器输出为主时钟除以该数值。
•PLLACOUNT[8-13]:PLL A计数器
指定写入CKGR_PLLAR后,在PMC_SR中设置LOCKA位之前的慢时钟周期数。
•OUTA[14-15]:PLL时钟频率范围
为优化时钟性能,必须按照第39.6.7节“PLL特性”的规定对该字段进行编程。如下图。
•MULA[16-26]:PLL A乘法器
0:PLL A停用。
1-2047:PLL A时钟频率是PLL A输入频率乘以(MULA+1)。
2.10 CKGR_PLLBR(时钟发生器_锁相环B寄存器)
在使用PMC之前,应检查PLL B输入频率和倍增系数的可能限制。
• DIVB[0-7]:分频器 B
0:分频器输出为0 。
1:不使用分频器。
2–255:分频器输出为主时钟除以该数值。
•PLLBCOUNT[8-13]:PLL B计数器
指定写入CKGR_PLLAR后,在PMC_SR中设置LOCKA位之前的慢时钟周期数。
•OUTB[14-15]:PLL时钟频率范围
为优化时钟性能,必须按照第39.6.7节“PLL特性”的规定对该字段进行编程。如下图。
•MULB[16-26]:PLL B乘法器
0:PLL B停用。
1-2047:PLL B时钟频率是PLL A输入频率乘以(MULB+1)。
•USBDIV[28-29]:用于USB时钟的分频器
0 0:分频器输出为PLL B时钟输出。
0 1:分频器输出是PLL B时钟输出除以2。
1 0:分频器输出是PLL B时钟输出除以4。
1 1:保留。
2.11 PMC_MCKR(主时钟寄存器)
•CSS[0-1]:主时钟选择
0 0:慢时钟。
0 1:主时钟。
1 0: PLL A时钟。
1 1: PLL B时钟。
•PRES[2-4]:处理器时钟预分频器
0 0 0:选定时钟 。
0 0 1:选定时钟除以2 。
0 1 0:选定时钟除以4 。
0 1 1:选定时钟除以8 。
1 0 0:选定时钟除以16 。
1 0 1:选定时钟除以32 。
1 0 0:选定时钟除以64 。
1 1 1:保留。
•MDIV[8-9]:主时钟分频
0 0:主时钟是处理器时钟。
0 1:主时钟是处理器时钟除以2。
1 0:主时钟是处理器时钟除以4。
1 1:保留。
2.12 PMC_PCKx(可编程时钟寄存器)
•CSS[0-1]:主时钟选择
0 0:慢时钟。
0 1:主时钟。
1 0: PLL A时钟。
1 1: PLL B时钟。
•PRES[2-4]:处理器时钟预分频器
0 0 0:选定时钟 。
0 0 1:选定时钟除以2 。
0 1 0:选定时钟除以4 。
0 1 1:选定时钟除以8 。
1 0 0:选定时钟除以16 。
1 0 1:选定时钟除以32 。
1 0 0:选定时钟除以64 。
1 1 1:保留。
2.13 PMC_IER(中断使能寄存器)
•MOSCS[0]:主振荡器状态中断启用
0:无效。
1:启用中断。
•LOCKA[1]:PLL A锁定中断启用
0:无效。
1:启用中断。
•LOCKB[2]:PLL B锁定中断启用
0:无效。
1:启用中断。
•MCKRDY[3]:主时钟就绪中断启用
0:无效。
1:启用中断。
•PCKRDY0[8]:可编程时钟就绪0中断启用
0:无效。
1:启用中断。
•PCKRDY1[9]:可编程时钟就绪1中断启用
0:无效。
1:启用中断。
2.14 PMC_IDR(中断禁用寄存器)
•MOSCS[0]:主振荡器状态中断禁用
0:无效。
1:禁用中断。
•LOCKA[1]:PLL A锁定中断禁用
0:无效。
1:禁用中断。
•LOCKB[2]:PLL B锁定中断禁用
0:无效。
1:禁用中断。
•MCKRDY[3]:主时钟就绪中断禁用
0:无效。
1:禁用中断。
•PCKRDY0[8]:可编程时钟就绪0中断禁用
0:无效。
1:禁用中断。
•PCKRDY1[9]:可编程时钟就绪1中断禁用
0:无效。
1:禁用中断。
2.15 PMC_SR(状态寄存器)
•MOSCS[0]:MOSCS标志状态
0:主振荡器不稳定。
1:主振荡器稳定。
•LOCKA[1]:PLL A锁定状态
0:PLL A未锁定
1:PLL A锁定。
•LOCKB[2]:PLL B锁定状态
0:PLL B未锁定。
1:PLL B已锁定。
•MCKRDY[3]:主时钟状态
0:主时钟未就绪。
1:主时钟已就绪。
•OSC_SEL[7]:慢时钟振荡器选择
0:内部慢时钟RC振荡器。
1:外部慢时钟32 kHz振荡器。
•PCKRDY0[8]:可编程时钟0就绪状态
0:可编程时钟0未就绪。
1:可编程时钟0已就绪。
•PCKRDY1[9]:可编程时钟1就绪状态
0:可编程时钟1未就绪。
1:可编程时钟1已就绪。
2.16 PMC_IMR(中断屏蔽寄存器)
•MOSCS[0]:主振荡器状态中断屏蔽
0:中断已启用。
1:中断被禁用。
•LOCKA[1]:PLL A锁定中断屏蔽
0:中断已启用。
1:中断被禁用。
•LOCKB[2]:PLL B锁定中断屏蔽
0:中断已启用。
1:中断被禁用。
•MCKRDY[3]:主时钟就绪中断屏蔽
0:中断已启用。
1:中断被禁用。
•PCKRDY0[8]:可编程时钟就绪0中断屏蔽
0:中断已启用。
1:中断被禁用。
•PCKRDY1[9]:可编程时钟就绪1中断屏蔽
0:中断已启用。
1:中断被禁用。
2.17 PMC_PLLICPR (PLL Charge Pump Current Register)
•ICPPLLA[0]:必须设置为1。
•ICPPLLB[16]:必须设置为1。
欢迎大家点赞、关注、收藏,不定时更新各种的知识点哦!