STM8-S001J3M3ADC采样时间分析

基于芯片STM8S001J3M3转换时间说明

一、ADC采样转换时间

1、理论说明

存在固定总转换周期

根据STM8S0001J3数据手册:总转换周期固定为14个ADC周期

换算公式:
总转换周期:Tcov=14个ADC周期

总转换时间:tcov =14 / fADC (us);

ADC的分频系数:fADC = fcpu/x(MHZ)(x为分频系数);

Tcov =采样周期+ x个ADC周期(包括10个周期+额外开销)

在这里X个ADC时钟周期是由硬件固定的包括10个逐次逼近周期(10位分辨率) +额外开销;
针对STM8的固定总转换周期,需要特别关注相应的分频系数,去计算出采样时间是否合适;

数据手册说明:

参考手册说明:

可以看出我们是无法通过软件配置采样周期的寄存器,只能配置对应的分频系数;

2、软件配置

设置相应的的fcpu、fADC的分频系数

这里HSI高速内部时钟选用16MHZ,X分频系数可选2、3、4、6、8、10、12、18;计算对应的采样时间;

复制代码
main.C
//设置HSI的时钟
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);        //16MHZ

ADC.C
/*------------------------------------------------------------------------------
*   @name    	Bsp_ADC1Init
*   @brief		ADC1  初始化
*   @param[in]	void
*   @return		void
*   @attention	底层GPIO、ADC初始化
*               PD6->ADC_IN6/单次转换/4Mhz/GPIO触发/右对齐
------------------------------------------------------------------------------*/
void Bsp_ADC1Init(void)
{

  GPIO_Init(ADC1_POWER_PORT, ADC1_POWER_PIN, GPIO_MODE_IN_FL_NO_IT);

  ADC1_DeInit();                                //ADC1寄存器恢复缺省值
  ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_POWER_CHANNEL, ADC1_PRESSEL_FCPU_D4, \
            ADC1_EXTTRIG_GPIO, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL6,\
            DISABLE);

  ADC1_Cmd(ENABLE);
}

这里设置分频系数为4,则fADC = 4MHZ,算出总的转换时间

复制代码
fADC = 4MHz = 4,000,000 Hz
1/fADC = 0.25 μs

总转换时间 = 14 × 0.125 μs = 3.5 μs

3、

(根据我们选择16MHZ,数据手册中的此时无法获取到fADC =6MHZ的情况)
值得注意的是,此型号是根据分频系数、总的转换时间去估算出相应的采样时间

数据手册中, 提及到的采样时间ts也是作为典型值3个ADC周期作为代表,从而得到对应的分频条件下的采样时间

方便我们后续根据实际需要的采样时间进行选择:

|-------|-------------|--------------|------------|-----------------|
| 分频系数 | f_ADC (MHz) | ADC周期时间 (µs) | 总转换时间 (µs) | 典型采样时间 (µs) |
| 2 | 8.0 | 0.125 | 1.75 | 0.375 |
| 3 | 5.33 | 0.188 | 2.63 | 0.563 |
| 4 | 4.0(典型) | 0.250 | 3.5 | 0.75(3个ADC) |
| 6 | 2.67 | 0.375 | 5.25 | 1.125 |
| 8 | 2.0 | 0.500 | 7.0 | 1.5 |
| 10 | 1.6 | 0.625 | 8.75 | 1.875 |
| 12 | 1.33 | 0.750 | 10.5 | 2.25 |
| 18 | 0.89 | 1.125 | 15.75 | 3.375 |

二、STM32_F103C8T6采样时间

1、理论说明

参考手册说明:

转换时间(总转换时间):

Tconv =采样时间+12.5个ADC周期(转换周期)

tconv =Tconv/fADC

(当ADC的时钟频率达到最大14MHZ时,采样周期为1.5个 ADC周期,那么Tconv=1.5+12.5=14个个周期,也就是1us 转换时间)

在这里12.5个ADC时钟周期是由硬件固定的包括12个逐次逼近周期(12位分辨率)+0.5个周期的额外开销;

也就是说,我们可以软件对fADC的时钟、采样周期进行软件配置,而不是像STM8S001J3M3一样固定采样周期,只能通过修改fADC的时钟从而修改采样时间

2、两者对比

STM8 这种"固定采样周期 + 调 fADC"

主要基于:

  • 架构简单、硬件成本低
  • 软件配置简单(设置Prescaler)
  • 对电源、时钟噪声更"稳"(采样周期固定,不会因为周期选择不当导致噪声敏感性增加)
  • 输入源阻抗要求非常苛刻(源阻抗必须很低(几十欧到几百欧级)否则采样电容来不及充电 → 出现台阶跳变现象)
  • 不适合低频、高阻、高精度采样(电池采样、NTC、光敏、电化学传感器等高阻信号源 → 采样误差大、波形不稳定

STM32 这种"可调采样周期 + 调 fADC"

主要基于:

  • 极强的适应性(可依输入源阻抗、噪声、分辨率要求选择采样周期)
    • 低阻信号 → 3 cycles → 高速采样
    • 高阻信号 → 239 cycles → 充分充电 → 精准稳定
  • 更易解决"台阶现象、不稳定波形"(采样周期拉长)
  • 软件配置相对复杂(经验判断选择周期数,参数多)
  • 大量采样周期会降低采样速度(如果需要快速扫描多通道,会受限。)
相关推荐
BreezeJuvenile4 天前
ADC_案例练习:独立模式多通道采集
stm32·单片机·adc·多通道采集·dma辅助
ting_zh5 天前
定时器输出PWM信号同步控制传感器开关与 ADC 采样
stm32·tim·pwm·adc
BreezeJuvenile6 天前
ADC_案例练习:独立模式单通道转换
stm32·单片机·adc·hal·寄存器·单通道采集
m0_5557629015 天前
AD7768-4芯片采集数据如何转换成电压
adc
六个九十度15 天前
LTC2500内置滤波器的群延迟
adc·ltc2500·ssinc
helesheng21 天前
采样保持电路分析[原创www.cnblogs.com/helesheng]
adc·模拟电路·采样保持·lf398
智驾22 天前
【瑞萨RA x Zephyr评测】二、ADC模块测试
adc·瑞萨·zephyr·fpb-ra6e2
FPGA小迷弟1 个月前
基于FPGA开发高速ADC/DAC芯片笔记
图像处理·fpga开发·数据采集·fpga·adc
silno1 个月前
图解 STM32 USB CDC虚拟串口 的实现
stm32·单片机·stm32f103c8t6·cdc虚拟串口