[Atmel] 在mbed环境下跑一下SAMD21:ADC

[复制链接]
1100|0
 楼主| ddllxxrr 发表于 2016-2-29 22:03 | 显示全部楼层 |阅读模式
在上一个板,SAMR21好像没有ADC,所以我迫不及待地想证明一下,mbed下ADC 好用不就用了SAMD21开发板。

首先找到,ADC在管脚上的定义,这个在peripheralPin.h当中。


  1. #include "PeripheralPins.h"

  2. /************ADC***************/
  3. const PinMap PinMap_ADC[] = {
  4.     {PA02,  ADC_0, 1},
  5.     {PA03,  ADC_1, 1},
  6.     {PB08,  ADC_2, 1},
  7.     {PB09,  ADC_3, 1},
  8.     {PA04,  ADC_4, 1},
  9.     {PA05,  ADC_5, 1},
  10.     {PA06,  ADC_6, 1},
  11.     {PA07,  ADC_7, 1},
  12.     {PB00,  ADC_8, 1},
  13.     {PB01,  ADC_9, 1},
  14.     {PB02,  ADC_10, 1},
  15.     {PB03,  ADC_11, 1},
  16.     {PB04,  ADC_12, 1},
  17.     {PB05,  ADC_13, 1},
  18.     {PB06,  ADC_14, 1},
  19.     {PB07,  ADC_15, 1},
  20.     {PA08,  ADC_16, 1},
  21.     {PA09,  ADC_17, 1},
  22.     {PA10,  ADC_18, 1},
  23.     {PA11,  ADC_19, 1},

  24.     /* Not connected */
  25.     {NC  , NC   , NC}
  26. };

  27. /************DAC***************/
  28. const PinMap PinMap_DAC[] = {
  29.     {PA02,  DAC_0, 1},

  30.     /* Not connected */
  31.     {NC  , NC   , NC}
  32. };

  33. /************SERCOM Pins***********/
  34. const PinMap PinMap_SERCOM_PAD[] = {
  35.     {PA00, SERCOM1_PAD0, 3},
  36.     {PA01, SERCOM1_PAD1, 3},
  37.     {PA04, SERCOM0_PAD0, 3},
  38.     {PA05, SERCOM0_PAD1, 3},
  39.     {PA06, SERCOM0_PAD2, 3},
  40.     {PA07, SERCOM0_PAD3, 3},
  41.     {PA08, SERCOM0_PAD0, 2},
  42.     {PA09, SERCOM0_PAD1, 2},
  43.     {PA10, SERCOM0_PAD2, 2},
  44.     {PA11, SERCOM0_PAD3, 2},
  45.     {PA12, SERCOM2_PAD0, 2},
  46.     {PA13, SERCOM2_PAD1, 2},
  47.     {PA14, SERCOM2_PAD2, 2},
  48.     {PA15, SERCOM2_PAD3, 2},
  49.     {PA16, SERCOM1_PAD0, 2},
  50.     {PA17, SERCOM1_PAD1, 2},
  51.     {PA18, SERCOM1_PAD2, 2},
  52.     {PA19, SERCOM1_PAD3, 2},
  53.     {PA20, SERCOM3_PAD2, 3},
  54.     {PA21, SERCOM3_PAD3, 3},
  55.     {PA22, SERCOM3_PAD0, 2},
  56.     {PA23, SERCOM3_PAD1, 2},
  57.     {PA24, SERCOM3_PAD2, 2},
  58.     {PA25, SERCOM3_PAD3, 2},
  59.     {PA30, SERCOM1_PAD2, 3},
  60.     {PA31, SERCOM1_PAD3, 3},
  61.     {PB00, SERCOM5_PAD2, 3},
  62.     {PB01, SERCOM5_PAD3, 3},
  63.     {PB02, SERCOM5_PAD0, 3},
  64.     {PB03, SERCOM5_PAD1, 3},
  65.     {PB08, SERCOM4_PAD0, 3},
  66.     {PB09, SERCOM4_PAD1, 3},
  67.     {PB10, SERCOM4_PAD2, 3},
  68.     {PB11, SERCOM4_PAD3, 3},
  69.     {PB12, SERCOM4_PAD0, 2},
  70.     {PB13, SERCOM4_PAD1, 2},
  71.     {PB14, SERCOM4_PAD2, 2},
  72.     {PB15, SERCOM4_PAD3, 2},
  73.     {PB16, SERCOM5_PAD0, 2},
  74.     {PB17, SERCOM5_PAD1, 2},
  75.     {PB22, SERCOM5_PAD2, 3},
  76.     {PB23, SERCOM5_PAD3, 3},
  77.     {PB30, SERCOM5_PAD0, 3},
  78.     {PB31, SERCOM5_PAD1, 3},

  79.     /* Not connected */
  80.     {NC  , NC   , NC}
  81. };

  82. /*******SERCOM Pins extended*******/
  83. const PinMap PinMap_SERCOM_PADEx[] = {
  84.     {PA08, SERCOM2_PAD0, 3},
  85.     {PA09, SERCOM2_PAD1, 3},
  86.     {PA10, SERCOM2_PAD2, 3},
  87.     {PA11, SERCOM2_PAD3, 3},
  88.     {PA12, SERCOM4_PAD0, 3},
  89.     {PA13, SERCOM4_PAD1, 3},
  90.     {PA14, SERCOM4_PAD2, 3},
  91.     {PA15, SERCOM4_PAD3, 3},
  92.     {PA16, SERCOM3_PAD0, 3},
  93.     {PA17, SERCOM3_PAD1, 3},
  94.     {PA18, SERCOM3_PAD2, 3},
  95.     {PA19, SERCOM3_PAD3, 3},
  96.     {PA20, SERCOM5_PAD2, 2},
  97.     {PA21, SERCOM5_PAD3, 2},
  98.     {PA22, SERCOM5_PAD0, 3},
  99.     {PA23, SERCOM5_PAD1, 3},
  100.     {PA24, SERCOM5_PAD2, 3},
  101.     {PA25, SERCOM5_PAD3, 3},

  102.     /* Not connected */
  103.     {NC  , NC   , NC}
  104. };


  105. /************PWM***************/
  106. const PinMap PinMap_PWM[] = {
  107.     {PA00, PWM_2, 4},
  108.     {PA01, PWM_2, 4},
  109.     {PA04, PWM_0, 4},
  110.     {PA05, PWM_0, 4},
  111.     {PA06, PWM_1, 4},
  112.     {PA07, PWM_1, 4},
  113.     {PA08, PWM_1, 5},
  114.     {PA09, PWM_1, 5},
  115.     {PA10, PWM_1, 4},
  116.     {PA11, PWM_1, 4},
  117.     {PA12, PWM_2, 4},
  118.     {PA13, PWM_2, 4},
  119.     {PA14, PWM_0, 5},
  120.     {PA15, PWM_0, 5},
  121.     {PA16, PWM_2, 4},
  122.     {PA17, PWM_2, 4},
  123.     {PA18, PWM_0, 5},
  124.     {PA19, PWM_0, 5},
  125.     {PA20, PWM_0, 5},
  126.     {PA21, PWM_0, 5},
  127.     {PA22, PWM_0, 5},
  128.     {PA23, PWM_0, 5},
  129.     {PA24, PWM_1, 5},
  130.     {PA25, PWM_1, 5},
  131.     {PA30, PWM_1, 4},
  132.     {PA31, PWM_1, 4},
  133.     {PB10, PWM_0, 5},
  134.     {PB11, PWM_0, 5},
  135.     {PB12, PWM_0, 5},
  136.     {PB13, PWM_0, 5},
  137.     {PB16, PWM_0, 5},
  138.     {PB17, PWM_0, 5},
  139.     {PB30, PWM_1, 5},
  140.     {PB31, PWM_1, 5},

  141.     /* Not connected */
  142.     {NC  , NC   , NC}
  143. };

  144. /**********EXTINT*************/
  145. const PinMap PinMap_EXTINT[] = {
  146.     {PA16,  EXTINT_0, 0},
  147.     {PB00,  EXTINT_0, 0},
  148.     {PB16,  EXTINT_0, 0},
  149.     {PA00,  EXTINT_0, 0},

  150.     {PA17,  EXTINT_1, 0},
  151.     {PB01,  EXTINT_1, 0},
  152.     {PB17,  EXTINT_1, 0},
  153.     {PA01,  EXTINT_1, 0},

  154.     {PA18,  EXTINT_2, 0},
  155.     {PA02,  EXTINT_2, 0},
  156.     {PB02,  EXTINT_2, 0},

  157.     {PA03,  EXTINT_3, 0},
  158.     {PA19,  EXTINT_3, 0},
  159.     {PB03,  EXTINT_3, 0},

  160.     {PA04,  EXTINT_4, 0},
  161.     {PA20,  EXTINT_4, 0},
  162.     {PB04,  EXTINT_4, 0},

  163.     {PA05,  EXTINT_5, 0},
  164.     {PA21,  EXTINT_5, 0},
  165.     {PB05,  EXTINT_5, 0},

  166.     {PA06,  EXTINT_6, 0},
  167.     {PA22,  EXTINT_6, 0},
  168.     {PB06,  EXTINT_6, 0},
  169.     {PB22,  EXTINT_6, 0},

  170.     {PA07,  EXTINT_7, 0},
  171.     {PA23,  EXTINT_7, 0},
  172.     {PB07,  EXTINT_7, 0},
  173.     {PB23,  EXTINT_7, 0},

  174.     {PA28,  EXTINT_8, 0},
  175.     {PB08,  EXTINT_8, 0},

  176.     {PA09,  EXTINT_9, 0},
  177.     {PB09,  EXTINT_9, 0},

  178.     {PA10,  EXTINT_10, 0},
  179.     {PA30,  EXTINT_10, 0},
  180.     {PB10,  EXTINT_10, 0},

  181.     {PA11,  EXTINT_11, 0},
  182.     {PA31,  EXTINT_11, 0},
  183.     {PB11,  EXTINT_11, 0},

  184.     {PA12,  EXTINT_12, 0},
  185.     {PA24,  EXTINT_12, 0},
  186.     {PB12,  EXTINT_12, 0},

  187.     {PA13,  EXTINT_13, 0},
  188.     {PA25,  EXTINT_13, 0},
  189.     {PB13,  EXTINT_13, 0},

  190.     {PB14,  EXTINT_14, 0},
  191.     {PB30,  EXTINT_14, 0},
  192.     {PA14,  EXTINT_14, 0},

  193.     {PA15,  EXTINT_15, 0},
  194.     {PA27,  EXTINT_15, 0},
  195.     {PB15,  EXTINT_15, 0},
  196.     {PB31,  EXTINT_15, 0},

  197.     /* Not connected */
  198.     {NC  , NC   , NC}
  199. };

  200. const struct pwm_pin_channel pwn_pins[] = {
  201.     {PA00, PWM_2, 0},
  202.     {PA01, PWM_2, 1},
  203.     {PA04, PWM_0, 0},
  204.     {PA05, PWM_0, 1},
  205.     {PA06, PWM_1, 0},
  206.     {PA07, PWM_1, 1},
  207.     {PA08, PWM_1, 2},
  208.     {PA09, PWM_1, 3},
  209.     {PA10, PWM_1, 0},
  210.     {PA11, PWM_1, 1},
  211.     {PA12, PWM_2, 0},
  212.     {PA13, PWM_2, 1},
  213.     {PA14, PWM_0, 4},
  214.     {PA15, PWM_0, 5},
  215.     {PA16, PWM_2, 0},
  216.     {PA17, PWM_2, 1},
  217.     {PA18, PWM_0, 2},
  218.     {PA19, PWM_0, 3},
  219.     {PA20, PWM_0, 6},
  220.     {PA21, PWM_0, 7},
  221.     {PA22, PWM_0, 4},
  222.     {PA23, PWM_0, 5},
  223.     {PA24, PWM_1, 2},
  224.     {PA25, PWM_1, 3},
  225.     {PA30, PWM_1, 0},
  226.     {PA31, PWM_1, 1},
  227.     {PB10, PWM_0, 4},
  228.     {PB11, PWM_0, 5},
  229.     {PB12, PWM_0, 6},
  230.     {PB13, PWM_0, 7},
  231.     {PB16, PWM_0, 4},
  232.     {PB17, PWM_0, 5},
  233.     {PB30, PWM_1, 2},
  234.     {PB31, PWM_1, 3},

  235.     /* Not connected */
  236.     {NC  , NC   , NC}
  237. };
于是程序如下:

  1. #include "mbed.h"

  2. // Initialize a pins to perform analog input and digital output fucntions
  3. AnalogIn   ain(PA02);
  4. DigitalOut dout(LED1);

  5. int main(void)
  6. {
  7.     while (1) {
  8.         // test the voltage on the initialized analog pin
  9.         //  and if greater than 0.3 * VCC set the digital pin
  10.         //  to a logic 1 otherwise a logic 0
  11.         if(ain > 0.3f) {
  12.             dout = 1;
  13.         } else {
  14.             dout = 0;
  15.         }
  16.         
  17.         // print the percentage and 16 bit normalized values
  18.         printf("percentage: %3.3f%%\n", ain.read()*100.0f);
  19.         printf("normalized: 0x%04X \n", ain.read_u16());
  20.         wait(0.2f);
  21.     }
  22. }
运行的截图如下:

当我接上3.3V显示为FFFF,而不接为0000




本帖子中包含更多资源

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

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

本版积分规则

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

2404

主题

7001

帖子

68

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