S32K系列之PDB框图详解及PDB触发ADC
可编程延迟模块PDB,PDB可提供从内部或外部触发或可编程间隔信号到ADC硬件触发输入的可控制延迟。 PDB可以选择提供脉冲输出,用作CMP块中的采样窗口。
S32K系列的PDB资源如下表:
PDB功能框图
在下图中,以下字母表示的意义:
- N:PDB通道的总数
- n:PDB通道号,范围从0到N-1
- M:每个PDB通道的总可用预触发
- m:预触发编号,范围从0到M-1
- Y:脉冲输出的总数
- 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
中设置的值后,产生中断。
实例:PDB触发ADC
功能概述
- 平台:S32K144
使用PDB0触发ADC0_SE8
,开启Back to Back模式,ADC0_SE8
转换完毕之后触发ADC0_SE0
转换。
编程顺序
- 初始化PDB0的时钟
- 选择PDB0的时钟预分频器和触发方式
- 选择PDB0通道,是否开启Back to Back模式
- 通道0触发通道1,通道1开启Back to Back,通道0不用
- 填写PDB0的通道计数值,中断延时计数值或者脉冲输出计数值
- 使能PDB
- 更新计数值,使能软件触发(如果是硬件触发不需要)
- 每次一个流程之后,需要重新软件触发使能才开启下一次计数
代码
void PDB_Init(void)
{ PCC->PCCn[PCC_PDB0_INDEX] = PCC_PCCn_CGC_MASK; PDB0->SC = PDB_SC_MULT(1) | /* 分频器选择10 */ PDB_SC_TRGSEL(0xF) | /* 选择软件触发 */ PDB_SC_PRESCALER(7); /* 时钟128*10分频 */ PDB0->CH[0].C1 = PDB_C1_EN(3) | /* 开启PDB通道0和通道1 */ PDB_C1_TOS(3) | /* 双通道开启 ADC触发 */ PDB_C1_BB(2); /* 开启back to back功能,这里是通道0触发通道1,通道1开启back to back */ PDB0->MOD = 0xFFFF; /* 初始化PDB计数器 */ PDB0->IDLY = 0; /* 初始化中断延时 */ PDB0->MOD = 15000; /* 计数值 */ PDB0->CH[0].DLY[0] = 15000; PDB0->CH[0].DLY[1] = 15000; PDB0->SC |= PDB_SC_PDBEN_MASK; /* PDB使能 */ PDB0->SC |= PDB_SC_LDOK_MASK; /* 更新计数值 */ PDB0->SC |= PDB_SC_SWTRIG_MASK; /* 使能软件触发 */
}
S32K系列之PDB框图详解及PDB触发ADC相关推荐
- h2 不能访问localhost_SpringBoot2.x系列教程44--H2数据库详解及搭建Web控制台
SpringBoot2.x系列教程44--H2数据库详解及搭建Web控制台 作者:一一哥 我在上一章节中讲解了Spring Boot中整合Mybatis,接下来我给大家介绍一款内存数据库--H2. H ...
- 大型网站系统架构系列:负载均衡详解(一)
大型网站系统架构系列:负载均衡详解(一) 2016-03-20 架构说 面对大量用户访问.高并发请求,海量数据,可以使用高性能的服务器.大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比 ...
- 【百度飞浆】YOLO系列目标检测算法详解
YOLO系列目标检测算法详解 1 YOLO发展史 2 YOLO v3目标检测原理 3 PaddleDetection中YOLO v3模型介绍 4 YOLO v3配置演练 1 YOLO发展史 2 YOL ...
- 【百度飞浆】RCNN系列目标检测算法详解
RCNN系列目标检测算法详解 目录 两阶段目标检测算法发展历程 R-CNN R-CNN网络结构 R-CNN网络效果 Fast R-CNN Fast R-CNN网络效果 Faster R-CNN Fas ...
- Maven精选系列--三种仓库详解
转载自 Maven精选系列--三种仓库详解 仓库分类 1.本地仓库 本地仓库就是开发者本地已经下载下来的或者自己打包所有jar包的依赖仓库,本地仓库路径配置在maven对应的conf/settings ...
- kubernetes系列10—存储卷详解
kubernetes系列10-存储卷详解 1.认识存储卷 1.1 背景 默认情况下容器中的磁盘文件是非持久化的,容器中的磁盘的生命周期是短暂的,这就带来了一系列的问题:第一,当一个容器损坏之后,kub ...
- flutter listview 滚动到底部_Flutter系列之Flex布局详解
PS:长期坚持是一件很难的事. Flutter 是 Google 推出的跨平台 UI 框架,可以快速地在 Android 和 IOS 上构建高质量的应用程序,其主要特点是 Flutter 具有快速开发 ...
- RxJS 系列之二 - Observable 详解
查看新版教程,请访问前端修仙之路 RxJS 系列目录 RxJS 系列之一 - Functional Programming 简介 RxJS 系列之二 - Observable 详解 (本文) RxJS ...
- 大型网站架构系列:负载均衡详解(4)
原文:大型网站架构系列:负载均衡详解(4) 本文是负载均衡详解的第四篇,主要介绍了LVS的三种请求转发模式和八种负载均衡算法,以及Haproxy的特点和负载均衡算法.具体参考文章,详见最后的链接. 三 ...
最新文章
- 一般判五年几年能出来_判刑五年能减刑多少年
- 关于git经常忘记的:远程仓库关联。
- Windows程序设计之创建窗口示例
- Python3_实例汇总
- 谱聚类方法-MATLAB
- JDK 6中新增的Java Console类功能概览
- java中的生产者消费者模式详解
- Delphi 7 以来的语法等变化
- android studio建数据库表,在android studio中创建表
- PHP32向右位移2位是多少,PHP的二进制位移操作
- 【数据结构】线段树(interval tree)
- 帝豪gs车机系统wince_平顶山到河南,帝豪GS俱乐总部,帝豪GS两年用车感受
- Linux登陆密码策略
- Java周记(第一周)
- 自编码器(AE)原理解析
- java 发 腾讯企业邮_JAVA使用腾讯企业邮箱发送邮件时报错Could not connect to SMTP host...
- 矩阵论笔记(七)——矩阵的微分和积分
- Js控制页面刷新(局部刷新全页面刷新)
- 文本框固定任意一顶点后,拖动相对点任意旋转缩放,计算缩放后顶点坐标
- Dockerfile构建Springboot镜像
热门文章
- 这个网站收录了MSDN上基本所有的镜像文件的电驴链接
- 从零开始做量化(4)
- 【LOSOL】周志01:开题
- c#的问号(?)和双问号语法糖(??)的用法和在unity中使用需要注意的事项
- 计算机专业就业方向有哪些呢?如何进大厂实习拿offer
- ***BAT机器学习面试1000题系列
- 浅析C语言文件操作 fopen fclose
- 中文CLIP快速上手指南
- 用户头像上传之 jQuery+ajax+php+预处理
- java对于 进行字符串分隔_Java字符串分割函数split中以·点分割的问题