[Atmel] 跑一下SAM4N例程(一):ADC enhanced resolution

[复制链接]
990|0
 楼主| ddllxxrr 发表于 2015-2-22 08:51 | 显示全部楼层 |阅读模式


手中有一块SAM4N的开发板。ASF库又十分丰富。不是一天两天能游刃有余的。为了不让板子吃灰。
特来跑一下例程。我想这些例程跑完,也对ASF库理解的差不多了。

今天跑第一个例程,ADC enhanced resolution

例程调入也非常简单,首先打开studio6.2。只要插上开发板,则自动跳出界面。

这时可直接打开例程。



以下是调入时问的同意不同意协议许可之类:当然同意。


例程给出的所有时钟配置,串口配置,都在config子目录下边。

以下是时钟配置:


  1. #ifndef CONF_CLOCK_H_INCLUDED
  2. #define CONF_CLOCK_H_INCLUDED

  3. // ===== System Clock (MCK) Source Options
  4. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_SLCK_RC
  5. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_SLCK_XTAL
  6. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_SLCK_BYPASS
  7. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_4M_RC
  8. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_8M_RC
  9. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_12M_RC
  10. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_XTAL
  11. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_MAINCK_BYPASS
  12. #define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_PLLACK

  13. // ===== System Clock (MCK) Prescaler Options   (Fmck = Fsys / (SYSCLK_PRES))
  14. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_1
  15. #define CONFIG_SYSCLK_PRES          SYSCLK_PRES_2
  16. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_4
  17. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_8
  18. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_16
  19. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_32
  20. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_64
  21. //#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_3

  22. // ===== PLL0 (A) Options   (Fpll = (Fclk * PLL_mul) / PLL_div)
  23. // Use mul and div effective values here.
  24. #define CONFIG_PLL0_SOURCE          PLL_SRC_MAINCK_8M_RC
  25. #define CONFIG_PLL0_MUL             25
  26. #define CONFIG_PLL0_DIV             1

  27. // ===== Target frequency (System clock)
  28. // - Internal RC frequency: 8MHz
  29. // - System clock source: PLLA
  30. // - System clock prescaler: 2 (divided by 2)
  31. // - PLLA source: 8M_RC
  32. // - PLLA output: 8M_RC * 25 / 1
  33. // - System clock: 8M_RC * 25 / 1 / 2 = 100MHz

  34. #endif /* CONF_CLOCK_H_INCLUDED */
上边可以看出,系统时钟是用了PLL时钟,且时钟源为内部高速8MHZ。加上分频系数2经过倍频25得到的系统时钟为100MHZ

可见以后的例程没有特殊要求都运行在这个频率下边。


一些串口和LED及按键配置都在board_init()里初始化,在conf_board.h配置,

本例中的串口就在conf_board.h中有配置:

#define CONF_BOARD_UART_CONSOLE

在初始化函数中会把PA9 PA10分配给串口。

在conf_uart_serial.h中指定的速率:

  1. #ifndef CONF_USART_SERIAL_H
  2. #define CONF_USART_SERIAL_H

  3. /** UART Interface */
  4. #define CONF_UART            CONSOLE_UART
  5. /** Baudrate setting */
  6. #define CONF_UART_BAUDRATE   115200
  7. /** Parity setting */
  8. #define CONF_UART_PARITY     UART_MR_PAR_NO

  9. #endif/* CONF_USART_SERIAL_H_INCLUDED */
在主程序中声明:

  1. /**
  2. * \brief Configure UART console.
  3. */
  4. static void configure_console(void)
  5. {
  6.         const usart_serial_options_t uart_serial_options = {
  7.                 .baudrate = CONF_UART_BAUDRATE,
  8. #ifdef CONF_UART_CHAR_LENGTH
  9.                 .charlength = CONF_UART_CHAR_LENGTH,
  10. #endif
  11.                 .paritytype = CONF_UART_PARITY,
  12. #ifdef CONF_UART_STOP_BITS
  13.                 .stopbits = CONF_UART_STOP_BITS,
  14. #endif
  15.         };

  16.         /* Configure console UART. */
  17.         sysclk_enable_peripheral_clock(CONSOLE_UART_ID);
  18.         stdio_serial_init(CONF_UART, &uart_serial_options);
  19. }


这样速率就到了115200 无效验位,

这时打开SecureCRT软件就可以观察到结果了:

以下是8位结果:


以下是16位结果:



可见两个结果都一样。




本帖子中包含更多资源

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

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

本版积分规则

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

2404

主题

6997

帖子

68

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