1、简介
开发板S32K144+S32DS+JLINK,裸机版的程序编写
首先,PDB肯定是一个定时器,但是它这个定时器傍上了大腿,所以就显得它尤其的重要,因为PDB->ADC是官方默认和建议的搭配,PDB触发器与ADC和TRGMUX互连:
PDB是可编程延迟模块,PDB可提供从内部或外部触发或可编程间隔信号到ADC硬件触发输入的可控制延迟。
PDB可以选择提供脉冲输出,用作CMP块中的采样窗口
PDB是由计数器+比较器+控制寄存器组成,对输入的triggger进行选择、延时等操作后输出trigger和中断。
因为PDB本质是一个延时模块,不可避免的对计数值进行比较,其中触发PDB计数的方式有三种:
- PDB_CHnDLYm和PDB counter比较触发计数
- TRIGSEL触发源(比较TRGMUX)触发计数
- 开启Back to Back模式,上一个PDB计数完成后,由上一个PDB通道的Ackm触发计数
PDB的触发源:内部触发、软件触发、外部触发
其中Back to Back模式是:使ADC转换完成后触发下一个PDB通道预触发和触发输出。
- PDB0 CH0 back-to-back chain
- PDB1 CH1 back-to-back chain
- PDB back-to-back chain forming PDB0-PDB1 ring
pre-trigger:主要用来触发ADC的不同通道进行采样,以PDBCHn pre-trigger0为例:当计数器计数到达定义的值后,经过(BB TOS EN),触发器产生上升沿:Pre-trigger 0。任何一个pre-trigger的触发都会伴随产生一个channel trigger的触发。
- TOS:PDB Channel Pre-Trigger Output Select (CHnC1[TOS[m]]),把它置0则延时直接被忽视掉,trigger信号经过2个外设周期后直接触发pre-trigger.
- BB:back-to-back模式:用ADC转换完成信号(Ack)触发pre-trigger,此时延时也是直接被忽视掉的。也就是可以通过这个寄存器的设置使得ADC的不同通道进行轮询采样
当pre-trigger被触发后,会激活相应的锁,只有与它相关联的 ADCnSC1[COCO]的上升沿可以解除pre-trigger的触发锁。ADC转换完成后ADCnSC1[COCO]会自动置1,读取相应的ADC转换结果后它会自动置0 。当然也可以通过disable PDB pre-trigger或者disable PDB 来解除pre-trigger的触发锁。每个pre-trigger都有各自的锁,每个通道的的任何一个pre-trigger锁都会激活channel trigger上锁。如果在锁未解除的情况下产生新的trigger,会触发PDB序列错误中断( PDB Channel Sequence Error Flag :CHnS[ERR[m]])。因此在设置trigger delay时要注意ADC的转换周期,不可delay<ADC转换周期。
2、原理图
无
3、寄存器
3.1、PDB_SC:Status and Control register
0 |
LDOK |