ADC实例

根据nRF51822芯片手册可知,该芯片提供了8路10bit的ADC,但是同时只能使用一路。另外,要注意的是,目前版本的LinkNode,上面的nRF51822只引出了一个P0.01引脚作为模拟输入,用于测试电源1/4分压后的数值。具体见下图。

硬件清单

  1. LinkNode
  2. Micro USB 数据
  3. USB UART线

步骤

1. 编写程序

  • 打开mbed在线编译器,创建新程序,或在上一个实例的基础上进行修改
  • 编译并生成hex文件
  • PC接上LinkNode,将生成的hex文件复制到识别的系统磁盘中
  • 完成下载后,按一次板上的RESET键对程序进行复位

2. 连接

笔者使用的是PL2303 USB串口线,如下图所示:

其接口的定义是:

红色 VCC
黑色 GND
绿色 TXD
白色 RXD
  • 将USB UART线的RXD接口接LinkNode上的RX引脚
  • 将USB UART线TXD接口接TX引脚
  • 打开并设置串口软件(如Windows下的Putty,或在Linux下的minicom)
    • 波特率:9600
    • 数据位:8 bit
    • 停止位:1 bit
  • 通过串口终端可以看到如下的打印信息:

    AnalogIn example
    measure = 835 mV
    measure = 835 mV
    measure = 835 mV

3.3v经过1/4分压后就得到了825mV,接近测量的数值。

软件清单

#include "mbed.h"

AnalogIn analog_value(P0_1);
Serial pc(P0_23,P0_25); // TX Pin, RX Pin

int main() {
    float meas;

    pc.printf("\nAnalogIn example\n");

    while(1) {
        meas = analog_value.read(); // Converts and read the analog input value (value from 0.0 to 1.0)
        meas = meas * 3300; // Change the value to be in the 0 to 3300 range
        pc.printf("measure = %.0f mV\n", meas);
        wait(1); // 1s
    }
}