可编程延迟模块PDB,PDB可提供从内部或外部触发或可编程间隔信号到ADC硬件触发输入的可控制延迟。 PDB可以选择提供脉冲输出,用作CMP块中的采样窗口。
S32K系列的PDB资源如下表:
在下图中,以下字母表示的意义:
N:PDB通道的总数n:PDB通道号,范围从0到N-1M:每个PDB通道的总可用预触发m:预触发编号,范围从0到M-1Y:脉冲输出的总数y:脉冲数,有效值为0到Y-1由以上功能框图所知,PDB的本质是一个延时模块,除了PDB_SC控制状态寄存器设置主要的模式外,其他就是对计数值的填写和比较。
首先从左到右看第一部分,通过通道控制寄存器PDB_CHnC1选择通道和相关模式之后,可以选择三种方式触发本身PDB的计数:
PDB_CHnDLYm和PDB counter比较触发计数TRIGSEL触发源(比如TRGMUX)触发计数开启Back to Back模式,当上一个PDB计数完毕后,由上一个PDB通道的Ackm触发计数第二部分用来设置PDB的计时时间,PDB本质是一个延时模块,故这是PDB的主要部分。通过PDB_SC[MULT]和PDB_SC[PRESCALER]来对输入时钟进一步预分频;PDB_MOD寄存器指定计数器的计数值上限;开始计数,PDB_CNT根据时间不断计数,当与设定的计数值PDB_MOD相同时,一个周期的计数完成,PDB_CNT重新开始计数。 通过PDB_SC[TRGSEL]设置触发源,PDB_SC[CONT]设置是否连续计数之后,可以控制计数器在计数一个周期后的重新计数或者暂停计数。
第三部分用来选择PDB的触发源,包括TRGMUX或者软件触发。在PDB_SC[TRGSEL]中设置。
第四部分为PDB的脉冲输出功能配置。PDB可以生成可配置宽度的脉冲输出:
当PDB计数值达到PDB_POnDLY[DLY1]设置的值时,脉冲输出高电平当PDB计数值达到PDB_POnDLY[DLY2]设置的值时,脉冲输出低电平脉冲输出功能在PDB_POEN[POEN]位中开启。将DLY2的值设置大于或小于DLY1的值产生的脉冲结果相反:
第五部分是PDB的中断配置,在PDB_SC[PDBIE]中打开中断。当使能中断之后,PDB的计数值达到PDB_IDLY中设置的值后,产生中断。
使用PDB0触发ADC0_SE8,开启Back to Back模式,ADC0_SE8转换完毕之后触发ADC0_SE0转换。