平头哥RVB2601板子上手——ADC采集与CSI

简介: 本文介绍了CH2601芯片的内部ADC与其驱动的测试,通过测试了解ADC驱动的工作过程。

本文作者:bigbat


依据有限的资料知道CH2601的内部是有ADC的。但是引脚通过“ARDUINO”接口引出来的。

1.jpg


CH2601的adc驱动是在YOC开发包中提供的既CSI接口,CSI 是针对嵌入式系统,定义了CPU内核移植 接口、外围设备操作接口统一软件接口规范,消除不同芯片的差异,简化软件的使用及提高软件的移植性。通过CSI 接口规范,可以快速实现芯片对接到YoC 平台。CSI有CSI1和CSI2两种,CSI2的功能较CSI1的代码密度要高,CSI2的抽象要好一些。


CH2601的ADC可提供“支持单次转换、连续转换”本次测试为单次采集测试。代码根据yoc的例程。


程序的主要步骤如下:

1、打开引脚的功能

csi_pin_set_mux(EXAMPLE_ADC_CHANNEL0_PIN,  EXAMPLE_ADC_CHANNEL0_PIN_FUNC);

2、ADC初始化

ret = csi_adc_init(&adc, 0);

3、设置ADC的工作采样频率

ret = csi_adc_freq_div(&adc, 128);

4、设置采样周期

ret = csi_adc_sampling_time(&adc, 2);

5、使能ADC通道

ret = csi_adc_channel_enable(&adc, 0, true);

6、开始采样

ret = csi_adc_start(&adc);

7、读取采样数据

data = csi_adc_read(&adc);

6,7的步骤可以反复的进行。完整的程序如下:

#include <drv/adc.h>
#include <drv/tick.h>
#include <board_config.h>
//#include <board_init.h>
#define ADC_CHECK_RETURN(ret)            \
do {                                     \
    if (ret != CSI_OK) {                 \
        return -1;                       \
    }                                    \
} while(0);
static csi_adc_t adc;
int main(void)
{
  int      ret;
    uint32_t data;
  board_yoc_init();
  csi_pin_set_mux(EXAMPLE_ADC_CHANNEL0_PIN,  EXAMPLE_ADC_CHANNEL0_PIN_FUNC);
  ret = csi_adc_init(&adc, 0);
    ADC_CHECK_RETURN(ret);
  ret = csi_adc_freq_div(&adc, 128);
    if(ret == 0){
        return -1;
    }
  /* Configure sampling time */
    ret = csi_adc_sampling_time(&adc, 2);
    ADC_CHECK_RETURN(ret);
    /* Enable channel */
    ret = csi_adc_channel_enable(&adc, 0, true);
    ADC_CHECK_RETURN(ret);
    /* Trigger new conversion */
    ret = csi_adc_start(&adc);
    ADC_CHECK_RETURN(ret);
    /* Read result */
    data = csi_adc_read(&adc);
    printf("get adc result: %d\n", data);
  /* Uninit adc */
    csi_adc_uninit(&adc);
    LOGD(TAG, "%s\n", aos_get_app_version());
    oled_init();
    while (1) {
        LOGD(TAG, "Hello world! YoC");
        aos_msleep(1000);
    }
    return 0;
}


csi_adc_uninit(&adc);这一步是可以选的。


本次测试结果:

2.jpg


可以看到12位的ADC的采集值。


本文源自:平头哥芯片开放社区

相关文章
|
网络协议 数据安全/隐私保护 芯片
|
存储 API 开发工具
【平头哥RVB2601创意应用开发】使用体验02 -- KV存储
使用KV组件在RVB2601进行项目参数的本地持久化。
575 0
【平头哥RVB2601创意应用开发】使用体验02 -- KV存储
|
网络协议 物联网 数据处理
【平头哥RVB2601开发板试用体验】AT 解析器和通过w800 AT命令接入阿里云生活物联网平台
RISC-V RVB2601 Yoc 实现和测试验证阿里云平台接入的等相关功能,同时去了解YoC中网络设备和AT解析器框架。
674 0
【平头哥RVB2601开发板试用体验】AT 解析器和通过w800 AT命令接入阿里云生活物联网平台
|
存储 JSON 数据格式
【平头哥RVB2601创意应用开发】疫情播报系统应用
实现通过网络读取json数据,进行分解,针对数据字符,播放相应的mp3音频文件,并在OLED屏幕上显示实际对应数据的疫情播报系统。
207 0
【平头哥RVB2601创意应用开发】疫情播报系统应用
|
芯片
【平头哥RVB2601开发板试用 】GPIO控制的流水灯
对于芯片来说,其实经常用到的就是IO口了,其实其所有功能的实现都是通过IO口的复用实现的,那么今天咱们就简单对IO口控制流水灯进行讲解分析
372 0
【平头哥RVB2601开发板试用 】GPIO控制的流水灯
|
存储 编解码 监控
【平头哥RVB2601开发板试用体验】基于 HTTPClient 的云语音识别 3
在本文中,我们将手动实现“multipart/form-data”类型内容的 POST 请求,并且最终完成整个云语音识别功能。
234 0
【平头哥RVB2601开发板试用体验】基于 HTTPClient 的云语音识别 3
|
存储 编解码 物联网
|
网络协议 物联网 数据处理
【平头哥RVB2601开发板试用体验】AT解析器和通过w800 AT命令接入阿里云生活物联网平台
RISC-V RVB2601 Yoc 实现和测试验证阿里云平台接入的等相关功能,同时去了解YoC中网络设备和AT解析器框架。
557 0
【平头哥RVB2601开发板试用体验】AT解析器和通过w800 AT命令接入阿里云生活物联网平台

热门文章

最新文章