因为数字信号是由连续的模拟信号通过ADC转换器转化而来的。在STM32系统中,ADC转换器是个十分常用的模块,而且大多数情况下是由硬件触发来进行触发转换的。虽然硬件触发可以实现ADC转换自动进行,但是它是有一定限制的,例如不能平滑的改变ADC采样的频率、不能同时使用多个ADC通道等问题。这些问题都限制了ADC转换的应用场景,为了解决这些问题,引出了ADC软件触发。
软件触发的实现是基于定时器的,STM32的定时器有很多种,这里以TIM3为例来说明实现的方法。①首先需要设置定时器的工作模式为触发模式,并且设置触发源为软件触发;② 然后要设置好转换的触发源:在转换模式中,有选择触发源的选项,如果选择正在周期计数模式,那么就是要用定时器的外部输入来作为触发源。选择软件触发源则相反,在转换模式中,选择定时器的定时过程为转换提供触发信号,直接作为转换的触发源。简而言之,就是选择了定时器TIM3的对应通道,使用软件定时器来向对应通道发送触发信号。
相比硬件触发,软件触发是可以随时进行,随时变化的。其灵活性增加了ADC模块的适用范围。同时也可以使用不同的采样次数、采样时间等参数对采集到的数据进行定量处理,增加了ADC应用的多样性。
在一些特定的场合下,由于传感器的数据输出信息太快,而STM32单片机所能够处理的数据又相对较慢,所以需要足够快的数据采集速度。在这种情况下,硬件触发方式可能无法满足要求,而软件触发方式则完全可以进行数据采集。
软件触发适用于广泛的嵌入式系统领域,例如光电传感器、温度传感器、电压传感器、电流传感器等输入量采集领域。同时,在音频采集、动态信号采集等领域也有着广泛的应用。