在已经搞定最基础的GPIO和串口后,就要开始学习更具体一些的功能了
关于NORDIC nRF24LE1的ADC的简介
其包含一个14通道的通用ADC(与封装相关),ADC内置1.2V的内置参考电压,也可以以外部才考电压或者VDD作为参考电压。可以在软件控制下单步工作,也可以设置采样速率进行连续采样装换。
特征
6,8,10,12位分辨率
多达14个输入通道
单端或差分输入
内部参考电压,外部参考电压,或VDD
单步模式转换时间小于3微秒
持续模式可设置为2,4,8或16Kbps采样速率
低电流消耗,2Kbps速率下仅0.1毫安
这次我使用的例程是来自NORDIC的SDK包中的例程,这个例程中使用的是NORDIC提供的简单的类似库的操作。
#include "nrf24le1.h"
#include "hal_adc.h"
void main()
{
// Set P1 as output
P1DIR = 0;
// Configure ADC
hal_adc_set_input_channel(HAL_ADC_INP_AIN0);
hal_adc_set_reference(HAL_ADC_REF_VDD);
hal_adc_set_input_mode(HAL_ADC_SINGLE);
hal_adc_set_conversion_mode(HAL_ADC_CONTINOUS);
hal_adc_set_sampling_rate(HAL_ADC_2KSPS);
hal_adc_set_resolution(HAL_ADC_RES_8BIT);
hal_adc_set_data_just(HAL_ADC_JUST_RIGHT);
// Enable MISC interrupts to enable ADC interrupt
MISC = 1;
// Enable global interrupts
EA = 1;
// Start ADC conversion
hal_adc_start();
for(;;){}
}
// ADC (MISC) interrupt
ADC_ISR()
{
// Write sample value to P0
P1 = hal_adc_read_LSB();
}
#include <stdint.h>
#include <stdbool.h>
#include "nrf24le1.h"
#include "nordic_common.h"
#include "hal_adc.h"
void hal_adc_set_input_channel(hal_adc_input_channel_t chsel)
{ // Update "chsel" bits
ADCCON1 = ((ADCCON1 & 0xC3) | (((uint8_t)(chsel) << 2) & ~0xC3));
}
void hal_adc_set_reference(hal_adc_reference_t refsel)
{