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 → 充分充电 → 精准稳定
  • 更易解决"台阶现象、不稳定波形"(采样周期拉长)
  • 软件配置相对复杂(经验判断选择周期数,参数多)
  • 大量采样周期会降低采样速度(如果需要快速扫描多通道,会受限。)
相关推荐
silno3 天前
图解 STM32 USB CDC虚拟串口 的实现
stm32·单片机·stm32f103c8t6·cdc虚拟串口
皓月盈江3 天前
STC12、STC15、STM32系列单片机控制16*64LED点阵屏显示,修改显示内容
单片机·嵌入式硬件·keil·stm32f103c8t6·stc12c5a60s2·stc15w4k32s4·led点阵屏程序源码
云雾J视界15 天前
模拟与数字的融合:为什么AI推理芯片离不开高性能模拟前端设计?
低功耗·cmos·adc·ai芯片·模拟前端·数字前端
怀民民民15 天前
关于ADC
单片机·嵌入式硬件·fpga开发·adc·学习总结·模数转化
brave and determined1 个月前
MCU学习Day24——STM32G030多路ADC DMA采集深度解析:完全可配置序列器与不完全可配置序列器的陷阱与抉择
stm32·单片机·嵌入式硬件·dma·adc·hal·多通道采集
sheepwjl1 个月前
《嵌入式硬件(十八):基于IMX6ULL的ADC操作》
单片机·嵌入式硬件·imx6ull·adc
时光の尘1 个月前
STM32外设面试速通:UART、I2C、SPI、DMA、RAM/FLASH与ADC/DAC
stm32·dma·iic·adc·flash·spi·ram
一枝小雨2 个月前
FreeRTOS下STM32双缓冲ADC数据采集与处理
stm32·单片机·dma·嵌入式·arm·freertos·adc
涂山苏苏⁠3 个月前
STM32之ADC
stm32·单片机·adc