8个帖子/ 0新
最后一篇
CSQ
离线
最后一次露面:1年3个月前
加入:2018年8月5日08:56
SUOTA ADC采样速率没有数据表说的那么高

对于(中间体I = 0;我<100; i ++在){
adc_init(GP_ADC_SE,GP_ADC_SIGN,0);
adc_enable_channel(3);
adc_sample4 [I] = adc_get_sample();
adc_disable();

adc_init(GP_ADC_SE,GP_ADC_SIGN,0);
adc_enable_channel(0);
adc_sample1 [I] = adc_get_sample();
adc_disable();

adc_init(GP_ADC_SE,GP_ADC_SIGN,0);
adc_enable_channel(2);
adc_sample3 [I] = adc_get_sample();
adc_disable();

adc_init(GP_ADC_SE,GP_ADC_SIGN,0);
adc_enable_channel(1);
adc_sample2 [I] = adc_get_sample();
adc_disable();
}
我用ADC采样,然而在经过100个循环后,总共400次,时间已经经过了毫秒级
特征
•10位ADC的动态与65纳秒转换时间

关键词:
设备:
FvD_Dialog
离线
最后一次露面:3周3天前
职员
加入:2013年12月5日14:41
亲爱的CSQ,

亲爱的CSQ,

对不起,我回答英语。

我们正在寻找到你的代码,并会尝试去优化它。

亲切的问候

FvD_Dialog

CSQ
离线
最后一次露面:1年3个月前
加入:2018年8月5日08:56
那么,如何可以使用在ADC

那么,如何可以使用高速率的ADC?

cyibin.
离线
最后一次露面:4个月3天前
职员
加入:2017年12月14日02:48
你好,

你好,

这种计算方式不严谨。

你的代码里,采样时间应该只占了很少的一部分,代码损耗(对于循环,函数调用),ADC初始化等占用的时间,比采样时间高多了。

请问你项目需要实现什么功能?需要多快的采样速度?

CSQ
离线
最后一次露面:1年3个月前
加入:2018年8月5日08:56
利用ADC采集对高频调制信号的接收,大概1Mhz为

利用ADC采集对高频调制信号的接收,大概1MHz时,我主要在库里面没找到别的连续ADC采样的相关库函数,或者最快能采多少

cyibin.
离线
最后一次露面:4个月3天前
职员
加入:2017年12月14日02:48
嗨CSQ,

嗨CSQ,

理论可达3.3 M采样/秒。

ADC初始化(20US)并运行之后,转化时间是接近1微秒,处理转化的数据需要4us的,故理论最大采样速度是16/5 = 3.3Msamples / s的

实际上在把转化完成的数据存储到夯的过程中,还会有一些其它代码运行时间的损耗,故很难达到该理论值。

你是想ADC采样速率能达到1MHz的还是说想对1Mhz为的波形进行采样?

CSQ
离线
最后一次露面:1年3个月前
加入:2018年8月5日08:56
对1Mhz为的波形进行采样

对1Mhz为的波形进行采样,底层的函数
adc_get_sample {

INT CNT = ADC_TIMEOUT;
SetBits16(GP_ADC_CTRL_REG,GP_ADC_START,1);
而(cnt-- &&(GetWord16(GP_ADC_CTRL_REG)&GP_ADC_START)= 0×0000!);
SetWord16(GP_ADC_CLEAR_INT_REG,0×0000);//清除中断
返回GetWord16(GP_ADC_RESULT_REG);
}
这个貌似没有连续读取模式

cyibin.
离线
最后一次露面:4个月3天前
职员
加入:2017年12月14日02:48
你好,

你好,

3.3Mhz是理论能达到的采样速率,实际上,由于冲头的限制,芯片主频的限制(16MHz的),还有额外的,处理代码的开销,可能并不适用“对1Mhz为的波形进行采样“这种应用场景