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