平头哥RVB2601板子-ADC采集与CSI
<p>依据有限的资料知道CH2601的内部是有ADC的。但是引脚通过“ARDUINO”接口引出来的。</p><p> CH2601的adc驱动是在YOC开发包中提供的既CSI接口,CSI 是针对嵌入式系统,定义了CPU内核移植 接口、外围设备操作接口统一软件接口规范,消除不同芯片的差异,简化软件的使用及提高软件的移植性。通过CSI 接口规范,可以快速实现芯片对接到YoC 平台。CSI有CSI1和CSI2两种,CSI2的功能较CSI1的代码密度要高,CSI2的抽象要好一些。</p>
<p>CH2601的ADC可提供“支持单次转换、连续转换”本次测试为单次采集测试。代码根据yoc的例程。</p>
<p>程序的主要步骤如下:</p>
<p>1、打开引脚的功能 csi_pin_set_mux(EXAMPLE_ADC_CHANNEL0_PIN, EXAMPLE_ADC_CHANNEL0_PIN_FUNC);</p>
<p>2、ADC初始化,ret = csi_adc_init(&adc, 0);</p>
<p>3、设置ADC的工作采样频率ret = csi_adc_freq_div(&adc, 128);</p>
<p>4、设置采样周期,ret = csi_adc_sampling_time(&adc, 2);</p>
<p>5、使能ADC通道, ret = csi_adc_channel_enable(&adc, 0, true);</p>
<p>6、开始采样, ret = csi_adc_start(&adc);</p>
<p>7、读取采样数据,data = csi_adc_read(&adc);</p>
<p>6,7的步骤可以反复的进行。完整的程序如下:</p>
<pre>
<code class="language-cpp">#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;
}
</code></pre>
<p> csi_adc_uninit(&adc);这一步是可以选的,本次测试结果:</p>
<p> </p>
<p>我以为CSI摄像头接口呢!</p>
<p>csi是个什么缩写?</p>
freebsder 发表于 2021-9-8 00:11
csi是个什么缩写?
<p>只需要根据芯片驱动接口层(CSI)的定义,CHIP SERVIC INTFACE</p>
<p> 惊喜的发现我代理的ES7210+ES8156。哈哈!</p>
bigbat 发表于 2021-9-8 12:44
只需要根据芯片驱动接口层(CSI)的定义,CHIP SERVIC INTFACE
<p>卧槽,瞎弄这种大多数人认可的缩写,让人费解。</p>
页:
[1]