NORDIC nRF24LE1 学习笔记 Day04 ADC

这篇博客介绍了NORDIC nRF24LE1芯片的ADC特性,包括14个通道、多种分辨率和采样速率,并提供了ADC相关寄存器的说明。博主分享了如何利用SDK例程操作ADC,并简述了几种常见的ADC类型及其工作原理。
摘要由CSDN通过智能技术生成

在已经搞定最基础的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)
{ 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值