提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
PDB触发ADC记录01
1、PDB的触发源
有两个:一个是软件、一个TRGMUX
对于软件触发的,主要是通过SPLL的时钟输入的,比如48M的时钟。
定时器模块(FTM)支持计数器初始化触发和通道匹配触发,这些可以作为PDB的触发输入。然后PDB可以用来触发其他模块,比如ADC。PDB模块中的每个ADC通道支持多达8个预触发,这些可以作为ADC硬件通道选择,在实际触发前对ADC模块进行预处理。在预触发后,ADC触发会启动ADC转换。以下图表所示的波形展示了PDB到ADC的预触发和触发输出。当PDB的预触发和触发输出启动ADC转换时,与相应预触发相关联的内部锁定会被激活。当从ADC接收到COCO信号时,这个锁定会变得无效。
2、对于PDB的触发逻辑框图如下
3、PDB 触发的流程
41.7.1 PDB触发方案 PDB触发方案是ADC的默认触发方式,也是推荐的触发方法。一个ADC和一个PDB组成一对,即PDB0-ADC0、PDB1-ADC1。PDB0和PDB1的触发源可以通过TRGMUX_PDB0和TRGMUX_PDB1分别进行配置。这里以PDB0-ADC0为例来说明触发方案。 • 设置SIM_ADCOPT
ADCxTRGSEL
=0。选择PDB0通道0作为ADC的触发源。 • PDB0预触发信号将直接连接到ADC0的ADHWTS端口以控制通道。 • ADC0的COCO信号直接反馈给PDB0,以解除PDB的锁定状态。
4、对于BB、TOS的解释
- TOS:PDB Channel Pre-Trigger Output Select (CHnC1[TOS[m]]),把它置0则延时直接被忽视掉,trigger信号经过2个外设周期后直接触发pre-trigger.其实就是直接使用trigger的信号
- BB:back-to-back模式:用ADC转换完成信号(Ack)触发pre-trigger,此时延时也是直接被忽视掉的。也就是可以通过这个寄存器的设置使得ADC的不同通道进行轮询采样。
5、注意事项
5.1、datasheet中明确说明数据必须读取后才能够把COCO的set位复位。
5.2 delay的周期不但要小于ADC的转换周期,还应该小于FTM3的init周期,不然就会出现时序错误的问题。
因此在设置trigger delay时要注意ADC的转换周期,不可delay<ADC转换周期。
因为COCO可以将pre-trigger解锁,当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]])