S32K144(13)PDB

1、简介

开发板S32K144+S32DS+JLINK,裸机版的程序编写

首先,PDB肯定是一个定时器,但是它这个定时器傍上了大腿,所以就显得它尤其的重要,因为PDB->ADC是官方默认和建议的搭配,PDB触发器与ADC和TRGMUX互连:

S32K144(13)PDB

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

1:更新MOD,IDLY,CHnDLYm和PoyDLY寄存器的值

1

CONT

连续模式使能

  1. 单次模式
  2. 连续模式

2-3

MULT

为分频器选择倍增因子,选择计数器的分频器的乘法器。

00乘系数是1。

01乘数是10。

10的乘数是20。

11的乘数是40

5

PDBIE

PDB中断使能

6

PDBIF

PDB中断标志

  1. 清除PDBIF
  2. 无作用

7

PDBEN

PDB启用

0 PDB禁用。计数器关闭。

1 PDB启用

8-11

TRGSEL

触发输入源选择选择,。触发输入源可以是内部的,也可以是外部的,或软件触发器

0000-1110:触发源0—14

1111:选择软件触发

12-14

PRESCALER

预定标器分频器选择

000计数使用外围时钟除以MULT(乘数)。

001计数使用外围时钟除以2 × MULT(乘法系数)。

010计数使用外围时钟除以4 × MULT(乘法系数)

011计数使用外围时钟除以8 × MULT(乘法系数)

100计数使用外围时钟除以16 × MULT(乘法系数)

101计数使用外围时钟除以32 × MULT(乘法系数)

110计数使用外围时钟除以64 × MULT(乘法系数)

111计数使用外围时钟除以128 × MULT(乘法系数)

15

DMAEN

DMA使能

16

SWTRIG

软件触发,启用PDB,选择软件触发器作为触发器输入源,向SWTRIG写入1,重置并重新启动计数器

17

PDBEIE

PDB序列错误中断使能

使能PDB序列错误中断。当PDBEIE设置时,PDB的任何通道序列错误标志产生一个PDB序列错误中断。

0 PDB序列错误中断禁用。

1 PDB序列错误中断使能

18-19

LDMOD

加载模式选择

3.2、 Modulus register (PDB_MOD)

计数器的重载值

3.3、Counter register (PDB_CNT)

0-15

CNT

PDB计数器

包含计数器的当前值

 

3.4、Interrupt Delay register (PDB_IDLY)

0-15

IDLY

指定调度PDB中断的延迟值

 3.5、Channel n Control register 1 (PDB_CHnC1)

1每个PDB通道有一个控制寄存器CHnC1。这个寄存器中的位控制,每个PDB通道操作的功能

 

EN

PDB通道的Pre-Trigger使能

8-15

TOS

PDB通道Pre-Trigger输出选择,这些位选择PDB ADC Pre-Trigger输出

16-23

BB

PDB通道Pre-Trigger Back-to-Back操作启用

3.6、Channel n Status register (PDB_CHnS)

 

ERR

PDB通道序列错误标志

16-23

CF

PDB通道标志

3.7、Channel n Delay 0-7 register (PDB_CHnDLY0-7)

0-15

DLY

PDB通道的延迟值

3.8、Pulse-Out n Enable register (PDB_POEN)

0-7

POEN

PDB Pulse-Out启用

使能脉冲输出。在这个MCU中只实现了较低的8位。

0 PDB脉冲输出禁用

1 PDB脉冲输出启用

3.9、Pulse-Out n Delay register (PDB_POnDLY)

0-15

DLY2

PDB脉冲输出延迟2

16-31

DLY1

PDB脉冲输出延迟1

4、代码编程

此处只是展示PDB定时器的功能,在后面ADC章节后,会在那使用PDB+ADC例程,也会使用LPIT+ADC

4.1、pdb.h

4.2、pdb.c

 

来源:Suifqwu

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月7日
下一篇 2021年1月7日

相关推荐