[Atmel] 跑一下XMEGA-B1程序(12)时钟配置

[复制链接]
 楼主| ddllxxrr 发表于 2016-1-6 18:42 | 显示全部楼层 |阅读模式
本节将为系统时钟管理服务提供更为先进的应用案例。这个用例将配置主系统时钟32MHz,使用内部的PLL模块将晶体连接到单片机的频率。外围总线时钟运行的速度与CPU的时钟一样,和USB时钟将被配置为使用内部RC振荡器32MHZ(通常)的校准与框架USB启动校准参考48MHz

这个可以打开时钟管理模块的指导,来进行


首先打开以前的工程,然后看一下conf_clock.h

  1. #ifndef CONF_CLOCK_H_INCLUDED
  2. #define CONF_CLOCK_H_INCLUDED

  3. #define CONFIG_SYSCLK_SOURCE          SYSCLK_SRC_RC2MHZ
  4. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RC32MHZ
  5. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RC32KHZ
  6. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_XOSC
  7. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_PLL

  8. /* Fbus = Fsys / (2 ^ BUS_div) */
  9. #define CONFIG_SYSCLK_PSADIV          SYSCLK_PSADIV_1
  10. #define CONFIG_SYSCLK_PSBCDIV         SYSCLK_PSBCDIV_1_1

  11. //#define CONFIG_PLL0_SOURCE          PLL_SRC_XOSC
  12. //#define CONFIG_PLL0_SOURCE          PLL_SRC_RC2MHZ
  13. //#define CONFIG_PLL0_SOURCE          PLL_SRC_RC32MHZ

  14. /* Fpll = (Fclk * PLL_mul) / PLL_div */
  15. //#define CONFIG_PLL0_MUL             (24000000UL / BOARD_XOSC_HZ)
  16. //#define CONFIG_PLL0_DIV             1

  17. /* External oscillator frequency range */
  18. /** 0.4 to 2 MHz frequency range */
  19. //#define CONFIG_XOSC_RANGE XOSC_RANGE_04TO2
  20. /** 2 to 9 MHz frequency range */
  21. //#define CONFIG_XOSC_RANGE XOSC_RANGE_2TO9
  22. /** 9 to 12 MHz frequency range */
  23. //#define CONFIG_XOSC_RANGE XOSC_RANGE_9TO12
  24. /** 12 to 16 MHz frequency range */
  25. //#define CONFIG_XOSC_RANGE XOSC_RANGE_12TO16

  26. /* DFLL autocalibration */
  27. //#define CONFIG_OSC_AUTOCAL_RC2MHZ_REF_OSC  OSC_ID_RC32KHZ
  28. //#define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC OSC_ID_XOSC

  29. /* The following example clock configuration definitions can be used in XMEGA
  30. * devices that contain a USB controller. It configures the USB controller clock
  31. * source to use the internal (nominally) 32MHz RC oscillator, up-calibrated to
  32. * run at 48MHz via the periodic 1ms USB Start Of Frame packets sent by the
  33. * host. The USB controller requires 48MHz for Full Speed operation, or 6MHz
  34. * for USB Low Speed operation.
  35. *
  36. * Note that when the 32MHz RC oscillator is tuned to 48MHz, it cannot be used
  37. * directly as the system clock source; it must either be prescaled down to a
  38. * speed below the maximum operating frequency given in the datasheet, or an
  39. * alternative clock source (e.g. the internal 2MHz RC Oscillator, multiplied
  40. * to a higher frequency via the internal PLL module) must be used instead.
  41. */
  42. #define CONFIG_USBCLK_SOURCE                USBCLK_SRC_RCOSC
  43. //#define CONFIG_OSC_RC32_CAL                 48000000UL
  44. //#define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC  OSC_ID_USBSOF

  45. /* Use to enable and select RTC clock source */
  46. //#define CONFIG_RTC_SOURCE           SYSCLK_RTCSRC_ULP

  47. #endif /* CONF_CLOCK_H_INCLUDED */

同指导上的还真不一样,按照指导上的步骤来完成。

  1. #ifndef CONF_CLOCK_H_INCLUDED
  2. #define CONF_CLOCK_H_INCLUDED

  3. //#define CONFIG_SYSCLK_SOURCE          SYSCLK_SRC_RC2MHZ
  4. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RC32MHZ
  5. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RC32KHZ
  6. #define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_XOSC
  7. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_PLL

  8. /* Fbus = Fsys / (2 ^ BUS_div) */
  9. #define CONFIG_SYSCLK_PSADIV          SYSCLK_PSADIV_1
  10. #define CONFIG_SYSCLK_PSBCDIV         SYSCLK_PSBCDIV_1_2

  11. #define CONFIG_PLL0_SOURCE          PLL_SRC_XOSC
  12. //#define CONFIG_PLL0_SOURCE          PLL_SRC_RC2MHZ
  13. //#define CONFIG_PLL0_SOURCE          PLL_SRC_RC32MHZ

  14. /* Fpll = (Fclk * PLL_mul) / PLL_div */
  15. #define CONFIG_PLL0_MUL             (32000000UL / BOARD_XOSC_HZ)
  16. #define CONFIG_PLL0_DIV             1

  17. /* External oscillator frequency range */
  18. /** 0.4 to 2 MHz frequency range */
  19. //#define CONFIG_XOSC_RANGE XOSC_RANGE_04TO2
  20. /** 2 to 9 MHz frequency range */
  21. //#define CONFIG_XOSC_RANGE XOSC_RANGE_2TO9
  22. /** 9 to 12 MHz frequency range */
  23. //#define CONFIG_XOSC_RANGE XOSC_RANGE_9TO12
  24. /** 12 to 16 MHz frequency range */
  25. //#define CONFIG_XOSC_RANGE XOSC_RANGE_12TO16

  26. /* DFLL autocalibration */
  27. //#define CONFIG_OSC_AUTOCAL_RC2MHZ_REF_OSC  OSC_ID_RC32KHZ
  28. //#define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC OSC_ID_XOSC

  29. /* The following example clock configuration definitions can be used in XMEGA
  30. * devices that contain a USB controller. It configures the USB controller clock
  31. * source to use the internal (nominally) 32MHz RC oscillator, up-calibrated to
  32. * run at 48MHz via the periodic 1ms USB Start Of Frame packets sent by the
  33. * host. The USB controller requires 48MHz for Full Speed operation, or 6MHz
  34. * for USB Low Speed operation.
  35. *
  36. * Note that when the 32MHz RC oscillator is tuned to 48MHz, it cannot be used
  37. * directly as the system clock source; it must either be prescaled down to a
  38. * speed below the maximum operating frequency given in the datasheet, or an
  39. * alternative clock source (e.g. the internal 2MHz RC Oscillator, multiplied
  40. * to a higher frequency via the internal PLL module) must be used instead.
  41. */
  42. #define CONFIG_USBCLK_SOURCE                USBCLK_SRC_RCOSC
  43. #define CONFIG_OSC_RC32_CAL                 48000000UL
  44. #define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC  OSC_ID_USBSOF
  45. //#define CONFIG_OSC_AUTOCAL          OSC_ID_RC32MHZ

  46. /* Use to enable and select RTC clock source */
  47. //#define CONFIG_RTC_SOURCE           SYSCLK_RTCSRC_ULP

  48. #endif /* CONF_CLOCK_H_INCLUDED */


这时编译一下,编译通过,这时系统时钟已经变成32MHz和USB 48MHz啦!!!!

本帖子中包含更多资源

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

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

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2403

主题

6994

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2403

主题

6994

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部