STC8H1K08T的ADC转换速度达不到800KHz
ADC配置如下下:ADCTIM = 0x2A; //设置ADC内部时序
ADCCFG = 0x20; //设置ADC时钟为系统时钟/2/1 右对齐
ADC_CONTR = 0x80; //使能ADC模块
转换时间检测是示波器测量P37引脚的电平变化如下图,时间为1.88us,远远达不到800KHz;
u16 Get_ADCResult(u8 channel) //channel = 0~15
{
u16 adc;
ADC_RES = 0;
ADC_RESL = 0;
P37=1;
ADC_CONTR = (ADC_CONTR & 0xf0) | ADC_START | channel;
_nop_();
_nop_();
while (!(ADC_CONTR & 0x20)); //查询ADC完成标志
P37=0;
ADC_CONTR &= ~0x20; //清完成标志
adc = ((u16)ADC_RES << 8) | ADC_RESL;
return adc;
}
系统时钟设置如下:
#define MAIN_Fosc 35000000L //定义主时钟
STC-ISP设置如下图,实际运行中串口1通讯ADC的转换值给电脑,观测接收到的数据计算结果和实际电压相符;
所以需要如何设置才能达到标称的800KHz转换速度?
有没有大佬指点一下{:handshake:} 用DMA试试
STC8H8K64U, 可以跑40MHz
STC8H1K08T, 可以跑33MHz
ADCTIM 用0x20试试 我是最终的运算数用去n个最大与n个最小求平均 然后将ADCTIM 和ADCCFG 调成最快或者用采样1次的dma zwxmlp 发表于 2024-2-10 17:56
我是最终的运算数用去n个最大与n个最小求平均 然后将ADCTIM 和ADCCFG 调成最快或者用采样1次的d ...
但是作单圈1k个的正余铉解码还是慢了因为要作4路dac 现在对于 单圈1k个的正余铉的用的正交解码方式或者adc转的正常一点不能拼命快转
页:
[1]