单片机学习小组
直播中

哼小曲

13年用户 1188经验值
私信 关注

怎样去使用AT91SAM9260的PMC寄存器呢

AT91SAM9260的PMC寄存器有哪些呢?
怎样去使用AT91SAM9260的PMC寄存器呢?



回帖(1)

李梁

2022-1-24 10:51:07
AT91SAM9260的Power Management Controller(PMC)寄存器

本文章参考ATMEL官方的《AT91SAM9260数据手册》

1.寄存器映射:

[tr]地址名字寄存器可进行操作复位后的值[/tr]
0x0000PMC_SCER系统时钟使能寄存器只写
0x0004PMC_SCDR系统时钟禁用寄存器只写
0x0008PMC _SCSR系统时钟状态寄存器只读0x03
0x000C保留
0x0010PMC _PCER外设时钟使能寄存器只写
0x0014PMC_PCDR外设时钟禁用寄存器只写
0x0018PMC_PCSR外设时钟状态寄存器只读0x00
0x001C保留
0x0020CKGR_MOR主振荡器寄存器读写0x00
0x0024CKGR_MCFR主时钟频率寄存器只读0x00
0x0028CKGR_PLLAR锁相环A寄存器读写0x3F00
0x002CCKGR_PLLBR锁相环B寄存器读写0x3F00
0x0030PMC_MCKR主时钟寄存器读写0x00
0x0038保留
0x003C保留
0x0040PMC_PCK0可编程时钟0寄存器读写0x00
0x0044PMC_PCK1可编程时钟1寄存器读写0x00
0x0060PMC_IER中断使能寄存器只写
0x0064PMC_IDR中断禁用寄存器只写
0x0068PMC_SR状态寄存器只读0x08
0x006CPMC_IMR中断屏蔽寄存器只读0x00
0x0070-0x007C保留
0x0080PMC_PLLICPRPLL 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:启用相应的外围时钟。
2.5 PMC_PCDR(外设时钟禁用寄存器)


•PIDx:外设x时钟禁用
0:无效。
1:启用相应的外围时钟。

2.6 PMC_PCSR(外设时钟状态寄存器)


•PIDx:外设x时钟状态
0:相应的外围时钟已禁用。
1:相应的外围时钟已启用。

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。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分