a760656130 发表于 2023-11-22 10:53:47

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转换速度?










a760656130 发表于 2023-11-22 11:22:52

有没有大佬指点一下{:handshake:}

gentleman 发表于 2023-11-22 11:43:07

用DMA试试

神农鼎 发表于 2023-11-22 16:08:07

STC8H8K64U, 可以跑40MHz


STC8H1K08T, 可以跑33MHz

zwxmlp 发表于 2024-2-10 17:54:16

ADCTIM   用0x20试试

zwxmlp 发表于 2024-2-10 17:56:39

我是最终的运算数用去n个最大与n个最小求平均    然后将ADCTIM 和ADCCFG   调成最快或者用采样1次的dma

zwxmlp 发表于 2024-2-10 17:58:52

zwxmlp 发表于 2024-2-10 17:56
我是最终的运算数用去n个最大与n个最小求平均    然后将ADCTIM 和ADCCFG   调成最快或者用采样1次的d ...

但是作单圈1k个的正余铉解码还是慢了因为要作4路dac

zwxmlp 发表于 2024-2-10 19:19:51

现在对于 单圈1k个的正余铉的用的正交解码方式或者adc转的正常一点不能拼命快转
页: [1]
查看完整版本: STC8H1K08T的ADC转换速度达不到800KHz